Course Meeting Times

Lectures: 2 sessions / week, 1.5 hours / session


6.033 Computer System Engineering

6.170 Software Studio

6.004 Computation Structures


6.828 Operating System Engineering studies fundamental design and implementation ideas in the engineering of operating systems. Lectures are based on a study of UNIX and research papers. Topics include virtual memory, threads, context switches, kernels, interrupts, system calls, interprocess communication, coordination, and the interaction between software and hardware. Individual laboratory assignments involve implementation of a small operating system in C, with some x86 assembly.

This course is primarily intended for seniors and Masters of Engineering students who want to learn about operating systems in detail. PhD students are also welcome, but note that 6.828 is not a “core” subject for the TQE. Students can use 6.828 to fulfill the engineering concentration requirements for Computer Systems.


To turn-in the labs, run “make handin” in your lab directory. The handin must be received by 11:59pm on the day that the lab is due. You can turn in as many times as you want. We will grade all your submissions and email the result to you within a few minutes. Your final grade and late hours (see below) are only based on the latest submission you made to a lab.

You have a total of 72 late hours to use throughout the semester, which you can divide up among the lab assignments however you like; you don’t have to ask or tell us. Each day late in excess of 72 hours will incur a full letter grade penalty on the lab exercise component of your overall grade. These late hours are intended for cases where you fall behind due to illness, job interviews, athletic events, deadlines in other classes, etc. For extensions under extenuating circumstances (e.g., you are sick for a week), we require a letter from one of the student deans.

Code Reviews

You will also be required to review other students’ lab code, a standard practice used to improve code quality. These reviews will be randomly assigned 36 hours after the lab deadline and will be due one week after the lab deadline. As soon as a review is submitted, the author of the code will receive a copy. The review process is double blind: both the author of the code and the reviewer are anonymous. Reviews should be a few paragraphs that suggest three possible improvements and identify one thing the reviewer learned from the other student’s code. Like the homework, we will check-off that you put reasonable effort into them.


Most homeworks will be done in class and are due at the end of the class. The homework is intended to make you think about the lecture topic. We do not grade your answers for correctness, but merely check-off that you put reasonable effort into them.


Quiz 30%
Lab Exercises 30%
Homework, Code Reviews, Class Participation 10%
Lab Challenge Problems, Final Project 30%

You must submit all labs in order to pass the class.


You may not collaborate on quizzes. You are welcome to discuss the homework and labs with other students, but all of your written work and code must be your own and must carefully acknowledge all contributions of ideas by others, whether from classmates or from sources you have read.

Do not post your lab or homework solutions on publicly accessible web sites (such as GitHub) or file spaces.

Course Info

Learning Resource Types

grading Exams with Solutions
notes Lecture Notes
group_work Projects with Examples
assignment Programming Assignments