CS385 - Syllabus

Instructor Dr. Jakob Eriksson <jakob@uic.edu>
Meets 3:30-4:45 pm TR, in BH 209
Office hours Tue 2-3 pm, Wed 2-3 pm (in SEO 1309)
Teaching Assistant Nilanjana Basu <nbasu4@uic.edu>
TA Office Hours Mon 3-4 pm, Fri 11-12 pm (in SEO 1318)


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.


xv6 rev 8 source code
This is required reading, and should be brought to exams and class for reference. Printed copies will be handed out in class.

xv6 a simple, Unix-like teaching operating system
Russ Cox, Frans Kaashoek, and Robert Morris
This is a commentary to accompany the xv6 source code. It also covers some OS concepts.

Operating Systems - Principles and Practice 2/e
Anderson and Dahlin
Recursive Books.

(optional) The C Programming Language
Kernighan and Ritchie
Prentice Hall
All assignments are done in C. This is an excellent (and classic) introduction to the language.

additional materials will be supplied throughout the course in the form of web page URLs, likely drawn from MIT course 6.828 references.


This class is programming intensive, with all assignments done in C. Basic C and systems programming skills will not be taught in this class, as CS361 is a required prerequisite.


Evaluation will be done through 1 midterm (20 points), 1 final (30 points) and 10 homeworks (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.


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.


  1. Purpose, Function and Structure of an OS
    1. Boot
    2. User / Supervisor modes, privileged instructions
    3. System Calls
    4. Processes and Context Switching
  2. Process Management
    1. Process Creation
    2. Processes vs. Threads
    3. CPU Scheduling
  3. Concurrency
    1. Interrupts, multiprocessing, simultaneous multithreading
    2. Synchronization mechanisms
    3. Race conditions and deadlocks
  4. Memory Management
    1. Virtual vs. physical memory
    2. Kernel memory allocators
    3. Virtual memory and paging hardware
    4. Swapping / page replacement
  5. Storage Management
    1. File systems
    2. Mass storage devices
  6. I/O and Device Drivers
  7. Authentication and Protection
Copyright 2016 The Board of Trustees
of the University of Illinois.webmaster@cs.uic.edu
Helping Women Faculty Advance
Funded by NSF