Distributed Systems W4995-1 Fall 2013
Class Location: 337 MUDD
Time : Tues Thursday 11:40am - 12:55pm
Credits: 3 units
Instructor: Roxana Geambasu
Office Hours: Thursdays 1:30-2:30pm
Office: 461 Computer Science Building
Class Discussion: Piazza
TA: Peter Du
Office Hours: Wed 2:30-3:30PM
TA Location: CEPSER 6LE1
TA: Yu Qiao
Office Hours: Mon 4-6PM
TA Location: MUDD 122A
Email: distributed-systems-class@lists.cs.columbia.edu
Course Overview
Distributed systems help programmers aggregate the resources of many networked computers to construct highly available and scalable services. This class teaches the abstractions, design and implementation techniques that enable the building of fast, scalable, fault-tolerant distributed systems. Topics include multithreading, network programming, consistency, fault tolerance, consensus, security, and several case studies of distributed systems.
Prerequisites
- COMS W3137 Data Structures and Algorithms
- COMS W3157 Advanced Programming (or good working knowledge of C and C++)
- COMS W3827 Fundamentals of Computer Systems.
- W4118 Operating Systems is not required, but it is a big plus for your homework assignments.
The other requirement is that students be able to send and receive email, access courseworks.columbia.edu, access the class web page, and download and print pdf files from the class web page.
You need to get get a CS account for access to the CLIC machines, because we will grade all your programming assignments on these machines.
Grading
The grading formula is:
- 70%: Homework (in total, 55% for programming parts plus 15% for written parts)
- 15%: Final exam
- 15%: Class participation (ask/answer questions)
Please see our policies regarding late submission, re-grading assignments, and collaboration rules.
Textbooks and Resources
Required textbook:
- Distributed Systems: Principles and Paradigms, Andrew Tanenbaum and Maarten van Steen, Prentice Hall.
Optional textbooks and other resources:
- Principles of Computer System Design. Jerome Saltzer and M. Frans Kaashoek, Morgan Kaufmann
- Advanced Programming in the UNIX Environment. W. Richard Stevens The C++ Programming Language. Bjarne Stroustrup. Addison Wesley
- Google C++ Coding Style Guide
- UNIX Network Programming. Volume 1: Networking APIs: Sockets and XTI. W. Richard Stevens.
Acknowledgements
This course builds upon several existing distributed systems courses from other universities:
- MIT’s distributed systems course (6.824), developed by Robert Morris and Frans Kaashoek
- NYU’s distributed systems course (G22.3033), developed by Jinyang Li
- CMU’s distributed systems course (15-440), developed by David Andersen
We leverage different aspects from the above courses. For example, we use a subset of MIT’s lab assignments, the lecture schedule, notes, and presentations from the MIT, CMU, and NYU courses, and much of NYU’s web page structure.