The assignments this semester:
The course schedule includes release dates and due dates for the labs. This course is still under development so there may be some adjustments.
Checkouts are online surveys/quizzes on Canvas.
Checkouts provide information to us, but we do not
judge your answers: the graded score for each checkout is boolean: completed
or not. We encourage you to engage with all the questions, but if you
don’t like a question you can leave it blank.
Checkouts are due at 11:59pm ET each Thursday, or the posted
due date on Canvas, whichever is later.
The labs ask you to write code within self-contained Go programs or modules. Complete them individually. The labs are designed to illustrate important concepts and may involve some experimentation to illustrate certain performance effects. Generally, labs release on Wednesday and are due Tuesday night almost two weeks later, so two or more labs are out at once. Per the schedule, the tempo is higher at the start to prime the pipeline, and no labs are due on exam weeks or Spring Break. We drain the pipeline before the second midterm to leave time for final projects.
Labs release as repositories in the course GitLab group.
A self-directed final project applies concepts and methodologies to real-world systems. Projects may be done in groups of three. The intent is that you will experiment with an open-source software system in a cloud setting, and then: submit a repository with a short writeup (two pages max), give a short presentation in class at the end of the semester (LDOC, 5 minutes max), and present/discuss the project in a meeting with the instructor.
We draw readings from a variety of sources, including a few classic short papers (CSP, Lamport Clocks), a couple of full-strength research papers (Raft and e.g. Google File System), some tutorialish readings from ACM Queue or CACM (e.g., the Tail at Scale), relevant sections of the OSTEP text, and other sources. Web readings are linked through the course schedule. Other named readings on the course schedule are PDFs which can be found in the readings folder. Named readings in italics on the schedule are optional. We will define the scope of the readings more precisely in lectures and Ed notes.
The readings emphasize Google’s infrastructure architecture, primarily because they have published some good readings for us—and their ideas work and have shaped the field and industry. Google’s books and materials on Site Reliability Engineering are a good introduction to distributed mega-services and their operation.
The labs are distributed and submitted through the CS department GitLab site coursework.cs.duke.edu and submitted through Gradescope. It is similar to CompSci 210 and other courses, and the setup is similar, except that you will be submitting code from your laptop rather than a Duke-managed container. See the Resources tab.
For each lab:
Take time to set up git for a smooth workflow. Time you invest to become familiar with git will pay off later: see the Resources tab.