This subject is the second in a series of subjects (following the prerequisite subject) designed to build competencies in the art, science and engineering of software construction. It is a step towards building well-engineered programs and becoming a responsible computer systems/software engineer.
The main theme that permeates the subject is that to be able to develop good software systems one needs to be able to use software development techniques, especially design techniques.
This subject shows how to design, build, test and document object-oriented (OO) systems of medium complexity. It presents a set of design techniques including the UML and design principles to guide the development of a re-useable, OO system.
It extends a basic knowledge of Java programming to include inheritance, polymorphism, GUI design and event-handling.
It develops the Personal Software Process to the level of PSP0.1.
Assessment: This is a typical example of how this subject will be assessed:
Assignment 1: Read and implement a design to produce a working subsystem; demonstrate Pass-level objectives (40 per cent).
Assignment 2: Write and implement designs to produce a working system; demonstrate Credit/Distinction-level objectives (15 per cent).
Advanced Assignment: Design and evaluate a software system of medium complexity; demonstrate High Distinction-level objectives (15 per cent).
Final Exam: Multiple-choice exam; test basic competency of Pass-level objectives (30 per cent).
Autumn semester, City campus
Spring semester, City campus