Algorithm Design and Data Structures

Module Identifier
CS21120
Module Title
Algorithm Design and Data Structures
Academic Year
2027/2028
Semester
Semester 1
Co-ordinator
Dr Christine Zarges
Reading List
View on Aspire
Pre-Requisite
CC12320 or CS12320
Exclusive (Any Acad Year)
CC21120
Other Staff
Dr Neil Mac Parthalain
Dr James Finnis
Dr Christine Zarges
Professor Bernard Tiddeman

Assessment

Assessment Type

Assessment details

Proportion

Semester Assessment ​​Programming Assignment: 50 Hours 50%
Semester Exam Blackboard Quiz: 2 Hours (Invigilated) 50%
Supplementary Assessment Programming Assignment: 50 Hours 50%
Supplementary Exam Blackboard Quiz: 2 Hours (Invigilated) 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 and apply 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).

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.

Notes

This module is at CQFW Level 5