General Information

* Course syllabus can be found here (including the grading scale and expected course schedule).

Course description

This course teaches how internals of modern operating systems are working with hardware/software stack. In the course, we will learn fundamental concepts of operating systems by building an operating system by our own hand. In particular, lab assignments are based on JOS, an educational OS project, and the students will build it starting from booting (Lab 1), virtual memory (Lab 2), process (Lab 3), multi-tasking (Lab 4), and finally to file system (Lab 5). We will also cover concurrency issues in systems by learning on how to implement locks and other synchronization mechanisms and how to resolve deadlock issues.

Instructor information

  • Chung Hwan Kim

  • Email address: chungkim 'at' utdallas 'dot' edu

  • Office hours: MW 9:30-10:30am (this could be changed at the instructor's discretion)

  • Location: ECSS 3.201

TA information

  • Sudharssan Mohan

  • Email address: sudharssan 'dot' thanammohan 'at' utdallas 'dot' edu

  • Office hours: Fridays 10am-noon (this could be changed at the TA's discretion)

  • Location: ECSS 2.104A1

Class meetings and modality

  • Modality: Traditional

  • When: MW 2:30-3:45pm

  • Where: ECSS 2.412

  • Video recordings of the class will NOT be provided


Students are required to satisfy the following prerequisites:

  • Computer Architecture (CS/SE 2340)

  • Systems Programming in UNIX and Other Environments (CS/SE 3377)

  • Data Structures and Introduction to Algorithmic Analysis (CS/SE/CE 3345)


  • Operating Systems: Three Easy Pieces, Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau

  • Free at online here

  • You may purchase a physical copy here

Student learning objectives/outcomes

Students shall be able to understand fundamental concepts in operating systems: their design, implementation, and usage. After completing the course, students are expected to gain the abilities to understand and apply the following topics:

  • Memory management and virtual memory

  • Process management

  • System calls, page faults, interrupts and exceptions

  • Multi-threading, synchronization and deadlocks

  • I/O and file systems

Grading policy

  • Lab assignments (70%): 4 labs (Lab 1: 10%, Lab 2: 15%, Lab 3: 20%, Lab 4: 25%)

  • Quizzes (30%): 3 quizzes (10% each)

  • No midterm or final exam

  • Extra credits: optional Lab 5 (10%), and challenges in lab assignments and questions during class (1-2% each)

Evaluation & late policy

  • Lab assignments and quizzes will be evaluated on a 100-point scale (0-100).

  • Late assignment submission will be penalized 10 points per day (24-hour period).

  • Late days are not applicable to Lab 5 submission (firm deadline).

Academic integrity


Cheating vs. collaboration

Collaboration is a very good thing. On the other hand, cheating is considered a very serious offense and is vigorously prosecuted. Vigorous prosecution requires that you be advised of the cheating policy of the course before the offending act.

For this semester, the policy is simple: don't cheat:
  • Never share code or text on the homeworks and projects.

  • Never use someone else's code or text in your solutions.

  • Never consult potential solutions on the Internet.

On the other hand, for this class, you are strongly encouraged to:
  • Share ideas.

  • Explain your code to someone to see if they know why it doesn't work.

  • Help someone else debug if they've run into a wall.

If you obtain help of any kind, always write the name(s) of your sources.



The lab assignments and materials used in this course are largely based on those originally developed for MIT 6.828: Operating System Engineering and edited by UW CSE 451, GT CS 3210, and OSU CS 444/544.