CM2307: Object Orientation, Algorithms and Data Structures
School | Cardiff School of Computer Science and Informatics |
Department Code | COMSC |
Module Code | CM2307 |
External Subject Code | 100960 |
Number of Credits | 20 |
Level | L5 |
Language of Delivery | English |
Module Leader | Ms Ramalakshmi Vaidhiyanathan |
Semester | Autumn Semester |
Academic Year | 2025/6 |
Outline Description of Module
This module aims to teach the principles of good Object Oriented Analysis and Design practices (OOAD) practices using design patterns, and techniques for the design and analysis of algorithms using efficient data structures. It focusses on ways in which computing concepts can be realised in an object-oriented fashion, and on the development and application of re-usable code and designs. It introduces the idea of classifying data according to its abstract behaviour, as distinct from its representation. It provides an understanding of the basic skills needed in the design of algorithms, emphasising the interactions between algorithms and data structures in creating efficient code. It introduces the concept of concurrency and multi-threading in object oriented programs.
On completion of the module a student should be able to
-
Appreciate the main features that are needed in a programming language in order to support the development of reliable, portable software and how key Object Oriented (OO) principles relate to those features.
-
Apply principles of good OO software design to the creation of robust, elegant, maintainable code.
-
Understand the design of various fundamental data structures and know their advantages and disadvantages.
-
Explain the difference between various fundamental algorithmic techniques and employ these for simple algorithm design.
-
Understand and analyse the resource requirements of various algorithms and data structures.
-
Identify the most appropriate data structure and algorithm to solve a particular problem.
-
Explain and apply a range of design patterns.
-
Demonstrate understanding of object-oriented abstractions for concurrency.
How the module will be delivered
Module will be delivered through a series of in-person and pre-recorded lectures, supervised lab sessions and tutorials as appropriate. The students will be expected to attend all the timetabled sessions and engage with the online materials.
Skills that will be practised and developed
A. Design and develop fully OO Java programs.
B. Model systems using effective OO principles.
C. Create and extend re- usable, maintainable code, applying appropriate “rules of thumb”.
D. Evaluate and make effective use of classes from pre-existing libraries.
E. Identify and apply appropriate design patterns.
F.Identify and design data structures and use appropriate algorithms for problem solving.
G. Analyse the performance of algorithms and data structures.
How the module will be assessed
Coursework: The coursework will allow the students to demonstrate their knowledge and practical skills and to apply the principles taught in lectures.
Students will be provided with reassessment opportunities in line with University regulations.
Assessment Breakdown
Type | % | Title | Duration(hrs) |
---|---|---|---|
Written Assessment | 60 | Implementation Using Ooad And Dsa | N/A |
Class Test | 40 | Online Test | N/A |
Syllabus content
Object-oriented modelling and programming:
-
The influence of basic OO principles, including abstraction, encapsulation, inheritance and re-use, on design and implementation of OO programs
-
“Rules of thumb” for good OO program design, including interface versus implementation, and cohesion & coupling
-
Reuse and Refactoring of code
-
Object Oriented Design Patterns - GoF patterns
-
Basics of Object Oriented concurrent programming
Data structures and basic algorithms:
-
Analysis of data structures and algorithms, complexity
-
Influence of data layout, algorithms and hardware on performance.
-
Review of data structures (lists, stacks , queues, maps, sets)
-
Trees and graphs
Algorithms and algorithmic techniques:
-
Sorting and searching
-
Graph algorithms