|Assessment Type||Assessment length / details||Proportion|
|Semester Assessment||Programming Assignment||40%|
|Practical Assessment||Worksheets in practicals||10%|
|Semester Exam||2 Hours Written Exam||50%|
|Supplementary Exam||2 Hours Resit Exam Students must resit failed examinations.||50%|
|Supplementary Assessment||Resubmission of failed component assignments Resit of failed components - 50 hours||50%|
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.
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.
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.
|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.|
This module is at CQFW Level 5