Module Information

Module Identifier
Module Title
Software Development
Academic Year
Semester 2
Other Staff

Course Delivery

Delivery Type Delivery length / details
Lecture Up to 30 lectures
Practical up to 11 x 2hr practicals


Assessment Type Assessment length / details Proportion
Semester Exam 2 Hours   30%
Semester Assessment In class test  20%
Semester Assessment 1 practical programming assignments involving design and implementation of a Java solution to a problem  20%
Semester Assessment Up to 5 mini assignments which concentrate on the main programming topics of teh module.  30%
Supplementary Exam 2 Hours   Supplementary Exam  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 a graphical user interface library to develop user-friendly front ends;
9. have more experience of software development working to tight time constraints.


This module builds on the material covered in CS12230/CS12320 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 of exceptions and an introduction to interfaces.

A graphical user interface development library is used as the basis for implementing user-friendly front-ends and learning basic event-driven programming concepts. Although the coverage of the library is not exhaustive, students will gain plenty of practical experience in the use of the chosen library.

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, for example through the use of UML notation.


1. Introduction to the module - 1 lecture

2. Robust Programming - 2 Lectures
The need for a separate mechanism for handling erroneous code; throwing and catching exceptions. User defined exceptions.

3. Persistent Data - 2 Lectures
Advanced input/output and files. Worked example which brings together file handling and exceptions.

4. An introduction to Graphical User Interfaces - 9 Lectures
Building on programming skills, this looks at developing graphical front ends to simple software systems by using graphical user interface development libraries.

5. Abstract Data Types and Linear Data Structures - 4 Lectures
More on the ideas of abstraction and encapsulation. Java support for their implementation. An introduction to linear data structures: Stacks and Queues implemented.

6. Enhancing the Reusability of Classes - 7 Lectures
An introduction to Java interfaces: Sortable, Listable and the standard Iterator class. Using interfaces to produce a reusable List class. Revisit of polymorphism, inheritance and dynamic binding. Revisit abstract classes. Packages, JARs and access modifiers.

7. Threads - 3 lectures
An introduction to concurrency, Java threads, threads in the graphical user interfaces, the event dispatch thread. Synchronisation.

8. Testing - 2 lectures
Basic concepts. Unit testing using a unit testing framework such as JUnit. Debugging code.

Reading List

General Text
Fowler, Martin (2004 (various p) UML distilled :a brief guide to the standard object modeling language /Martin Fowler. A bit old but excellent reference 3rd ed. Addison-Wesley Primo search
Should Be Purchased
Ivar Horton (2011) Beginning Java: Java 7 Edition won't help you learn from scratch - but very good for looking up stuff Wrox Primo search
Recommended Text
Sierra, Kathy. (2005.) Head first Java /Kathy Sierra, Bert Bates. This is very accessible. It is however, a 1.5 book Basically any book that helps you 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


This module is at CQFW Level 4