- Sample final quiz from Fall09, Fall08.
- Mid-term quiz solution is here.
- Mid-term is open-book, open-notes. You may also bring a printed copy of your labs. Laptop usage is not allowed.
- Sample midterm quiz from Fall08, from Fall09.
Class schedule: Thursdays 5:00 - 6:50pm (CIWW 201) .
Class instructor: Jinyang Li (Office hour: Wed 5-6pm. Please email ahead if you'd like to see me at any other time)
Instructional assistance: Nguyen Tran (Office hour: Wed 4-5pm)
Course informationDistributed systems help programmers aggregate the resource of many networked computers to construct highly available and scalable services. This class teaches the abstractions, design and implementation techniques that allow you to build fast, scalable, fault-tolerant distributed systems. Topics include multithreading, network programming, consistency, naming, fault tolerance, and security and several case studies of distributed systems.
This class is a graduate-level course, but undergraduate students are welcome! The course consists of lectures, a series of programming labs and a (small) final project.
This class satisfies the Ph.D. breadth requirement in Systems and also serves as a M.S. capstone course.
Why should you take this class?If you are curious about the nuts and bolts of computer systems, you will enjoy this class. The last offering of this class has an overall class rating of 4.72 and overall instructor rating of 4.74. Here are some (carefully selected) quotes from students: ``The level of rigor is what makes us learn the concepts'', ``Awesome. I feel I became a much better engineer through this class and more employable as well. worth the sweat and tears''.
Prerequisites:1. Undergraduate Operating Systems
2. Programming experience in C/C++ is important for the programming labs
Useful BooksThe following books may help provide background help with lab programming. None of them are required. They are listed in rough order of usefulness.
- Principles of Computer System Design. Jerome Saltzer and M. Frans Kaashoek, Morgan Kaufmann.
- Distributed Systems: Principles and Paradigms, Andrew Tanenbaum and Maarten van Steen, Prentice Hall.
- Advanced Programming in the UNIX Environment. W. Richard Stevens.
- The C++ Programming Language. Bjarne Stroustrup. Addison Wesley.
- UNIX Network Programming. Volume 1: Networking APIs: Sockets and XTI. W. Richard Stevens.
- Modern Operating Systems. Andrew Tanenbaum. Prentice Hall.
Questions or comments? email firstname.lastname@example.org
Policy on academic integrity