|Assessment Type||Assessment length / details||Proportion|
|Semester Assessment||50 Hours Programming Assignment||50%|
|Semester Exam||2 Hours Blackboard Quiz (Invigilated)||50%|
|Supplementary Assessment||50 Hours Programming Assignment||50%|
|Supplementary Exam||2 Hours Blackboard Quiz (Invigilated)||50%|
On successful completion of this module students should be able to:
Demonstrate their understanding of the principles of abstraction and encapsulation as they apply to the design of abstract data types and programs.
Analyse and evaluate the time and space behaviour of algorithms and understand how this is expressed and determined.
Recognise the importance of this analysis in the design of software.
Describe and apply some of the main approaches to algorithm design such as greedy algorithms, divide and conquer and dynamic programming.
Demonstrate judgement in evaluating and choosing appropriate data structures and algorithms for a range of programming problems.
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