CS940-15 Advanced Algorithms and Programming
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