



Next: ECAD Up: Michaelmas Term 2008: Part Previous: Computer Design Contents
Concurrent Systems and Applications
Lecturers: Dr S.M. Hand, Dr T.L. Harris, Dr A.F. Blackwell and Dr T.W. Hong
No. of lectures: 21
Prerequisite courses: Programming in Java, Operating Systems
This course is a prerequisite for the Part II courses Distributed Systems and Advanced Systems Topics.
Aims
The aims of this course are (a) to introduce the modular design of application software, using the facilities of the Java programming language as a running example, (b) to explore the principal mechanisms of inter-process communication, the concept of transactions and their implementation and uses, (c) to introduce the need for concurrency control within a process and the techniques for structuring concurrent programs.
Lectures
- Java review.
Objects and classes.
Packages, interfaces, nested classes.
Design patterns. [3 lectures, TWH]
- Distributed systems.
Introduction.
TCP and UDP.
RPC and RMI.
Transactions.
Enforcing isolation.
Crash recovery and logging. [6 lectures, SMH]
- Advanced Java.
Reflection and serialisation.
Graphical interfaces.
Memory management.
Native methods and class loaders.
Generic types. [5 lectures, TWH]
- Testing.
Software testing strategies. [1 lecture, AFB]
- Concurrency.
Threads.
Mutual exclusion.
Deadlock.
Condition synchronization.
Worked examples.
Low-level synchronization. [6 lectures, TLH]
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 different mechanisms for communication
between applications and evaluate their trade-offs in different
scenarios
- understand the concept of transactions and their application in
a range of systems
- understand why software testing is not always easy and
the techniques used to achieve thorough testing
- understand the need for and implementation of concurrency control
Recommended reading
* Bacon, J. & Harris, T. (2003). Operating systems or Bacon, J. (1997) Concurrent systems (2nd ed.). Addison-Wesley.
Myers, G.J. (2004). The art of software testing. Wiley (2nd ed.).
Lea, D. (1999). Concurrent programming in Java. 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/
Gamma, E., Helm, R., Johnson, R. & Vlissides, J. (1994). Design patterns. Addison-Wesley.




Next: ECAD Up: Michaelmas Term 2008: Part Previous: Computer Design Contents