Caffeinated 6.828 is a fast-paced whirlwind introduction to operating systems, aimed at giving students an as-close-as-possible to an authentic 6.828 experience during an IAP term.

The focus of this course will be on the lab assignments from the standard 6.828 term, in which students complete the implementation of an operating system kernel named JOS. Roughly two months' worth of lab assignments, according to the standard schedule, will be due in just three weeks. This will be an intensive class, and you should expect to commit a significant fraction of your IAP towards the lab work.

Unlike a standard 6.828 term, we will not be covering many research topics or papers, nor will we be extensively covering xv6, the other teaching OS from a standard term. There will be an optional final mini-project, and no exams.

Caffeinated 6.828 is primarily intended for graduating Seniors and M.Eng. students that did not have an opportunity to take the full-fledged 6.828 class in fall 2013. This offering is inspired by 6.037 "Zombies drink caffeinated 6.001", a similar alumni-led accelerated version of 6.001 offered after its cancellation. (Unlike 6.001, 6.828 is not cancelled and is expected to be offered again in fall 2014; conversely, we expect not to offer caffeinated 6.828 next IAP.)

Course content

Quoting the course catalog: "6.828 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."

Caffeinated 6.828 will be structured around 4 lab assignments, due approximately weekly, plus an optional, ungraded open-ended assignment. The first three weeks of lectures will cover the material needed for these assignments; the final few lectures will cover additional current topics in operating systems research.

Relative to the fall 2012 schedule, we will cover, in accelerated form, roughly the first nine lectures and first four labs within the first three weeks.

Should I take this class?

Prerequisites for the standard offering of 6.828 are 6.033, 6.170, and (recursively) 6.004. In other words, we expect a working familiarity with computer systems and architecture as well as practice with large-scale programming projects.

We expect you either to know C already or to be able to pick it up quickly. We will be (briefly) teaching x86 assembly in lecture, and the the references page has links to further material.

As mentioned above, expect the workload of this class to be significant. Even without the accelerated schedule, 6.828 during the semester is a significant commitment. The labs will take time to complete and to debug, so if you cannot commit to working on them every day, we do not recommend taking this class.

We encourage anyone that has the opportunity to take the full 6.828 at a later date to do so. You are permitted to take this class for credit also take 6.828 in the future, if you would like. While the initial labs will be similar, the additional topics and coverage of research papers as well as the full-fledged final project -- not to mention the additional time allowed to debug and understand the initial labs -- will be invaluable.

This class is available for 6 general elective credits (pass/no-record) under course number 6.S184. Members of the MIT community who want to follow along are welcome to attend lecture, provided that there is space; we strongly encourage you to follow along with the lab assignments. We are happy to grade and provide feedback for students not taking the class for credit, although students registered for credit will have priority.


We will distribute assignments on the course web site. All announcements will be posted on the course web site in addition to being sent via email.

Grading policy

Grades in Caffeinated 6.828 will be awarded P/NR, based on the results the lab assignments. You must complete all lab assignments satisfactorily to receive a passing grade. There will be an optional, but highly recommended, final mini-project. There will be no exam.


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.

There will be no late hours. IAP leaves us with a very tight schedule. Please contact the course staff if you have extenuating cirumstances.

Code reviews

Due to time constraints, there will be no peer code reviews.


Other than the lab exercises, all homework assignments are highly recommended, but will not count towards the final grade.


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 (such as your Athena Public directory).

Class meetings

Lectures will be held on Tuesday and Thursday from 7:00pm to 9:00pm in 37-212.


There will be an optional recitation on C on Saturday, January 11, 2014 from 1pm-2pm in the W20-5 Lounge.


Course mailing list:


  • Alex Chernyakhovsky
  • Geoffrey Thomas
  • Kata (Patrick Hurst)
  • Adam Glasgall
  • Nathan Arce
  • Paul Quimby
  • Alex Dehnert

Office hours

  • Monday: 8pm-10pm, W20-5 Lounge (Alex Chernyakhovsky, Nathan Arce)
  • Tuesday: none
  • Wednesday: 2pm-4pm, 32-G9 (Kata); 6pm-8pm, W20-5 Lounge (Adam Glasgall)
  • Thursday: 2pm-4pm, 32-G9 (Kata)
  • Friday: none
  • Saturday: 1pm-3pm, W20-5 Lounge (Geoffrey Thomas)
  • Sunday: none