This is a frozen snapshot of the main page for this class as it looked at the end of the semester.  You can watch my lectures and download PDFs of the slides, but the links to the rest of the course content have been deleted because it's not mine to give away.  Professor Peter Chen created the projects, the autograding system used in 482 and most of the rest of the course content.  The slides I used were based on decks created by Professor Harsha Madhyastha.  This is a great class and I really enjoyed teaching it.  But I couldn't have pulled it off without my wonderful staff.  --Nicole

EECS 482 SS20 Introduction to Operating Systems

This course will be taught entirely online at "normal speed" over the combined spring and summer semesters.  Lectures and labs will be streamed live and recorded on BlueJeans.  Office hours will be conducted via Zoom and Google Meet.  Exams will be conducted using the Crabster randomized exam server.  Links to slides and recordings will be posted as they become available.

Instructors

Faculty Staff
Nicole Hamilton

Nicole Hamilton (nham)
MW 4:30 to 6:00 pm EDT
Lecturer

Austin Kiekintveld

Austin Kiekintveld (akiek)
Sat 12:00 to 4:00 pm EDT

Brandon Kayes

Brandon Kayes (bkayes)
Fri 3:00 to 5:00 pm EDT
Lab instructor

Celine Schlueter

Celine Schlueter (celinesc)
Tue 5:00 to 7:00 pm EDT
Sat 9:00 to 11:00 am EDT

Email sent to secretemail@umich.edu goes to all of us.

Alumni advisor

We gratefully acknowledge the advice and many other contributions by our volunteer alumni course advisor, Ben Reeves. Ben served as a 482 IA for many semesters before graduating and has been especially helpful in pointing out where all the bodies are buried.

Ben Reeves

Ben Reeves (bgreeves)
Alumni advisor

Lectures

Lectures will be streamed live and recorded on BlueJeans, Mondays and Wednesdays, 3:00 pm to 4:30 pm EDT, except May 25 (Memorial Day), June 24 (midterm) and the week of June 29 (break between semesters and Independence Day).

Introduction

  1. May 6. Introduction  Start button PDF icon

Threads and synchronization

  1. May 11.  Threads  Start button PDF icon
  2. May 13.  Synchronization  Start button PDF icon
  3. May 18.  Lock and CV  Start button PDF icon
  4. May 20.  Producers-consumers and readers-writers  Start button PDF icon
  5. May 27.  Semaphores  Start button PDF icon
  6. June 1.  Thread implementation  Start button PDF icon
  7. June 3.  Create, join and lock  Start button PDF icon
  8. June 8.  Switch invariant, deadlock  Start button PDF icon

Virtual memory

  1. June 10.  Virtual memory  Start button PDF icon
  2. June 15.  Segmentation and paging  Start button PDF icon
  3. June 17.  Eviction  Start button PDF icon
  4. June 22.  Kernel vs. user  Start button PDF icon
  5. July 6.  Process creation and fork (after the midterm and break)  Start button PDF icon

Scheduling

  1. July 8.  Scheduling  Start button PDF icon

File systems

  1. July 13.  Storage devices  Start button PDF icon
  2. July 15.  File systems  Start button PDF icon
  3. July 20.  Caching and ordering updates  Start button PDF icon
  4. July 22.  Transactions and LFS  Start button PDF icon
  5. July 27.  File systems recap  Start button PDF icon

Networks and distributed systems

  1. July 29.  Sockets and tcp  Start button PDF icon
  2. August 3.  Remote procedure calls  Start button PDF icon
  1. August 5.  Distributed systems  Start button PDF icon
  2. August 10.  Distributed file systems  Start button PDF icon

Virtual machines

  1. August 12.  Virtual machine monitors  Start button PDF icon

Exams

  1. June 24.  Midterm.  Conducted online 3:00 pm to 5:00 pm EDT using the Crabster exam server.  (26%)
  2. August 20.  Final exam.  Conducted online 3:00 pm to 5:00 pm EDT using the Crabster exam server.  (26%)

Projects

  1. May 22.  Register your github username and declare your project group membership.
  2. May 27.  Multi-threaded programming.  (3%)
  3. June 22.  Thread library.  (15%)
  4. July 29.  Memory manager.  (15%)
  5. August 17.  Network file server.  (15%)

Labs

Labs will be streamed and recorded via Zoom, Fridays 11:30 am to 12:30 pm EDT, beginning May 8, except July 3 (Independence Day) and July 24. Your lab assignments are not graded; they are here to help you. You don't have to do them, but if you don't, you'll likely have other problems passing the class.  (Join URL)

  1. May 8.  Getting started with the tools  Start button PDF icon
  2. May 15.  Threads and race conditions  Start button PDF icon
  3. May 22.  Monitors  Start button PDF icon
  4. May 29.  RAII and pImpl  Start button PDF icon
  5. June 5.  Semaphores  Start button PDF icon
  6. June 12.  Deadlocks  Start button PDF icon
  7. June 19.  Sample midterm 1 and sample midterm 2  Start button PDF icon
  8. June 26.  Virtual memory  Start button PDF icon
  9. July 10.  Memory management  Start button PDF icon
  10. July 17.  File systems  Start button PDF icon
  11. July 31.  Sockets  Start button PDF icon
  12. August 7.  Remote procedure calls  Start button PDF icon
  13. Tuesday, August 18, 7:00 pm to 9:00 pm.  Sample final 1 and sample final 2  Start button

Resources

  1. Student information
  2. Course syllabus
  3. Canvas
  4. Our Piazza forum
  5. Offices hours queue
  6. Project FAQ
  7. Coping with hitchhikers and couch potatoes on teams
  8. An introduction to programming with threads
  9. Advanced reading: Implementing Condition Variables with Semaphores
  10. Programming with sockets
  11. C++ reference
  12. CAEN
  13. ITS Computing Sites
  14. EECS 482 Git tutorial
  15. Git reference and Git book.
  16. Make tutorial