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 2017)
  • OIT's vm-manage site, where you will obtain your VM.  Be sure to select "Engineering Robust Server Software" for your provisioning in Step 3.
  • 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
  • The Django Tutorial is here

Readings:

Homework Assignments

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

Lectures

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

Tuesday Lecture Thursday Lecture
Jan 10: (no class: Winter Break) Jan 12: Intro/VM Setup
Jan 17: Server Software Jan 19: Web Protocols/Technologies
Jan 24: Unix Daemons  Jan 26: Unix Daemons (cont'd)
Jan 31: Django Intro Feb 2: Django (cont'd)/ AJAX Basics
Feb 7: Guest lecture: Broad Systems Picture Feb 9: Security
Feb 14: Cryptography (Tami Guest Lecture) Feb 16: Vulnerabilities
Feb 21: Guest lecture: Tara Gu Feb 23: Exceptions
Feb 28: Atomicity Mar 2:High Availability (Tyler Bletsch)
Mar 7: Disaster Recovery (Tyler Bletsch) Mar 9: Guest Lecture: Melissa Fritcher
Mar 14: Spring Break (no class) Mar 16: Spring Break (no class)
Mar 21: Midterm Exam Mar 23:  Performance + Scalability
Mar 28:Performance + Scalability Mar 30: Performance + Scalability
April 4:  Performance + Scalability April 6: IO Scalability (Tyler Bletsch)
April 11: Lock Free Data Structures April 13: Design for Failure (Jim Posen)
April 18: ACID, CAP, NewSQL (Vlad Petric)