WM180-15 Algorithms and Data Structures
Introductory description
Algorithms are the fundamental building blocks of computer science – but how can we prove that an algorithm does what we want it to? How can we improve the efficiency of existing algorithms? This module will provide students with a comprehensive understanding of the fundamental principles and techniques in algorithm design and optimisation. Students will explore a wide range of topics, including sorting, searching and pathfinding algorithms, while evaluating their correctness and efficiency.
Module aims
This module enables students to analyse the fundamental principles underlying computer algorithms and the data structures which underlie them. Students will have a solid grasp of core algorithms, and will be able to design new algorithms (and modify existing ones) to solve unseen computational problems.
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.
Basic algorithms:
- Sorting algorithms: Bubble sort, insertion sort, selection sort, quicksort, mergesort and heapsort
- Searching algorithms: Linear search, binary search, hash table lookup
Complexity analysis:
- Big-O, big-Omega and big-Theta notation
- Time complexity analysis
- Space complexity analysis
Strategies for algorithm design:
- Recursive programming
- Divide and conquer
- Dynamic programming and memoisation
- Heuristics
- Any other useful paradigms
Data structures:
- Primitive data structures: Arrays, stacks and queues
- Compound data structures: Hash tables, linked lists, binary search trees, heaps and priority queues
- Advanced data structures: Red-black trees, 2-3-4 trees, binomial trees and binomial heaps
Graph algorithms:
- Graph representations
- Minimum spanning trees, Kruskall's and Prim's algorithms
- Dijsktra's and A* algorithms
- The max-flow min-cut theorem
Learning outcomes
By the end of the module, students should be able to:
- Understand the importance of various algorithms and data structures in cyber security
- Evaluate the correctness and efficiency of algorithms in different programming contexts
- Identify and fix bugs in existing algorithms
- Design new algorithms or modify existing ones to solve unseen problems
Indicative reading list
Talis Link: https://rl.talis.com/3/warwick/lists/E30C33F6-CFDD-86E5-852C-03F5A564BFF8.html
Cormen, T. H, Leiserson, C. E., Rivest, R. L and Stein, C., 2022. Introduction to Algorithms, 4th Edition. MIT Press.
Interview Cake. https://www.interviewcake.com
HackerRank. https://www.hackerrank.com/
View reading list on Talis Aspire
Subject specific skills
This module improves students' programming skills, giving them an understanding of the underlying algorithms and data structures. Students will also be able to reason about the efficiency of existing algorithms, recognising bugs in existing code as well as opportunities to improve the efficiency of algorithms.
Transferable skills
Logical reasoning, problem solving and effective communication of ideas (both written and verbal)
Study time
Type | Required |
---|---|
Lectures | 18 sessions of 1 hour (12%) |
Supervised practical classes | 18 sessions of 1 hour (12%) |
Private study | 54 hours (38%) |
Assessment | 54 hours (38%) |
Total | 144 hours |
Private study description
Implementing the algorithms taught in lectures, understanding the data structures at an in-depth level and practicing programming interview questions
Costs
No further costs have been identified for this module.
You must pass all assessment components to pass the module.
Assessment group D
Weighting | Study time | Eligible for self-certification | |
---|---|---|---|
Assessment component |
|||
Portfolio Report | 30% | 18 hours | Yes (extension) |
A portfolio report based around in-class work on scenarios and problem-sets which tests the student's ability to analyse and evaluate solutions. The conceptual questions will also assess their understanding of algorithm and data structure efficiency and optimisation. |
|||
Reassessment component is the same |
|||
Assessment component |
|||
End-of-module exam | 70% | 36 hours | No |
An open-book exam assessing students' understanding of the algorithms and data structures taught in the module. ~Platforms - WAS
|
|||
Reassessment component is the same |
Feedback on assessment
For the exam, a per-question breakdown of students' marks, together with any marker comments, may be given.
For portfolio, written feedback would be provided to the students.
Courses
This module is Core for:
- Year 1 of UWMA-H651 Undergraduate Cyber Security