Engineering Robust Server Software
ECE 568 - Spring 2026
Schiciano A (1464) - Wed/Fri 8:30-9:45am
This class is aimed at graduate students and seniors/juniors who are strong/competent programmers. Graduate students should have taken ECE 551 and ECE 550, and be in (or have already taken) ECE 650 [or have equivalent background]. Undergraduates should have had CS 308, ECE/CS 250, and be in (or have already taken) Networking, and Databases.I assume you are a completely capable programmer at the start of this course.
Contact Info
- Instructor: Brian Rogers (brian.m.rogers at duke), Office Hours: After each class, by appointment (feel free to email to request), and at various times posted each week
- Teaching Assistants: TA Office Hours: See pinned Ed forum post
Links
Course Resources
- Course Syllabus for Spring 2026
- Where you will obtain your VM: https://vcm.duke.edu
- Recommended list of packages to install on your VM: gcc g++ make valgrind emacs screen git postgresql libpq-dev python3 python3-pip libssl-dev libxerces-c-dev libpqxx-dev manpages-posix-dev
- A quick intro to Python
- Django Tutorials are here (from official Django documentation) or here (from the Mozilla Developer Network)
- Docker Overview Slides and Notes
Readings
- RFC 2119: Key words for use in RFCs to indicate requirement levels
- How to Survive a Ground-Up Rewrite Without Losing Your Sanity by Dan Milstein
- Google Compute Engine Incident #16007
Assignments
See Canvas "Assignments" page for Assignment materials. All submissions due at 11:59pm eastern on the specified day.- Homework #1: (due Feb. 7)
- Homework #2: (due Mar. 3)
- Homework #3: (due Mar. 21)
- Homework #4: (due Apr. 4)
- Project: (due Apr. 25)
- Project group chosen (due Mar. 27)
- Project protocol spec (due Apr. 10)
Schedule
| Wednesday Lecture | Friday Lecture |
| Jan 7: n/a | Jan 9: Intro/Overview |
| Jan 14: Server Software | Jan 16: Protocols and APIs |
| Jan 21: Web Protocols and Technologies Additional Resource | Jan 23: Unix Daemons |
| Jan 28: Unix Daemons | Jan 30: Containers |
| Feb 4: Errors and Exceptions | Feb 6: Finish Errors and Exceptions |
| Feb 11: Security: Introduction | Feb 13: Security: Cryptography |
| Feb 18: Security: Vulnerabilities | Feb 20: Security: Defense in Depth |
| Feb 25: High Availability | Feb 27: Disaster Recovery |
| Mar 4: Performance and Scalability: Part 1 | Mar 6: Midterm Review |
| Mar 11: Spring Break (no class) | Mar 13: Spring Break (no class) |
| Mar 18: Midterm exam (Sample Midterm) (Midterm Study Guide) | Mar 20: Performance and Scalability: Part 2 |
| Mar 25: Finish Perf & Scalability: Part 2 | Mar 27: Performance and Scalability: Part 3 |
| Apr 1: I/O Performance | Apr 3: Guest Lecture |
| Apr 8: Guest Lecture | Apr 10: Guest Lecture |
| Apr 15: Review for final exam | Apr 17: No graduate classes |