Academic Handbook Postgraduate Programmes
Object-Oriented Design Course Descriptor
Last modified on January 26th, 2023 at 7:35 pm
Course Title | Object-Oriented Design | Faculty | Philosophy |
Course code | NCHCS774 | Course Leader | TBD |
Credit points | 15 | Teaching Period | TBD |
FHEQ level | Level 7 | Date approved | January 2021 |
Compulsory/ Optional | Compulsory | ||
Pre-requisites | None | ||
Co-requisites | None |
Course Summary
This course offers students an opportunity to deepen their understanding of the concepts and practice of program design: learn how to design and codify software components using object-oriented design principles and, more generally, best programming practices. The course equips students with practical program design skills via case studies in modern software libraries and hands-on coding sessions in Java and/or Python.
In this course, students will learn how to represent data and methods that manipulate that data using classes (or objects); and how to use object-oriented design patterns to design and implement more complex compositions.
This course is suitable for graduate students of disciplines other than computing who are keen to acquire new (or deepen existing) knowledge of programming.
Course Aims
The aims of this course are to:
- Become a good programmer: design, debug and test your software solutions.
- Consistently write good programs: correct, clear, well-structured, and well-documented.
Learning Outcomes
On successful completion of the course, students will be able to:
Knowledge and Understanding
K1d | Systematically understand the domain of object-oriented program design. |
K2d | Develop a critical awareness of essential object-oriented design patterns and best practices to design and implement small to moderately sized programs. |
K3d | Understand the impact of program design decisions on the technical, social and management dimensions of software. |
Subject Specific Skills
S1d | Create and revise suitable program designs for a given software problem specification. |
S2d | Implement a given software design with understandable, well-structured, well-tested and well-documented code. |
S3d | Become a software developer familiar with best programming practices to deliver correct, well-designed code. |
Transferable and Professional Skills
T1d | Participate in the design and implementation of software projects. |
T2d | Review and defend program design choices to a group of peers, identify limitations and propose ways for improvement. |
T3d | Consistently display an excellent level of technical proficiency in written English and command of scholarly terminology, so as to be able to deal with complex issues in a sophisticated and systematic way. |
T4d | Understand the design of existing software libraries and frameworks to integrate them appropriately in new software projects. |
Teaching and Learning
Teaching and learning strategies for this course will include:
- 15 (10 x 1.5) hours of full-cohort lectures
- 15 (10 x 1.5) hours of lab sessions
- 20 (10 x 2) office hours
There will be one lecture and one lab session per teaching week, 11/2 hours each. Lab sessions give students the opportunity to work on their (formative and summative) assignments with the help of the course leader and teaching assistants.
Course information and supplementary materials are available on the University’s Virtual Learning Environment (VLE).
Students are required to attend and participate in all the formal and timetabled sessions for this course. Students are also expected to manage their directed learning and independent study in support of the course.
Employability Skills
- Communication skills
- Presentation skills
- Programming skills
Assessment
Formative
Students will be formatively assessed during the course by means of set assignments. These do not count towards the end of year results but will provide students with developmental feedback. Set assignments will also amplify problem-solving skills and develop software components that form part of the coding assignments.
Summative
Assessment will be in the form of coding assignments, which the student will have to do to the set guidelines for coding:
AE: | Assessment Activity | Weighting (%) | Online submission | Coding | Length |
1 | Coding assignment | 50 | Yes | Yes | Code and up to 2500-word explanation |
2 | Coding assignment | 50 | Yes | Yes | Code and up to 2500-word explanation |
The coding assignments will be assessed in accordance with the assessment aims set out in the Programme Specification.
Feedback
Students will receive formal feedback in a variety of ways: written (including via email correspondence); oral (on an ad hoc basis) and indirectly through discussion during group tutorials. Students will also attend the formal meeting, Collections, in which they will receive constructive and developmental feedback on their performance.
Feedback is provided on summative written assignments which will be handed back to the students.
Indicative Reading
Note: Comprehensive and current reading lists for courses are produced annually in the Course Syllabus or other documentation provided to students; the indicative reading list provided below is used as part of the approval/modification process only.
Books
Matthias Felleisen, Robert B. Findler, Matthew Flatt and Shriram Krishnamurthi. 2014. How to Design Programs (2nd ed.). The MIT Press. Available online at https://htdp.org
Eric Freeman, Bert Bates, Kathy Sierra and Elisabeth Robson. 2004. Head-First Design Patterns: A Brian-Friendly Guide. O’Reilly Media
Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides. 1994. Design Patterns: Elements of Reusable Object-Oriented Software. Addison Wesley
Perdita Stevens. 2020. How to Write Good Programs: A Guide for Students. Cambridge University Press
Indicative Topics
Students will study the following topics:
- Representing (complex) data with objects
- Representing data collections with objects
- Equality and comparison between objects
- How to test programs
- Composing programs with the model-view-controller architecture
- Code reuse via inheritance and composition
- Program design patterns (e.g. the adapter, strategy, decorator, visitor, factory and builder design pattern)
Title: NCHCS774 Object-oriented Design
Location: Academic Handbook/Programme specifications and Handbooks/ Postgraduate Programme Specifications/MA Philosophy & Artificial Intelligence Specification/Course Descriptors |
|||||
Version number | Date approved | Date published | Owner | Proposed next review date | Modification (As per AQF4) & category number |
3.0 | October 2022 | January 2023 | Dr Brian Ball | April 2025 | Category 1: Corrections/clarifications to documents which do not change approved content or learning outcomes
Category 3: Change to Learning Outcome |
2.0 | January 2022 | May 2022 | Dr Brian Ball | January 2026 | Category 3: Change to learning outcomes. |
1.0 | January 2021 | March 2021 | Dr Brian Ball | January 2026 |