A GUIDE TO USING THIS BOOK

We have been using the material from this book for a number of years primarily for senior-level and graduate courses. However, it has also been used as the basis for one and two-day seminars on distributed systems and middleware for an audience consisting of (technical) ICT professionals. Below are some suggestions about how it can be used based on our experience.

Senior and Graduate Courses

For senior and graduate courses the material can typically be covered in 12-15 weeks. We have noticed that for most students, distributed systems appear to consist of a wealth of subjects that all seem to be tightly coupled to each other. The current organization of the book by which we present the subjects in terms of different principles and teach each principle separately has greatly helped in keeping students focused. The effect is that by the end of part one (Chaps. 1-8), before discussing paradigms, students already tend to have a fairly good impression of the overall picture.

Nevertheless, the field of distributed systems covers many different subjects, some of which are difficult to understand when studied for the first time. Therefore, we strongly encourage students to study the appropriate chapters as the course progresses. All sheets, which are available through the companion website (www.prenhall.com/tanenbaum), are handed out in advance allowing students to actively participate during class. This approach has been quite successful and is highly appreciated by the students.

All the material can be covered in a 15-week course. Most of the time is spent on teaching the principles of distributed systems, that is, the material covered in the first eight chapters. When discussing paradigms, it is our experience that only the essentials need to be presented. Details of each case study are more easily learned directly from the book than being taught during class. For example, we devote only a single week to object-based systems, despite the fact that there are approximately 80 pages devoted to these systems in the book. Below is a proposed class schedule showing which topics to cover in lectures.

Week Topic Chapter Lecture on
1 Introduction 1 All
2 Communication 2 2.1-2.3.3
3 Communication 2 2.4-2.5
4 Processes 3 All
5 Naming 4 4.1-4.2
6 Naming 4 4.3
6 Synchronization 5 5.1- 5.2
7 Synchronization 5 5.3-5.6
8 Consistency and replication 6 6.1-6.4
9 Consistency and replication 6 6.5-6.6
9 Fault tolerance 7 7.1-7.3
10 Fault tolerance 7 7.4-7.6
11 Security 8 8.1-8.2
12 Security 8 8.3-8.7
13 Object-based systems 9 All
14 File systems 10 All
15 Document-based systems 11 All
15 Coordination-based systems      12 All

Not all material is taught during class; students are expected to study specific parts by themselves, especially the details. When there are fewer than 15 weeks available for teaching, we suggest skipping the paradigm chapters and letting interested students read those on their own.

For junior-level courses, we recommend spreading the material over two semesters and adding lab assignments. For example, the students could work on a simple distributed system by asking them to modify components such that they can tolerate faults, handle multicast RPCs, and so on.

Professional Seminars for Industry

For one and two-day seminars we use the book as essential background material. Nevertheless, it is possible to cover the entire book in two days, provided that all details are skipped and an emphasis is put only on the essentials of distributed systems. In addition, to make the presentation more lively, it makes sense to reorder the chapters. The purpose of this is to show early on how the principles are used. Graduate students are used to getting 10 weeks of principles before seeing how they can be applied (if at all), but professionals are better motivated if they see how the principles are actually used. A tentative schedule for a two-day course that is divided into logical units is shown below.

Day 1
Unit    Min.    Topic Chapter   Emphasis
1 90 Introduction 1 Client/server architecture
2 60 Communication 2 RPC/RMI and messaging
3 60 Coordination-based systems 12 Messaging issues
4 60 Processes 3 Mobile code and agents
5 30 Naming 4 Location tracking
6 90 Object-based systems 9 CORBA

Day 2
Unit    Min.    Topic Chapter    Emphasis
1 90 Consistency and replication 6 Models and protocols
2 60 Document-based systems 11 Web caching/replication
3 60 Fault tolerance 7 Process groups and 2PC
4 90 Security 8 Basic ideas
5 60 Distributed file systems 10 NFS v3 and v4

Individual Study

The book can also be successfully used for individual study. If enough time and motivation is present, the reader is advised to go through the entire book cover to cover.

If there is not enough time to go over all the material, we suggest to concentrate only on the most important topics. The following table lists the sections we believe cover the most important subjects relevant to distributed systems, along with illustrative examples.

Chapter Topic Sections
1 Introduction 1.1, 1.2, 1.4.3, 1.5
2 Communication 2.2, 2.3, 2.4
3 Processes 3.3, 3.4, 3.5
4 Naming 4.1, 4.2
5 Synchronization 5.2, 5.3, 5.6
6 Consistency and replication 6.1, 6.2.2, 6.2.5, 6.4, 6.5
7 Fault tolerance 7.1, 7.2.1, 7.2.2, 7.3, 7.4.1, 7.4.3, 7.5.1
8 Security 8.1, 8.2.1, 8.2.2, 8.3, 8.4
9 Object-based systems 9.1, 9.2, 9.4
10 Distributed file systems 10.1, 10.4
11 Document-based systems 11.1
12 Coordination-based systems 12.1, 12.2 or 12.3

It would be nice if we could make an estimate of how long it takes to cover the suggested material, but that depends so much on the background of the reader that it is impossible to say much in general. However, if this material is being read during the evening by someone with a full time job, it is likely to take several weeks at least.