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.
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.
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
By the end of the module, students should be able to:
Reading lists can be found in Talis
Coursework will contain a research element.
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
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.
| 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, background reading and revision.
No further costs have been identified for this module.
You do not need to pass all assessment components to pass the module.
| 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 |
|||
For problem sets 1 and 2 individual feedback will be provided.
This module is Core for: