712: Advanced Operating Systems and Distributed Systems (Fall 2000)

See here for the top-level 712 (Fall 2000) page.

This course examines the design and analysis of selected aspects of operating systems and distributed systems. It covers topics such as concurrency and distributed communication; fault-tolerance, availability, and persistence; and operating system structure. Lecture focus on the principles used in the design of operating systems and distributed systems, and algorithms and data structures used in their implementation. Readings include case studies, seminal papers, and recent conference and journal articles.

Prereqs

Members of this class are expected to have taken an operating systems course equivalent to CMU's 15-412 and achieved a grade of A or better. This includes familiarity as a user with an interactive operating system (e.g., Unix) and solid understanding of basic concepts in the design and implementation of operating systems. Students without this prerequisite knowledge are likely to struggle.

712 is a graduate-level class, and thus operates differently from an undergraduate class; particularly interested and prepared undergraduates can participate, with explicit permission of the instructor.

Components

  • Regular lectures by the instructor on core topics.
  • Critical study and discussion of recent literature in each of the core topic areas. This will include student involvement in discussions!
  • Homework problems and summaries of papers.
  • A term project that involves designing, constructing, and evaluating an interesting software system related to the problems and techniques discussed in class.
  • Midterm and final exams.
  • Topics covered

    See the full topic and reading list for details.

    Books and Readings

    There is no assigned textbook. However, there will be a variety of readings that will be handed out in class. Also, a number of books will be on reserve in the library for background reading deeper study:
  • Tanenbaum, Modern Operating Systems (Background)
  • Silberschatz, Operating Systems Concepts (Background)
  • Coulouris, et al., Distributed Systems: Concepts and Design, 2nd ed., 004.36 C85d2
  • Lynch, Distributed Algorithms, 004.36 L98d
  • Lynch, et al., Atomic Transactions, 005.74 A88i
  • Bernstein, et al., Concurrency Control and Recovery in Database Systems, 004.35 B53c
  • Korth & Silberschatz, Database Systems Concepts, 005.74 K85d2
  • Casevant & Singhal, Readings in Distributed Computing Systems, 004.36 C33r
  • Ananda & Srinivasan, Distributed Computing Systems: Concepts and Structures, 005.36 D614
  • Mullender, Distributed Systems, 004.36 D6142a2
  • Filman & Friedman, Coordinated Computing: Tools and Techniques for Distributed Software, 004.36 F48c
  • Ceri & Pelagatti, Distributed Databases: Principles and Systems, 510.7848 C41d
  • Andrews, Concurrent Programming: Principles and Practice, 004.65 P48c
  • Jain, The Art of Computer Systems Performance Analysis, 004.24 J25a 004.36,

    Project

    Projects should be done in teams of 2 or 3 students. You are encouraged to propose your own project, though suggestions will be provided by the staff to help you with this. Projects plans must be explicitly okay'd by the course staff.

    More information about the project is available here.

    Grading

  • 20% exam #1
  • 20% exam #2
  • 40% project
  • 20% subjective evaluation (participation, summaries, homeworks)

    Final Note

    * Everything here is subject to change.