Module overview
Algorithms and Analytics provides an introduction to core data structures and algorithms as well as the analytical tools to understand their performance. It covers the usage of algorithms for problem solving, their implementations in different programming languages and a theoretical understanding of their time and space complexity including NP-completeness. The algorithms covered include lists, sets, map, searching, sorting, graph algorithms, optimisation and random number generation, which are prevalent throughout software used in AI and Computer Engineering.
Aims and Objectives
Learning Outcomes
Knowledge and Understanding
Having successfully completed this module, you will be able to demonstrate knowledge and understanding of:
- Show an understanding of time complexity
- Understand how to implement algorithms and data structures in code
- Demonstrate knowledge of common data structures and algorithms
Subject Specific Intellectual and Research Skills
Having successfully completed this module you will be able to:
- Discuss the real-world impact of asymptotic complexity
- Understand how to evaluate an algorithm for efficiency
- Understand the operation of a number of important computer algorithms using particular structures
- Choose the most appropriate data structures and algorithmic strategies for a particular problem
Subject Specific Practical Skills
Having successfully completed this module you will be able to:
- Empirically evaluate the performance of algorithms for a given data-set
- Be able to implement simple data structures in code
- Load real-world data into data structures and apply analysis and transformations
- Be able to use data structures to build complex algorithms
Syllabus
Algorithmic Complexity:
- Big-O
- Space vs time
- Asymptotic vs real-world behaviour
- NP completeness and approximations/good-enough solutions
Basic data structures, such as:
- Vectors/lists/queues
- Multi-dimensional arrays and matrices/tensors
- Trees
- Hash-tables & maps
- Sets
Basic algorithms, including:
- Searching
- Sorting
- Dynamic programming
Graphs:
- Representation (vertices and edges, (sparse) matrix representations, etc)
- Breadth vs depth search
- Shortest paths, minimum spanning trees, etc with algorithms including Dijkstra, Prim’s, Kruskal,...
Random number generation:
- Uniform variate generation
- Security: cryptographic/strong versus weak
- Simple reparameterisations
- Inverse transform mapping
- Rejection methods
Learning and Teaching
Teaching and learning methods
The module consists of:
- Lectures
- Guided self-study
- Labs as part of the AICE Lab Programme which will cover practical aspects
Type | Hours |
---|---|
Specialist Laboratory | 10 |
Independent Study | 48 |
Lecture | 32 |
Completion of assessment task | 60 |
Total study time | 150 |
Assessment
Summative
This is how we’ll formally assess what you have learned in this module.
Method | Percentage contribution |
---|---|
Coursework | 30% |
Lab work | 10% |
Exam | 60% |
Referral
This is how we’ll assess you if you don’t meet the criteria to pass this module.
Method | Percentage contribution |
---|---|
Coursework | 20% |
Exam | 70% |
Lab Marks carried forward | 10% |
Repeat
An internal repeat is where you take all of your modules again, including any you passed. An external repeat is where you only re-take the modules you failed.
Method | Percentage contribution |
---|---|
Lab Marks carried forward | 10% |
Exam | 70% |
Computing assignment | 20% |
Repeat Information
Repeat type: Internal & External