CSCI-GA.3250-001: Labs

Getting started


Lab number and topicDueWeight
Lab 1: x86 assembly, boot loader 09/12/14 TBD
Lab 2: Virtual memory 09/17/14 (part A), 09/26/14 (part B) TBD
Lab 3: Processes/environments (JOS) 10/3/14 (part A), 10/10/14 (part B) TBD
Lab 4: Multiprogramming and fork 10/17/14 (part A), 10/24/14 (part B), 10/31/14 (part C) TBD
Lab 5: File system, spawn, and shell 11/7/14 TBD
Lab 6: Network driver 11/14/14 (part A), 11/21/14 (part B) TBD
Lab 7: Final project 11/17/14 (proposals), 12/12/14 (code), 12/{15,16}/14 (demos) TBD

Is any kind of collaboration permitted on the labs?

No. You must do the labs on your own. Do not discuss code. The collaboration policy elaborates.


A crucial component of the course is the labs. You should expect these labs to require you to spend substantial time programming.

You will implement (the interesting pieces of) a real operating system that will boot on a PC. The operating system is called JOS. (JOS was developed at MIT and has been used in courses at several other schools, including UCLA, UT, and NYU.)

Though simple, JOS includes many key operating systems abstractions, including a bootloader, memory protection, memory relocation, and multiprogramming. JOS can be thought of as an exokernel, where the kernel implements a minimal set of core functionality that safely exports hardware resources to applications. These low-level kernel interfaces may be inconvenient for user processes to use directly, so user processes make use of a "library operating system" (libos) to abstract these low-level exported resources into more convenient programming abstractions.

In the JOS portion of the labs, the labs build on one another. Thus, it is important that you design, build, and test carefully at each step. Carelessness early will be costly later. There are not many lines of code to write on this project; take the time to understand each phase before moving to the next one.

Last updated: Tue Dec 09 19:47:59 -0500 2014 [validate xhtml]