This is an archive of a course I taught Spring 2023, preserved here as a resource for future students.

ECE 568: Engineering Robust Server Software

Section 02, Spring 2023


Fig. 1: Your server should be more robust than this.
Quick links: Overview · Schedule · Syllabus · Resources

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:

Teaching assistants:

TA Office Hours: See forum thread

Links:

Schedule

#DateLectureAssignment 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%
Homework28%
Project22%
Midterm exam20%
Final exam30%

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:

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