Programme/Approved Electives for 2026/27
None
Available as a Free Standing Elective
No
CSC-20041 Software EngineeringCSC-10074 Object-Oriented Programming
This module provides a deeper understanding of object-oriented programming, and to the concept of concurrent programming, using Java as a working language. You will learn how to use software design patterns which can be applied in a range of real world application areas and the tools to appropriately manage software projects in a professional environment.
Aims
To provide a deeper understanding of object-oriented programming and design, and to the concept of parallelism and concurrent programming and their usage in real-world examples. Coverage will be given of Software Design Patterns.
Intended Learning Outcomes
apply object-oriented concepts in Java making use of reference-based data structures and Java Collections: 1,2apply common design patterns to effectively structure software projects: 1,2apply the programming language structures to guarantee appropriate synchronisation of concurrent code and mutually exclusiveaccess to shared data: 2analyse the fundamental issues that need to be addressed as a result of the application of concurrent patterns: 2
Two hours of live in person lectures and 2-hour computer lab practical each week for 12 weeks.An indicative breakdown of the independent study is 12 hours of lab revision, 40 hours of revision of lecture materials, and 10 hours of revision of provided solutions.About 10 hours to prepare for the class test and 30 hours to prepare for the programming assignment.
Description of Module Assessment
1: Class Test weighted 30%In-class objective testStudents will undertake a one-hour online in-person class test around week 7 or 8. The class test will be composed of MCQ, multiple-response, matching, fill-in-the-blank questions to test their knowledge of object-oriented programming , advanced data structures and design patterns.
2: Assignment weighted 70%Programming assignment and report– software design and concurrencyThe assignment will assess appropriate use of advanced data structures, Java Collections and common design patterns to structure the solution, which will be expected to correctly manage synchronisation of concurrent code, safe access to shared data structures, and liveness issues (deadlock, livelock and starvation) where appropriate.
An accompanying reflective report must describe and justify the design and concurrency-control decisions taken.
The code and report together will be equivalent to a 2000-word report.
This should take around 30 hours of preparation.