Engineering Robust Server Software
ECE 568 - Spring 2025
Schiciano B (1466) - Tues/Thurs 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 2025
- 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 python 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: Ride Sharing Web-App (due Feb. 7)
- Homework #2: Caching Web Proxy (due Mar. 3) [HTTP Proxy overview]
- Homework #3: Assignment Details (due Mar. 21)
- Homework #4: (due Apr. 4)
- Project: (due Apr. 25)
Schedule
Tuesday Lecture | Thursday 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 | Feb 30: Containers |
Feb 4: Errors and Exceptions | Feb 6: Finish Errors and Exceptions |
Feb 11: Security: Introduction | Feb 13: No class meeting - homework 2 planning and prep |
Feb 18: Security: Cryptography | Feb 20: Security: Vulnerabilities Prior Recording |
Feb 25: Security: Defense in Depth | Feb 27: High Availability |
Mar 4: Disaster Recovery | Mar 6: Performance and Scalability: Part 1 |
Mar 11: Spring Break (no class) | Mar 13: Spring Break (no class) |
Mar 18: Midterm exam (Sample Midterm) | Mar 20: Performance and Scalability: Part 2 |
Mar 25: Performance and Scalability: Part 3 | Mar 27: I/O Performance |
Apr 1: Guest Lecture - TBD | Apr 3:
Guest lecture - Incident Response Michael Ansel, Senior Security Manager @ Lambda Labs |
Apr 8: Guest Lecture - TBD | Apr 10: Guest Lecture - TBD |
Apr 15: Review for final exam | Apr 17: No graduate classes |