This semester we have only the lecture meetings on Wednesdays and Fridays. Lecture slides are released through the course GitLab repository before each class meeting. Since our classroom is not equipped for automatic capture, class sessions will not be streamed or recorded. Please come to class. If you have a reason to miss class, you do not need an excuse, but take care to keep up with the material.
The course schedule with all due dates and exam dates is posted on the course website at the start of the semester. Normally we expect few if any changes after the Drop/Add period, but there may be adjustments: this is the first offering of the course and it is still under construction.
Let’s Go: programming language design in the service of software engineering in the large. Concurrency in Go: actors (or goroutines) and channels as building blocks. Managing concurrency in shared memory vs. messages. Flows, pipelines, and workflows. Flow control and back-pressure. Elements of service performance: metrics, queue behavior, load balancing, tail latency. Remote Procedure Call (RPC). Client/server communication in the Internet: stream transports, HTTP, REST, and gRPC. Building reliable systems from unreliable components: packet switching, sequencing and message reassembly, timer-driven retransmission, sessions and leases.
Identity: principals and domains. The centrality of trust in networked systems: authentication and authorization. The global Domain Name Service (DNS) as an example of delegation of qualified trust from trust anchors. Trust logic: reasoning about delegated trust. Elements of cryptosystems: symmetric and asymmetric crypto, keys and keypairs, secure hashing, digital signatures, certificates. Trust logic models for Internet infrastructure services: Secure DNS (DNSSEC), Public key Infrastructure (PKI), identity protocols. HTTPS: why do you trust the lock icon in your browser?
Failure models: fail-stop vs. Byzantine. Protecting data from failures: logging and replication. Failure atomicity: commit and transactions. Replicating stateful services: state-machine replication and consensus. The problem of network partitions: consistency vs. availability. Impossibility of consensus. Practical consensus with Raft. Coordination services.
Sharding, request routing, and load balancing. Request routing in geo-distributed systems. Quorum replication and eventual consistency. Tail latency. Structure of mega-services at Google. Elastic loads on cloud infrastructure.
Data centers: storage at scale, machine learning workflows. Security topics: cryptocurrency, cyberwar.
We use several channels of communication in this class, primarily the course discussion platform Ed, but occasionally we’ll send an email via Canvas. We also occasionally announce in class and on posted lecture slides. Please monitor these communication methods to stay up-to-date.
| Category | Percentage |
|---|---|
| Labs | 25% |
| Project | 15% |
| Midterm Exam I | 25% |
| Midterm Exam II | 25% |
| Checkouts | 10% |
Extra credit may be available via labs and is capped at 10% of the category: it can increase the total score by at most at 2 points. Final grades are based on Duke’s suggested point scale (A 90-100; B 80-89; C 70-79; D 60-79; F < 60), these ranges include - and +. We may lower the boundary score for each grade bracket: adjustments to the grade brackets are published on Canvas. We make no adjustment that penalizes any student for the success of another (i.e., no “curve”).
See the Assignments tab for information about the Labs, Project, and Checkouts. You are allowed two free missed checkouts with no penalty.
Gradescope accepts late submissions up until the late deadline posted on Gradescope, which is typically 72 hours after the posted due date. You do not need an excuse to submit late up until the late deadline. Late submissions incur “late fees”, score penalities of up to 20% at final grading time on a sliding scale based on your total lateness metric reported by gradescope. We may waive late fees for specific assignments as a remedy according to circumstances: watch Ed for announcements. Submissions beyond the late deadline require an extension with a good excuse, such as a Dean’s Excuse.
There are two in-class midterm exams, called M1 and M2, each worth 25% of your course grade. Watch Ed in the week before a scheduled exam for guidance about what to expect. Standard rules apply: closed book, no devices of any kind, one page of notes (both sides) for each of M1 and M2. Registered SDAO accommodations are provided through the Testing Center. All regrade requests must be submitted on Gradescope within one week of the release of the grade.
Optional final exam. The Final Exam this semester is optional. It gives you a second chance to demonstrate mastery of the material. The final has parts covering the scope of M1 and M2. Each part can raise your score for the corresponding midterm exam up to your score for that part, but no higher than the original median for that midterm. The final might raise your grade if you take it and do better than on one or both midterms, but it does not hurt your grade even if you do poorly or skip it.
The midterm exams are required. It is not allowable to skip a midterm and plan to make it up on the optional final. If you are unable to attend a scheduled midterm due to a conflict (sports, conference, etc.) please talk to us as early as possible for approval and to coordinate a makeup. If you are ill for a midterm, you must file a STINF before the exam starts (see below) and schedule a makeup exam as quickly as possible.
Office hours are provided both in person as announced. Office hours with TAs will have both group Q&A and the opportunity for 1:1 help. The group Q&A are used to get conceptual questions answered quickly and efficiently in a group setting. To receive 1:1 help please wait until the conceptual questions are answered. Please note standard etiquette:
Tips
We do not tolerate any academic dishonesty. This includes cheating on the labs, projects, quizzes or exams. We report all cases of academic misconduct to the Duke Office of Student Conduct and comply with their policies for handling incidents.
Collaboration and AI Tools. We encourage a climate of cooperation, peer learning, curiosity, and experimentation. The labs are to help you learn. We encourage you to engage your work in that spirit and to live in truth. The rule for lab work is to submit your own work and disclose openly all sources of assistance in a statement in a text file titled statement.txt in each submitted git repository. We do not impose any specific prohibition on the use of AI tools. AI tools may offer compelling benefits for some aspects of coding, but they also regularly produce buggy code. Additionally, you may discuss the labs and the problems they raise freely with other students. The other side of this open and permissive policy is that the primary differentiators for assessment are the proctored exams. That’s just how it is in 2026.
Your submitted work should be your own work. The following constitute academic misconduct in this class:
These policies necessarily involve some blurry lines and grey area. If you see ambiguity, please ask.
This course covers a lot of ground and asks you to master unfamiliar skills that require self-directed practice and self-assessment. The schedule is demanding. It is important to keep up. Many students entering the Computer Science major (or minor) find that they need to make some adjustments to their study habits. Duke resources can help you.
Please do your part to keep our community safe.
Please contact the instructors if you have any concerns or questions.