Operating Systems Design & Implementation


CS 361 Computer Systems or equivalent courses

Proficient C programming skills in a shell environment

Some familiarity with (x86) assembly

By the end of this course, you will have a good understanding of the main elements that work together to form an Operating System (OS). You will have significant experience with C programming for low-level OS development, and some additional exposure to low-level application development. You will have acquired familiarity with standard tools for revision control, debugging, and system diagnostics.

While the class combines theory and practice, there will be a focus on practical demonstrations in lecture and extensive hands-on programming experience. Plan to spend 10 +/- 5 hours per week on homework programming, depending on your current proficiency.

General Information

  • Science & Engineering South (SES) Room 138
  • Tuesday/Thursday 3:30-4:45PM
  • Instructor: Dr. Xingbo Wu
  • Office Hours: SEO 1338 Friday 3:00-4:40 PM, or by appointment
  • TA: Lanxin Zhang
  • TA Office Hours: TBH 175 Monday 10:00-11:59 AM
  • Course Discussion: Piazza (updated 2019)
  • Midterm exam: Tuesday Oct. 22
  • Final exam: Friday Dec. 13th 1:00PM



  • Evaluation will be done through one midterm (20 points, mid-October), one (comprehensive) final (30 points) and about 6 to 8 homeworks (total 50 points). Grades will be based on a relative curve, determined after the final exam. Grad student results will not be used when determining the curve.
  • Undergraduate students have reduced load for lab projects.
  • Penalty for late submissions: -20% for up to 24 hrs; -40% for up to 48 hrs; zero points if no submission within 48 hrs (hard deadline).
  • Each student will be allotted a budget of three (3) penalty-free late days for which no late penalty will be assessed. If a student wishes to make use of one or a few penalty-free late day(s), the student must email the instructor (using the subject heading "Penalty-free late day") prior to the deadline.
  • Three bonus points towards the student's final grade if the student never missed a due day and never used a penalty-free late day.

Academic Integrity

Consulting with your classmates on assignments is encouraged, except where noted. However, turn-ins are individual, and copying code from your classmates is considered plagiarism. For example, give the question “how did you do X?”, a great response would be “I used function Y, with W as the second argument. I tried Z first, but it doesn’t work”. An inappropriate response would be “here is my code, look for yourself”.

To avoid suspicion of plagiarism, you must specify your sources together with all turned-in materials. List classmates you discussed your homework with and webpages from which you got inspiration or copied (short) code snippets. All students are expected to understand and be able to explain their turned-in materials. Plagiarism and cheating, as in copying the work of others (including material found online), paying others to do your work, etc, is obviously prohibited, is grounds for failing the course, and will be reported.

Topics Covered (tentative)

  1. Bootstrap
  2. Abstractions and Interfaces (shell, kernel, isolation, system calls, interrupts, signals)
  3. Memory (virtual memory, memory allocators, COW, dedup)
  4. Process (process creation, CPU scheduling, threads)
  5. Concurrency (synchronization, locks, RCU)
  6. File Systems (VFS, Persistent Storage, Consistency)
  7. Virtual Machine and Containers

Related Courses