Next: Continuous Mathematics
Up: Michaelmas Term 2001: Part
Previous: Computer Design
  Contents
Lecturer: Mr T.L. Harris
(tlh20@cl.cam.ac.uk)
No. of lectures: 24
Prerequisite courses: Programming in Java, Operating Systems
Aims
The aims of this course are (a) to introduce the modular design
of applications and systems software, using the facilities of the Java
programming language as running examples, (b) to explore the
need for and implementation of concurrency control and communication
in inter-process and intra-process contexts and (c) to introduce
the concept of transactions and their implementation and uses.
Lectures
- Programming with objects.
Revision overview of the Java programming language. Structuring
programs using encapsulation and inheritance. Design patterns.
Graphical user interfaces. Reflection and serialization. [5 lectures]
- Multi-threaded programming.
Concurrency as the norm. Thread control in Java. Thread scheduling
and OS implementation schemes. [3 lectures]
- Communication within an address space.
General problems, pitfalls and race conditions. Simple atomic
operations. Locking, semaphores, monitors, conditional critical
regions. [5 lectures]
- Communication between address spaces.
General problems in distributed systems. Naming. Access control.
IDLs. Java RMI case study. Message passing and the use of sockets in
Java. [5 lectures]
- Transactions.
Correctness criteria, serializability, ACID properties. Crash
recovery. Applying these techniques in Java. [4 lectures]
- Further Java topics.
Memory models. Class loaders. Finalizers. [2 lectures]
Objectives
At the end of the course students should
- understand the terminology of object oriented programming and be
able to use it with precision
- understand how systems are executed dynamically and understand the
concepts of processes, threads and address spaces
- understand the need for and implementation of concurrency
control
- understand different mechanisms for communication within or
between applications and evaluate their trade-offs in different
scenarios
- understand the concept of transaction and its application in a range
of systems
Recommended books
Bacon, J. (1997). Concurrent Systems. Addison-Wesley (2nd ed.).
Bracha, G., Gosling, J., Joy, B. & Steele, G. (2000). The Java
Language Specification. Addison-Wesley (2nd ed.). http://java.sun.com/docs/books/jls/
Lea, D. (1999). Concurrent Programming in Java. Addison-Wesley
(2nd ed.).
Gamma, E., Helm, R., Johnson, R., Vlissides, J. (1994). Design
Patterns. Addison-Wesley.
Next: Continuous Mathematics
Up: Michaelmas Term 2001: Part
Previous: Computer Design
  Contents
Christine Northeast
Tue Sep 4 09:34:31 BST 2001