Module Identifier CS41110  
Academic Year 2000/2001  
Co-ordinator Dr Mark Ratcliffe  
Semester Intended For Use In Future Years  
Next year offered N/A  
Next semester offered N/A  
Pre-Requisite CS31010  
Mutually Exclusive Only available to students registered for Masters in Software Engineering.  
Course delivery Lecture   14 lectures  
  Practical   (Up to) 4 sessions  
Assessment Course work   Resit assessment will follow the same pattern. One piece of assessed coursework.   100%  

General description
This module examines some issues related to more advanced concepts in Object Orientation than are presented in the module CS31010 Object Oriented Programming and Design . In particular it will consider the issues associated with designing for reuse, inheritance, component models in object oriented languages, testing object oriented systems and designing object oriented frameworks. It concludes by considering some issues associated with the formal specification of object oriented languages such as Java.

The aim of the course is to widen students' understanding of the benefits and weaknesses of object technology as well as to introduce them to more advanced object oriented concepts.

Learning outcomes
On successful completion of this module, students should:

1. Introduction - 1 Lecture
This lecture will consider the importance of object orientation as a development method and the language Java in particular. It will also briefly consider the implications of the approach taken in CS31010 (i.e. OMT method).

2. Inheritance and reuse - 2 Lectures
These lectures will concentrate on the use and effect of inheritance within an object oriented programming language such as Java. In particular they will consider the problems associated with this technique and consider the implications of these problems. They will also consider issues related to the scope of methods and variables and inheritance.

3. Compositional reuse: Enterprise Java Beans - 2 Lectures, 1 Practical
These lectures will introduce the component model. It will consider what can be accomplished with Enterprise Java Beans and the limitations.

4. Testing Object Oriented Systems - 2 Lectures, 1 Practical
These lectures examine some of the issues behind testing object oriented system that are different in nature from testing procedural languages.

5. Frameworks in object oriented systems - 2 Lectures, 1 Practical
Frameworks have become a very popular way of designing, implementing and reusing associated classes. In these lectures the students gain an understanding of what a framework is, how you approach the design of a framework and the problems associated with documenting frameworks.

6. Pattern based Software Design - 1 Lecture
This lecture considers the pattern movement within the object oriented community. They consider why the patterns community emerged, what patterns are and how you use them.

7. Formal specification of Java - 2 Lectures, 1 Practical
This section will consider the motivation behind the formal specification of an object oriented language such as Java.

8. Distribution and object-orientation - 2 Lectures
These lectures will provide an overview of the Common Object Request Broker and its support for the development of distributed applications.

Reading Lists
** Recommended Text
Robert Englander. (1997) Developing Java Beans. Java Series. O'Reilly and Associates ISBN 1565922891
Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. (1994) Design Patterns - Micro-Architectures for Reusable Object-Oriented Software. Addison-Wesley
John E Hunt. (1998) Java and Object Orientation: An Introduction. Springer-Verlag