Skip to main content Skip to navigation

CS940-15 Advanced Algorithms and Programming

Department
Computer Science
Level
Taught Postgraduate Level
Module leader
Long Tran-Thanh
Credit value
15
Module duration
10 weeks
Assessment
100% coursework
Study location
University of Warwick main campus, Coventry

Introductory description

The aim of the module is to make students more competent programmers and to expose students to different fundamental data structures and algorithmic techniques, to illustrate how choices of data structures and algorithms can impact performance and memory requirements.

Module aims

At the heart of Computer Science are algorithms which formulate step-by-step procedures that tell computers how to solve problems and perform tasks. The principal module aim is to teach approaches to algorithmic thinking that enable students to tackle complex real-world problems in a structured way and employ appropriate data structures. The module will emphasise the importance of a critical assessment of the advantages and disadvantages of different algorithms, which students will explore through implementing algorithms in the Python programming language. Learning Python constitutes the second principal aim of the module.

Outline syllabus

This is an indicative module outline only to give an indication of the sort of topics that may be covered. Actual sessions held may differ.

Foundations of Python programming language

Performance and asymptotic runtime/complexity

Data structures such as stacks and queues, trees, hash maps

Algorithmic techniques such as recursion, divide and conquer and dynamic programming

Parallelisation

Learning outcomes

By the end of the module, students should be able to:

  • Systematic understanding of algorithms, and a critical awareness of time complexities.
  • Comprehensive understanding of typical algorithmic techniques and data structures.
  • Conceptual understanding enabling critical assessments of advantages and disadvantages of algorithmic solutions for new problems.
  • Knowledge of Python programming at a high standard

Indicative reading list

Reading lists can be found in Talis

Research element

Coursework will contain a research element.

Subject specific skills

Ability to program in Python

Ability to apply suitable computing algorithms and data structures to a variety of real-world applications

Ability to design and analyse efficient computing algorithms

Ability to design software solutions for complex problems

Transferable skills

Being able to apply knowledge about developing computer programs and understanding of specialist theoretical and methodological approaches, suggesting and incorporating interrelationships with other relevant disciplines in abstract and unpredictably complex contexts.

Students will obtain the cognitive skills to critically contribute to existing discourses and methodologies in the development of algorithms and computer code, suggesting new ideas, and designing systematic investigations based on critical analysis and evaluation.

Students will obtain practical skills in organising and communicating information, improving Interpersonal, team
and networking skills through engaging in classes and computer laboratories. Formative assesssment will allow students to strategically enhance their own learning.

Developing computer programs for processing data is an area with immediate relevance for increasing ethical awareness and its practical application. For example, privacy considerations should be built into code from the ground up, not added as an afterthought. The associated values will help understanding the importance of personal responsibility and ethical leadership.

Study time

Type Required
Lectures 30 sessions of 1 hour (20%)
Supervised practical classes 9 sessions of 1 hour (6%)
Private study 51 hours (34%)
Assessment 60 hours (40%)
Total 150 hours

Private study description

Private study, background reading and revision.

Costs

No further costs have been identified for this module.

You do not need to pass all assessment components to pass the module.

Assessment group A
Weighting Study time Eligible for self-certification
Assessment component
Advanced Algorithms and Programming Coursework 1 50% 30 hours No

Programming based coursework testing competency in Python programming and use of data structures.

Reassessment component is the same
Assessment component
Advanced Algorithms and Programming Coursework 2 50% 30 hours No

Programming based coursework testing competency in the use of advanced algorithms.

Reassessment component is the same
Feedback on assessment

For problem sets 1 and 2 individual feedback will be provided.

Courses

This module is Core for:

  • Year 1 of TCSA-G5PD Postgraduate Taught Computer Science