Week 1

Some C/C++, and processes in Unix

Reading: Tanenbaum, Chapter 1
Read by Wednesday, March 31.
Getting started in C/C++
Due 11:59PM Monday, April 5.

Week 2

Intro to inter-process communication (IPC) and concurrency

Reading: Tanenbaum, Chapter 2
Read 2.1, 2.2, and 2.3 by Friday, April 9, and the rest by Monday, April 12.
A shared memory program
Due 11:59 PM Monday, April 12. Submit via the Courses system.

Week 3

More on processes.

Due on paper at 11:10 AM Monday, April 19
Problems 19, 20, 31, 35, 37, 40, 43, and 46 from Chapter 2 (pages 170-174).

Week 4

Unix support for writing a command shell. Memory.

Reading: Unix manual pages for dup2, pipe, exec, fork, getenv, wait, and open. Also, read about zombie processes (search the web for this topic).
Read by Friday, April 23.
Due 11:10 AM Wednesday, April 28
A little command shell.

Week 5

Threads. Memory.

Reading: Strategized Locking, Thread-safe Decorator, and Scoped Locking: Patterns and Idioms for Simplifying Multi-Threaded C++ Components, by Douglas C. Schmidt. Schmidt has a lot of resources for thinking about concurrent programming. Worth checking out if you're interested.
Read by Monday, April 26. Bring questions to class.
Reading: Tanenbaum, Chapter 3, with emphasis on 3.3.
Read by Friday, April 30.

Week 6

Midterm break, memory, and files.

Reading: Tanenbaum, Sections 4.1-4.3
Read by Friday, May 7.
Due on paper at 11:10 AM Wednesday, May 12
Problems 2, 5, 9, 12, 18, 19, 24, 28, and 35 from Chapter 3 (pages 248-254)
Problems 11, 12, 20, 21, 27, 28, and 32 from Chapter 4 (pages 325-328)

Week 7

Files and deadlock.

Reading: Tanenbaum, Chapter 6
Read by Monday, May 17.

Week 8

Linux. System calls, boot process, etc.

Adding a "hello, world" system call to Linux
Due on paper, 11:10 AM Wednesday, May 19.

Week 9

More Linux.

Some problems
Due on paper, 11:10 AM Monday, May 31.
Linux final project
Proposal due via e-mail by 11:10 AM Wednesday, June 2. Project due via the Courses system by 5:00PM Monday, June 7.