Module Information

Module Identifier
CS21120
Module Title
Algorithm Design and Data Structures
Academic Year
2020/2021
Co-ordinator
Semester
Semester 1
Mutually Exclusive
Pre-Requisite
Other Staff

Course Delivery

 

Assessment

Due to Covid-19 students should refer to the module Blackboard pages for assessment details

Assessment Type Assessment length / details Proportion
Semester Assessment 50 Hours   ​​Programming Assignment  50%
Semester Assessment 5 Hours   Online Assessment​​  50%
Supplementary Exam 2 Hours   ​Resit Exam / Alternative Assessment  50%
Supplementary Assessment 50 Hours   ​Resit Programming Assignment  50%

Learning Outcomes

On successful completion of this module students should be able to:

1. demonstrate their understanding of the principles of abstraction and encapsulation as they apply to the design of abstract data types and programs;
2. analyse and evaluate the time and space behaviour of algorithms and understand how this is expressed and determined;
3. recognise the importance of this analysis in the design of software;
4. describe some of the main approaches to algorithm design such as greedy algorithms, divide and conquer and dynamic programming;
5. demonstrate judgement in evaluating and choosing appropriate data structures and algorithms for a range of programming problems;
6. design and implement significant programs in Java.

Brief description

This module builds on the foundations of the first year modules on program design and provides a thorough grounding in the design of data structures and algorithms and gives further insight into object-oriented design.

Content

1. Basic abstract data types: Introduction to abstract data types; Basic data structures; Stacks, Queues, Priority Queues and their implementations.
2. Storing and Retrieving Data by Key: The Map abstract data type and related abstract data types; Implementations using basic data structures; Hashing; Binary search trees; Balanced binary search trees.
3. Design paradigms for algorithms: Introduction to algorithm design; Brute force; Recursion; Greedy algorithms; Divide & Conquer; Dynamic programming
4. Representing complex relationships with graphs: Terminology; Implementation; Representation; Graph traversal; Problem modelling and solving using graphs, e. g., planning a communications network (minimum spanning trees), finding a route (shortest paths); graph libraries.

Module Skills

Skills Type Skills details
Application of Number Particularly in algorithm analysis.
Communication Written skills will be needed to complete supporting documents to accompany assessed coursework.
Improving own Learning and Performance Students are required to engage in self study. Completing the assignment requires improvements in programming skills. Both the assignment and the exam requires understanding challenging concepts.
Information Technology The whole module concerns this area.
Personal Development and Career planning Carefully time management will be needed as so to enable students to complete coursework etc. A frequent topic of interview questions for programmers.
Problem solving This is inherent in both the formative practical work and the assessed coursework.
Research skills The students wil need to search for and use relevant technical information while completing practical and assessed coursework.
Subject Specific Skills See module title and content.
Team work N/A

Notes

This module is at CQFW Level 5