Next: Continuous Mathematics
Up: Michaelmas Term 2002: Part
Previous: Computer Design
  Contents
Concurrent Systems and Applications
Lecturer: Dr T.L. Harris
(tlh20@cl.cam.ac.uk)
No. of lectures: 24
Prerequisite courses: Programming in Java, Operating Systems
This course is a prerequisite for Operating Systems II, Distributed Systems (Part II), Advanced Systems Topics (Part II).
Aims
The aims of this course are (a) to introduce the modular design
of application software, using the facilities of the Java programming
languages 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. [5 lectures]
- Further Java topics.
Graphical user interfaces. Reflection and serialization.
Finalizers. Class loaders. [5 lectures]
- Communication within an address space.
Reasons for multi-threaded programming. Correctness criteria. Mutual
exclusion locks and condition variables. Alternative
concurrency-control primitives. [5 lectures]
- Communication between address spaces.
General problems in distributed systems. Naming. Access control.
IDLs. Remote method invocation. Message passing and the use of
sockets in Java. [5 lectures]
- Transactions.
Correctness criteria, serializability, ACID properties. Crash
recovery. Two-phase locking. Timestamp ordering. Optimistic
concurrency control. [4 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
- be able to illustrate the use of object oriented techniques
through examples of the kind seen in the Java standard libraries
- 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 transactions and their application in
a range of systems
Recommended books
Bacon, J. & Harris, T. (2003) Operating Systems or Bacon,
J. (1997) Concurrent Systems (2nd ed.). Addison-Wesley.
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 2002: Part
Previous: Computer Design
  Contents
Christine Northeast
Wed Sep 4 14:43:05 BST 2002