CPS 512 (Duke University) Distributed Systems
home calendar topics work resources

About CPS 512

Who should take this course. Undergraduate and graduate students with an interest in systems and networking, i.e., how Internet services work.

Preparation. You should be comfortable with the fundamentals of operating systems and networks. You can get by without undergraduate courses in one or both of those topics: it will be clear what you need to learn, but you will have to work a little harder. We ask you to write thread-safe code in Java and to work with the Unix shell. You should consider yourself a strong student and a good programmer.

Readings. We use various web reading and research papers. The core material will be presented in lecture and notes. Students may extend their understanding by studying the optional readings.

Base workload. In addition to the readings, there will be four assigned projects or labs (done in teams of 1-3), a midterm exam, and a final exam. There may also be short in-class quizzes and other exercises out of class. The solutions to the labs are roughly 800 lines of Java. As with all system software, debugging time depends on your level of care and talent, and is effectively unbounded. In Spring 2020 the fourth lab is optional and may be replaced with an independent project with the approval of the instructor and in accordance with guidelines presented in class.

Late work. Graded work has deadlines. To keep things fair no extensions can be granted to individuals or groups. We may occasionally grant extensions to the entire class, or grant "free passes" for late days that all groups may "spend" as they choose. Late work receives a penalty of up to 5% per day depending on circumstances. It is much better to do the work and hand it in late than to receive a zero on an assignment.

Grading. The semester grade is determined from your exam/quiz scores (50%) and lab/project work (50%). All scores are suitably weighted. All members of a lab/project group receive the same scores for the lab or project. Quizzes are averaged into your exam score (time-weighted), and exercises are ungraded but may be testable on the quizzes and exams. For final grading, I may make adjustments of up to half a letter grade for participation/engagement and other factors.

Quizzes and exams. All exams follow the policies in the Exam FAQ. No assistance of any kind is acceptable during quizzes and exams. No use of electronics of any kind is permitted during exams. For in-class quizzes you may use your computer to refer to other materials, but time may be too short to improve your score that way: the questions are designed to test what you have learned.

Policy on collaboration for CPS512. The Duke Community Standard applies in all aspects of this course: we value your honor and your honesty. Collaboration on lab work and project work is encouraged. Help each other. However, any work you turn in must be your own, and you may be called upon to explain (alone) your choices and approaches in more detail. You may incorporate public software into your assigned lab work and course project to a reasonable extent, but not so much as to undermine the educational purpose and spirit of the project. You must acknowledge any sources of your ideas and software when they are not your own, and you must disclose in advance, without any specific request, any sources you used. Do not use code from a student who took the course in a previous semester or who completed related labs in another course or at another school. All students should understand that we have tools to detect copied code with a high degree of certainty and precision.