CSC-30067 - Advanced Programming and Software Design
Coordinator: Marco Ortolani Room: CR102 Tel: +44 1782 7 33264
Lecture Time:
Level: Level 6
Credits: 15
Study Hours: 150
School Office: 01782 733075

Programme/Approved Electives for 2026/27

None

Available as a Free Standing Elective

No

Co-requisites

None

Prerequisites

CSC-20041 Software Engineering
CSC-10074 Object-Oriented Programming

Barred Combinations

None

Description for 2026/27

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,2
apply common design patterns to effectively structure software projects: 1,2
apply the programming language structures to guarantee appropriate synchronisation of concurrent code and mutually exclusive
access to shared data: 2
analyse the fundamental issues that need to be addressed as a result of the application of concurrent patterns: 2

Study hours

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.

School Rules

None

Description of Module Assessment

1: Class Test weighted 30%
In-class objective test
Students 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 concurrency
The 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.