Practicum in Operating Systems

Course Homepage

Head TA

Robert Escriva [escriva at cs]

Office: Upson 4126

Office Hours

Robert's office hours will be held in CSUGLab on the following days and times:



December 7, 2010
An important change has been made to slide 15. It is also addressed in the FAQ.
October 25, 2010
The FAQ for project 3 has been updated with an important clarification.
October 22, 2010

The FAQ for project 3 has been updated. I also updated the slides from the project 3 lecture.

The union should go within the structure on the previous slide, replacing the variables contained in the union. It is not a replacement for the struct.

October 14, 2010
I will be holding additional "office hours" after Monday's class. I'm going to be answering questions about project two, as well as try to focus on how to write tests to bring out all the bugs in your project 2/3.
September 29, 2010

Some people have experience occasional, unexplained crashes in Windows' system calls (including printf). A new version of project 2 has been released. If you feel you're affected by this, grab the new machineprimitives.c file.

This only pertains to 64-bit users, as 32-bit users are unaffected.

September 27, 2010
There was an error in the first release of Project 2. If you see a message about run-time check failure #2, you should get the newest version. You only need the interrupts.c file.
September 22, 2010

The FAQ has been updated with questions pertinent to Project 1.

Please check this FAQ for any questions you may have.

Due Dates

All materials will be published via CMS.

Project 1: Non-Preemptive Multitasking (FAQ)
September 22, 2010 at 11:59pm
Project 2: Preemptive Multitasking (FAQ)
September 29, 2010 at 11:59pm
Project 3: Unreliable Networking (FAQ)
October 22, 2010 at 11:59pm
Project 4: Reliable Networking (FAQ)
November 1, 2010 at 11:59pm
Project 5: Ad-Hoc Networking
November 23, 2010 at 11:59pm
Project 6: A Simple Filesystem (FAQ)
December 8, 2010 at 11:59pm

Lecture Schedule

August 30, 2010
September 13, 2010

Project 1: Non-Preemptive Multitasking

Implement a simple thread implementation and scheduler, synchronization primitives, and queues. Use these to build a simple application.

September 20, 2010

Project 2: Preemptive Multitasking

Use clock interrupts to add preemption to your thread implementation and write a more complex scheduler. Additionally, add alarm and sleep functionality to your thread implementation.

September 27, 2010

Project 3: Unreliable Networking

Implement a network interface multiplexing protocol a'la UDP.

October 4, 2010
Questions on Project 3.
October 11, 2010
Questions on Project 3.
October 18, 2010
Questions on Project 3.
October 25, 2010

Project 4: Reliable Networking

Build a reliable transport protocol a'la TCP.

November 1, 2010
Questions on Project 4.
November 8, 2010

Project 5: Ad-Hoc Networking

Implement Dynamic Source Routing for your network stack.

November 15, 2010
Questions on Project 5.
November 22, 2010
Project 6: Implement a simple file system for minithreads.
December 6, 2010
Questions on Project 6.
Powered by Firmant