ECE 590: Engineering Robust Server Software

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 will assume you are a completely capable programmer at the start of this course. 

Course Resources

  • We will be using Piazza for class discussions/questions etc. I will also post various announcements, assignment corrections/clarifications, and so forth here.
  • The course syllabus (Spring 2018)
  • OIT's vcm site, where you will obtain your VM. Details of specific provisioning requirements coming soon.
  • Recommended list of package to install on your VM: gcc g++ make valgrind emacs screen git postgresql-9.5 python  python3-pip libssl-dev libxerces-c-dev libpqxx-dev manpages-posix-dev
  • A quick intro to Python
  • The Django Tutorial is here


Homework Assignments

  1. Event RSVP Website
  2. Caching Web Proxy
  3. Security Analysis of Another Group's Hwk 1+2
  4. Scalable "Exchange Matching" server
  5. Project description .


This is what I expect for a schedule, but (except for exam dates) is subject to change:

Tuesday Lecture Thursday Lecture
Jan 9: (no class: Winter Break) Jan 11: Intro/VM Setup
Jan 16: Server Software Jan 18: (Snow day)
Jan 23: Protocol/Server Concepts Jan 26: Web Protocols/Technologies
Jan 30: Unix Daemons Feb 1: Unix Daemons (cont'd)
Feb 6: Guest lecture: Drew Stinnett Feb 8: Containers
Feb 13: Guest lecture: CI/CD Feb 15: Errors/Exceptions
Feb 20: Security: Intro/Authentication Feb 22: Security: Cryptography
Feb 27: High Availability (Tyler Bletsch) Mar 1: Disaster Recovery (Tyler Bletsch)
Mar 6: Security: Attacks Mar 8: Defense in Depth
Mar 13: Spring Break (no class) Mar 15: Spring Break (no class)
Mar 20: Midterm Exam Mar 22:  Performance + Scalability
Mar 27:Performance + Scalability Mar 29: Performance + Scalability
April 3:  IO Performance (Tyler Bletsch) April 5: Guest Lecture: Salman Azhar
April 10: Guest Lecture: Ken Edwards  April 12: Guest Lecture Ravi Soundararajan
April 17: Guest Lecture: Vlad Petric April 19: Guest Lecture: Jim Posen