Fig. 1: Your server should be more robust than this.
Overview
Lecture location: Hudson 125
Lecture time: Tue/Thu 3:30pm - 4:45pm
Instructor: Dr. Tyler Bletsch
Email: Tyler.Bletsch AT duke.edu
Office Hours:
- After every lecture: In classroom.
^ These are *real* office hours, not just answering a few short questions - feel free to approach after class with substantive issues. - TBD
- By appointment: Feel free to email to meet if the above times don't work for you.
Teaching assistants:
TA Office Hours: See forum threadLinks:
- Ed forum - Discussion and Q&A forum
- Sakai - Gradebook and assignment submission
- Notion - Contains critical technical guidance for assignments
- Anonymous feedback - use this form to send anonymous feedback to the instructor
Schedule
# | Date | Lecture | Assignment due (11:59:00pm) |
---|---|---|---|
1 | Thu 1/12 | Intro/Overview | |
2 | Tue 1/17 | Server Software | |
3 | Thu 1/19 | Protocols and APIs | |
4 | Tue 1/24 | Web Protocols and Technologies
- Alternate slides | |
5 | Thu 1/26 | Unix Daemons | |
6 | Tue 1/31 | Unix Daemons | |
7 | Thu 2/2 | Containers | |
8 | Tue 2/7 | Errors and Exceptions |
Homework 1 |
9 | Thu 2/9 | Security: Introduction | |
10 | Tue 2/14 | Security: Cryptography | |
11 | Thu 2/16 | Security: Vulnerabilities | |
12 | Tue 2/21 | Security: Defense in Depth | |
13 | Thu 2/23 | High Availability | |
14 | Tue 2/28 | Disaster Recovery |
Homework 2 • Notion • Video intro • Partner/git form |
15 | Thu 3/2 | Performance and Scalability: Part 1 | |
16 | Tue 3/7 | Review for midterm | |
17 | Thu 3/9 |
Midterm exam
→ Sample midterm | |
Tue 3/14 | SPRING BREAK | ||
Thu 3/16 | SPRING BREAK | ||
18 | Tue 3/21 | Performance and Scalability: Part 2 | |
19 | Thu 3/23 | Performance and Scalability: Part 3 |
Homework 3 • Notion • Partner/git form |
20 | Tue 3/28 | I/O Performance | |
21 | Thu 3/30 | Guest lecture: Vlad Petric — ACID, CAP, NewSQL Senior Software Engineer, Tower Research Capital - Recording - Slides | Project group chosen |
22 | Tue 4/4 | Guest lecture: Tara Gu — Intro to CI/CD Senior software engineer, Google - Recording - Slides | |
23 | Thu 4/6 | Guest lecture: Ravi Soundararajan Principal engineer, VMware - Slides (with speaker notes) - No recording (sorry!) |
(Due Thu 4/6) Homework 4 • Notion • Partner/git form |
24 | Tue 4/11 | Guest lecture: Mekka Williams Principal Engineer, NetApp - Recording - Slides |
(Due Tue 4/11) Project protocol spec - Spec (on Sakai) - Notion - Groups Submit via email to your assigned TA (see groups sheet)
|
25 | Thu 4/13 | Guest lecture: Daniel Holmes Senior Software Engineer, NetApp - Recording - Slides | |
26 | Tue 4/18 | Review for final exam |
(Due 4/27) Project |
Wed 5/3 | FINAL (2pm-5pm) |
Syllabus & policies
Course synopsis
In this course, students learn about important principles in server software design and development. These principles include topics such as handling asynchronous behavior, design for failure, basic security principles, scalability, and resilience. Students will put these ideas into practices by developing software reflecting the ideas learned in class.Prerequisites: 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.
Grading breakdown
This course will require readings from the textbook, problem sets, programming assignments, and digital logic design. Grading breakdown:
Category | % |
---|---|
Homework | 28% |
Project | 22% |
Midterm exam | 20% |
Final exam | 30% |
The course letter grade cutoffs are: 97 A+, 93 A, 90 A, 87 B+, 83 B, 80 B, 77 C+, 73 C, 70 C, 67 D+, 62 D, 60 D, <60 F.
Grading
There is no curve grading, and no extra or special credits will be given. Unfortunately, with any cut-off points, there may be students who fall slightly below a cut-off point. Students will not be promoted to the next grade level, just as I will not downgrade students to their lower grade level just because their grade is slightly higher than the cut-off points. I reserve the right to shift the numerical cutoff points down, but this is solely at my discretion, and occurs when the change results in a letter grade that more accurately reflects the quality of the students work and effort.
Homeworks
You will have 4 homework assignments during the semester. For each homework, you MUST work with a partner, and you MUST change partners for each homework (so during the semester, you will have partnered with 4 different people).Course Project
You will have one larger course project. For this project, you will work with a partner. Your partner may be someone you partnered with for a homework (but does not have to be). You may wish to use your homework pairings to help determine who you want to partner with for the project.For the project, the class will be split in half, with half completing one set of requirements ("A"), and the other half completing the other set of requirements ("B"). Additionally, the class will be partitioned into interoperability groups, consisting of some partnerships with A requirements and some partnerships with B requirements. Within an interoperability group, any A partnership's project must work with a B partnership's project.
You MUST decide on your project partner by the date labeled "project groups chosen" in the calendar above. We will work to quickly put you into interoperability groups and give you a short period to swap if desired. You will need to submit your proposed protocol spec by the date labeled "project spec" in the calendar above, which will be a portion of your project grade.
Late homework submissions incur penalties as follows:
- Submission is 0-24 hours late: total score is multiplied by 0.9
- Submission is 24-48 hours late: total score is multiplied by 0.8
- Submission is 48-72 hours late: total score is multiplied by 0.6
- Submission is more than 72 hours late will receive no credit
Late submissions for the project are not allowed. In other words, projects submitted late will receive no credit.
Your homework grade will be based on what you submit and when you submit it.
Grade appeals
All regrade requests must be in writing. Email the TA who graded the relevant portion with your questions. After speaking with the TA, if you still have concerns, contact the instructor. All regrade requests must be submitted no later than 1 week after the assignment was returned to you.Academic integrity
I take academic integrity extremely seriously. Your work is expected to be your own (exams) or your partner's (homework/project). If you commit academic misconduct in this course, you will face the appropriate disciplinary procedures (undergraduates: referral to the Office of Student Conduct; graduate students: referral to the Associate Dean in charge of your program).If you are unsure whether a certain course of action is permissible or not, please ask. If you think that asking is a bad idea because I would probably say no, you can be fairly certain it is not permissible.
In addition to the measures taken by the university, the affected assignment(s) will receive zero credit, or possibly -100% in egregious cases.
Resources
- Section 1 course site
- Guest lectures from the other section
- VCM: Where you will obtain your VM
- 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 by Drew Hilton
- Django tutorials:
- Docker Overview: Slides and Notes
- 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