This is the web page for the second part of G52CON taught by Brian
Logan. The web page for the first part of the module (lectures 1-10)
taught by Andrezj Bargiela can be
found here.
In the second part of the module, high-level concepts will be
introduced in pseudocode, with more detailed implementations in Java
where relevant. All the necessary material on Java threads should have
been covered in G52APR, however you may find this lecture on Threads
in Java (and the
associated example applet) useful.
Lectures
Lectures are on Mondays at 5pm and Tuesdays at 9am, both
in A25 (Business School South).
Reading List
Recommended Reading
Further Reading
- Ben-Ari (1982), Principles of Concurrent Programming, Prentice Hall.
- Andrews (1991), Concurrent Programming: Principles & Practice,
Addison Wesley.
- Burns & Davies (1993), Concurrent Programming, Addison Wesley.
- Hartley (1998), Concurrent Programming: The Java Programming
Language, Oxford.
- Magee & Kramer (1999), Concurrency: State Models and Java Programs,
John Wiley.
- Bishop (2000), Java Gently, 3rd Edition, Addison-Wesley.
- Huth & Ryan (2000), Logic in computer science:
modelling and reasoning about systems, Cambridge University Press.
You may also find the
Java Tutorial useful for the material on Java.
Note that there is also
a version of the reading list
with links to the University Library catalogue.
Suggested Reading
Note that the following list of suggested reading is provisional,
as it may necessary to change the order in which topics are presented.
- Background on Java Threads.
Lea (2000), chapter 1;
Java Tutorial, Threads.
- Lecture 11: Semaphores I.
Andrews (2000), chapter 4, sections 4.1--4.2;
Ben-Ari (1982), chapter 4;
Burns & Davies (1993), chapter 6.
- Lecture 12: Semaphores II.
Andrews (2000), chapter 4, sections 4.1--4.2;
Ben-Ari (1982), chapter 4;
Burns & Davies (1993), chapter 6.
For Producer-Consumer Problems.
Andrews (2000), chapter 1, section 1.6;
Ben-Ari (1982), chapter 4.
- Lecture 13: Monitors I.
Andrews (2000), chapter 5;
Ben-Ari (1982), chapter 5;
Burns & Davies (1993), chapter 7, sections 7.4-7.9.
- Lecture 14: Monitors II.
Andrews (2000), chapter 5;
Ben-Ari (1982), chapter 5;
Burns & Davies (1993), chapter 7, sections 7.4-7.9.
for Readers and Writers Problems.
Andrews (2000), chapter 4, section 4.4, chapter 5, section 5.4;
Ben-Ari (1982), chapter 5, section 5.4;
Burns & Davies (1993), chapter 6, section 6.8;
- Lecture 15: Synchronisation in Java I.
Lea (2000), chapter 2;
Java Tutorial, Synchronizing Threads.
- Lecture 16: Synchronisation in Java II.
Lea (2000), chapter 3.
- Lecture 17: Remote Inovcation.
Andrews (2000), chapter 8;
Ben-Ari (1982), chapter 6;
Burns & Davies (1993), chapter 5;
Andrews (1991), chapter 9.
Exercises
There will be a number of (unassessed) exercises covering
some of the programming constructs and proof techniques introduced in the
module. Model answers will be given in the lectures.
Lecture Slides
Warning: the slides are not `lecture notes': they are there to help
present the material, not to act as a reference to the main points covered
in the lecture. Simply reading the slides won't necessarily give you a good
grasp of the syllabus. They are specifically not a substitute for
taking your own notes or reading the suggested reading for the lecture.
In some cases, an abridged version of the lecture slides will be made
available before the lecture. These will be replaced by the unabridged
version after the lecture.
- Lecture 11: Semaphores I
Slides
- Lecture 12: Semaphores II
Slides,
the Producer-Consumer/Bounded Buffer
applet
and the Dining Philosophers
applet
(from Magee & Kramer (1999))
- Lecture 13: Monitors I
Slides
- Lecture 14: Monitors II
Slides
- Lecture 15: Synchronisation in Java I
Slides
- Lecture 16: Synchronisation in Java II
Slides
- Lecture 17: Remote Invocation
Slides
- Lecture 18: Distributed Processing in Java
Slides
- Lecture 19: Revision
Slides
Copyright © 2013
Brian Logan
This file is maintained by Brian Logan
Last modified: 4-Mar-2013, 10:19