Course book

The lectures and slides cover the course topics and try to be self-content (you
will find lot of code on them). Nevertheless, the assigned course book is
Principles of Concurrent and Distributed Programming, 2nd Edition by Mordechai
(Moti) Ben-Ari. Addison-Wesley, ISBN 0-321-31283-X. The book covers the topics
given in the course and we refer to it in the lectures in order to point you out
what to read for each lecture.

Recommended reading

There is an excellent book on programming in Erlang simply called Programming
in Erlang. It
deals quite a lot with Erlang's concurrency model and how to write concurrent
programs. Cremona is known to sell it at occasions. Great book!

Additional reading (Java)

There are many other books on multithreaded programming in Java that you could
refer to, and are easily found on the web. For example,
a comparative review of 6
books.
The focus of these books differs somewhat from that of our course.

Some quick comments on two books.

Concurrent Programming in Java, Second Edition, by Doug Lea
(Addison-Wesley) is both advanced and detailed, and has a computer
science perspective as well as a practical one.

Multithreaded Programming with Java Technology, by Lewis and
Daniel Berg (Prentice Hall, Sun Press) presents lots of low-level
and implementation detail, and is written more from a practical
programmer's point of view.

Many Java books have a brief chapter on concurrency. A fair example
is the chapter in Object-Oriented Software Development Using Java,
by Xiaoping Jia, Addison Wesley.