The evaluation for this course includes a number of low-level C programming tasks that will help you become familiar with the development of OS internals and the lowest-level userspace software that interacts directly with the kernel.

Asynchronous I/O (due 3 Apr 2017)

For this assignment, you will explore the trade-off between the simplicity of synchronous I/O and the performance of asynchronous I/O.

Process scheduling (due 22 Mar 2017)

In this assignment, you will implement more sophisticated scheduling on your Arduino board.

Process switching (due 7 Feb 2017)

In this assignment, you will start to implement the core of a task scheduler for your Arduino Uno board.

Assignment 1 (due 20 Jan 2017)

In this assignment, you will review/practice/learn how to write object-oriented software in pure C.

Arduino tools

For assignments that use the Arduino platform, you will want to install the Arduino toolchain and the Arduino-Makefile project, which facilitates building pure C-language projects for the Arduino.


We will use Subversion to submit assignments. You will receive credentials in the second week of lectures.