Distributed and Operating Systems

COMPSCI 677

This course provides an in-depth examination of the principles of distributed systems in general, and distributed operating systems in particular. Covered topics include processes and threads, concurrent programming, distributed interprocess communication, distributed process scheduling, virtualization, distributed file systems, security in distributed systems, distributed middleware and applications such as the web and peer-to-peer systems. Some coverage of operating system principles for multiprocessors will also be included.

Prerequisites: Students should be able to easily program in a high-level language such as Java, C++ or Python, have had a course on data structures, be familiar with elements of computer architecture and have had previous exposure to the operating system concepts of processes, virtual memory, and scheduling. A previous course on uniprocessor operating systems (e.g., CMPSCI 377) is helpful.

Credits: 3

Textbooks and reading material:

  • Distributed Systems, 3rd Edition, Andrew Tannenbaum and Maarten van Steen.
    • Please download your copy of the textbook from the author’s website here
    • From time to time, we will also use some older material from the previous second edition of this textbook, which is also available as a free PDF from the author website here
  • Additional readings can be found here.

Course Format

Synchronous classes will be offered on Zoom on Mon/Wed 11.15 am - 12.30 pm.

Classes will be recorded and made available online. Synchronous attendance is not mandatory, although it is encouraged. Students who cannot attend synchronously because of the time zone are encouraged to ask questions during the office hours, which will also be synchronous.

Students are expected to attend the lectures, synchronously or asynchronously, and study the material presented during the lectures. They will also have to participate in the following activities:

  • Homework: Homework assignments are individual and hands-on. Students will have to submit a short report.
  • Projects: There will be two/three larger programming assignments. Projects can be performed in groups of up to three people.
  • Exams: There will be two exams. The midterm exam will only be about the material discussed before the exam. The final exam will mainly be about the material after the midterm but it will require familiarity with the material of the entire course.