This is an advanced course on object-oriented programming in the large. One theme is of distribution: spreading computation over a number of remote servers, and making use of remote services. Another is of software components: independent, self-contained units of software with tightly-specified interfaces, capable of late integration. The third theme is of interoperability: enabling interaction between objects and components implemented in different languages and located on different servers.
Course dates
Objectives
At the end of the course, students will have the confidence to tackle the construction of large-scale, distributed software systems. They will have practical experience of some recent emerging object technologies, including CORBA and JavaBeans. They will have a wider acquaintance with other related concepts, and will be prepared for future developments in the field.
Contents
- Concurrency:
- threads; synchronization - semaphores and monitors; deadlock and livelock; scheduling.
- Distributed objects:
- remote method invocation; mobile objects; persistence, and object databases; Jini and JavaSpace.
- Component-oriented programming:
- reuse - construction versus assembly; pipes, filters and plug-ins; JavaBeans; DCOM and ActiveX; visual programming; software frameworks.
- Open object computing:
- object broker models; the Object Management Group's CORBA; interface definition language; CORBA and Java; reflection.
Requirements
Since this is an advanced programming course, fluency in an object-oriented language will be assumed; experience of Java in particular will be helpful, as this will be the main language of the course. Aspects of object-oriented design will also be used to describe examples, so familiarity with a language such as UML and associated methodology will be required. The courses Object-oriented Programming and Object-oriented Design are suitable preparation.