University of Surrey - Guildford

Registry > Module Catalogue
View Module List by A.O.U. and Level  Alphabetical Module Code List  Alphabetical Module Title List  Alphabetical Old Short Name List  View Menu 
2010/1 Module Catalogue
Module Provider: Computing Short Name: CS288
Level: HE2 Module Co-ordinator: GRUNING A Dr (Computing)
Number of credits: 10 Number of ECTS credits: 5
Module Availability

Autumn Semester

Assessment Pattern

Assessment Pattern


Unit(s) of Assessment


Weighting Towards Module Mark( %)


Coursework (individual):


Exercises to encourage the continuous development of practical programming skills and demonstrate adherence to standards, procedures and good software engineering practice. The exercises will build on the core material of the module leading to the exam.






practical lab-based examination, 3h










Qualifying Condition(s) 




Module Overview

Object-Oriented analysis and design is a widely used paradigm within the software-engineering community. This course will expand on the ideas introduced in the first year Java programming language modules. The emphasis on the module will be on developing well-designed object-oriented programs so that students understand the implementation phase of the software development life cycle, and how it follows on from the design phase.


L1 Java and Software Engineering Modules COM1017, COM1018 and COM1020.


Module Aims

The aim of this module is to allow students to practice and reflect upon implementing software using Java. At the end of the module, students should have practical skills in and the theoretical background for using Java as a programming language and how it fits into a software engineering project, and should appreciate how to develop readable code, adhere to coding standards and test code and be able to acquire the knowledge and experience to use new Java packages independently using the accompanying documentation.

Learning Outcomes

By the end of this module, the students should be able to:


1.       Recognise and use the basics of implementing a system in an object-oriented programming language (Java).


2.       Evaluate the design issues that need to be successfully addressed in order to successfully implement a complex system.


3.       Deliver an implementation of a small system given a set of requirements.


4.       Recognise the importance of documenting and testing code.


Be able to independently acquire the knowledge to use and explore new classes, packages and APIs by making appropriate use of accompanying documentation.

Module Content

         Implementation using Java:


         Using IDEs to develop code.


         Using various Java APIs including GUI aspects.


         I/O handling using Java.


         Documenting code using Javadoc and single-line comments.


         Design code for testability.


         Using design patterns.


         Using new Java APIs for use in own projects independently.


         Programming new classes to guidelines for existing APIs.


         Implementing data structures and algorithms.


         Analyse other's and own source code for weaknesses.


         Adhere to a good, consistent and easy to follow coding style.




         Pitfalls for concurrent programming


         Multi-threading and synchronisation


         The Java event model




         introduction to programming a GUI


Methods of Teaching/Learning

10 hours of lectures, 10 hours of tutorials/example classes, 10 hours of labs


Selected Texts/Journals

Generally also all texts that were recommended for L1 Java Modules COM107 and COM1018 as well as COM1020.


The contents of this module is not covered in any single textbook. On the other hand any good advanced textbook of your liking will do for the topics of the module that it does cover.




Bruce Eckel online Java book:


Barnes & Koelling: Objects First with Java, Pearson International. Any recent edition, eg 5th.  2009. L2 teaching will certainly go beyond this book.



Freeman & Freeman: Head First Design Patterns. O'Reilly. 2004. This book as very good regarding design patterns however doesn't yet take Java generics into account.



Niemeyer & Knudsen: Learning Java. O'Reilly. 2000. This book covers all the Java fundamentals in a concise and logic still. Of course, it does not cover Java developments since 2000. This is a good book if you already know how to code in a different OO or procedural programming language.



Recommended resources:


Sun Java tutorials:


Java 6 API:






Last Updated

UPDATED 8/12/10 JG (due to issues with eVision)