Module Information

Module Identifier
Module Title
Academic Year
Semester 2
CS12230 or CS12130
Other Staff

Course Delivery

Delivery Type Delivery length / details
Lecture Up to 30 lectures
Other Workshop. Up to 11 x 1hr


Assessment Type Assessment length / details Proportion
Semester Assessment 2 Hours   Examination  30%
Semester Assessment In class test  20%
Semester Assessment 2 practical programming assignments involving design and implementation of a Java solution to a problem  40%
Semester Assessment Up to 8 practical worksheets completed in labs and in own time  10%
Supplementary Assessment Resit failed examination and/or resubmission of failed/non-submitted coursework components or ones of equivalent value.  100%

Learning Outcomes

The module concentrates on developing the student's professional approach to software development.

The major learning outcome of this module is that students should:
1. have an appreciation of the Java concepts covered in the syllabus and be able to make full use of them in their programs.

In addition, on successful completion of the module, students should:
2. appreciate the importance of software design, coding and testing as demonstrated by their own software development;
3. be able to analyse a problem and produce high quality software designs as shown by their project work;
4. be able to produce more robust programs making full use of Java exceptions;
5. be able to make data persist from one program run to another;
6. demonstrate how classes can be made more reusable using Java interfaces;
7. produce high quality software that is robust, reliable, reusable and maintainable.
8. have practical experience of using Swing to develop user-friendly front ends;
9. have more experience of software development within a team working to tight time constraints.


This module builds on the material covered in CS12130/CS12230 to further the development of participants' programming skills.

Students are introduced to more advanced facilities that are available to the software engineer to improve the robustness, reusability and maintainability of software. In particular the module involves detailed coverage interfaces and abstract classes and reinforces the key object oriented principles of inheritance, abstraction, encapsulation and polymorphism. Furthermore, the module places emphasis on testing and its support withinJava.

The graphical user interface, Swing, is used as the basis for implementing user-friendly front-ends. Although the coverage is not exhaustive, students will gain plenty of practical experience in the use of these concepts.

The Java programming language is used as a basis for illustrating the concepts covered by the syllabus, but where possible the concepts are introduced in a language independent manner.


1. Introduction - 1 Lecture

Overview of the module and an introduction to pair programming.

2. Integrated Development Environments - 1 Lecture

An overview of a popular IDE.

3. Testing and Debugging - 4 Lectures

An overview of testing in software development. The use of a unit testing framework. Visual debugging using an IDE.

4. Packages, JARS and access Modifiers - 2 Lectures

How to organise Java classes, package them up in JARS and the appropriate use of access modifiers.

5. Java interfaces and abstract classes - 4 Lectures

Defining implementation-independent 'contracts' using Java interfaces. Factoring common code into abstract superclasses.

6. Key Object-oriented principles revisited - 3 lectures

Casting and inheritance. The correct way to override methods such as 'equals'. Inheritance versus composition. Object mutability.

7. Threads - 4 lectures

An introduction to concurrency, Java threads, threads in Swing, the event dispatch thread. Synchronisation.

8. An introduction to Graphical User Interfaces - 7 Lectures

Building on programming skills, this looks at developing graphical front ends to simple software systems introducing Java's AWT and Swing classes.

9. Persistent Data - 2 Lectures

Advanced input/output and files, Serialisation. Worked examples bringing together file handling, exceptions and serialization.

10. An introduction to design patterns - 1 Lecture

The basic concepts and the Observer and Observable example.

11. Applets and Servlets - 1 Lecture

A brief introduction to browser-based Java clients and server-side handling of HTTP requests.

Reading List

Recommended Text
Sierra, Kathy. (2005.) Head first Java /Kathy Sierra, Bert Bates. This is very accessible. However, any Java 5/6 book that you are comfortable with will be fine. 2nd ed. O'Reilly Primo search
Reference Text
Freeman, Eric (2004.) Head First design patterns /Eric Freeman, Elisabeth Freeman ; with Kathy Sierra and Burt Bates. Also used extensively in CS21120 in the second year, O'Reilly Primo search
Recommended Background
Stevens, Perdita (Dec. 2005) Using UML:Software Engineering with Objects and Components 2nd ed.,Revised Addison-Wesley Longman [Imprint] Primo search


This module is at CQFW Level 4