CM2201: Object Oriented Applications
School | Cardiff School of Computer Science and Informatics |
Department Code | COMSC |
Module Code | CM2201 |
External Subject Code | 100960 |
Number of Credits | 10 |
Level | L5 |
Language of Delivery | English |
Module Leader | Dr Andrew Jones |
Semester | Autumn Semester |
Academic Year | 2017/8 |
Outline Description of Module
Aims to teach the principles of good Object-Oriented Programming (OOP) practice. Provides an introduction to ways in which computing concepts can be realized in an object-oriented fashion, and to the development and application of re-usable code and designs. Explores how multi-threaded object-oriented programs and user interfaces can safely be implemented.
On completion of the module a student should be able to
- Explain and justify key OO principles.
- Appreciate the main features that are needed in a programming language in order to support the development of reliable, portable software.
- Apply principles of good OO software design to the creation of robust, elegant, maintainable code.
- Explain and utilise a range of design patterns.
- Demonstrate understanding of object-oriented abstractions for concurrency and user interaction.
- Appreciate key abstractions and issues relating to software architectures for multi-threaded user interface implementation
How the module will be delivered
The module will be delivered through a combination of lectures, supervised lab sessions, example classes and tutorials as appropriate.
Skills that will be practised and developed
A. Design and implement fully OO Java programs.
B. Model systems using UML class diagrams.
C. Create and extend re-usable, maintainable code, applying appropriate “rules of thumb”.
D. Evaluate and make effective use of classes (such as data structures) from pre-existing libraries.
E. Develop and apply design patterns.
F. Use the facilities provided by Java to create threaded and interactive programs.
How the module will be assessed
Coursework: The coursework will allow the student to demonstrate their knowledge and practical skills and to apply the principles taught in lectures.
Exam: A written exam (2 h) will test the student's knowledge and understanding as elaborated under the learning outcomes.
Assessment Breakdown
Type | % | Title | Duration(hrs) |
---|---|---|---|
Written Assessment | 30 | Programming And Modelling Assignment | N/A |
Exam - Autumn Semester | 70 | Object Oriented Applications | 2 |
Syllabus content
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.
OO modelling and communication of design using UML diagrams.
Refactoring.
Design Patterns.
Object-oriented concurrent programming (tasks/executors, synchronization)
Single-threaded sub-systems, the model-view-controller pattern for graphical user interfaces (including SWING), and safe multi-threading of interactive applications.
Java is the primary programming language which will be used in concrete examples of the above topics.
Essential Reading and Resource List
Please see Background Reading List for an indicative list.
Background Reading and Resource List
M Fowler, UML Distilled, 3rd ed., Addison-Wesley, 2004.
Core Java Volumes 1 & 2 Horstman and Cornell, Addison Wesley
D Skrien, Object-Oriented Design using Java, McGraw-Hill, 2009.
Brian Goetz, Java Concurrency in Practice, Addison Wesley, 2006.
Online design patterns repository: http://www.oodesign.com/
Bruce Eckel, Thinking in Java, 3rd edition – downloadable from http://www.mindview.net/Books/TIJ/
Bruce Eckel, Thinking in Patterns – downloadable from http://mindview.net/Books/TIPatterns/