#1: 8/22 - 9/1

System Programming

1. Dive into System programming

Prelecture: HW0. The lecture will assume you've made significant progress on this homework

How to crash in C

2. Dive into C programming

Prelecture: Intro to C Notes. The lecture will assume you've already reviewed and played with this material.

C Crash Course 2

3. man,asprintf,free,assert

#2: 9/4 - 9/8

Labor day

Labor day (no class)

C Crash Course 3

4. getenv, scanf, getline, fork

Fork and wait

5. fork and waitpid

#3: 9/11 - 9/15

Forking Processes

6. The fork-exec-wait pattern

Signals for Process Control

7. Introducing POSIX signals to suspend and kill child processes. SIGSTOP, SIGKILL, SIGINT

Signals 2

8. Advanced Signals

#4: 9/18 - 9/22

Thanks for the heap memory

How to build a memory allocator. Placement algorithms. Fragmentation.

Memory allocators I

Hone your pointer skills when writing malloc and free.

Memory allocators II

Memory allocators part 2.

#5: 9/25 - 9/29


Introducing pthreads. stacks. Concurrency programming gotchas.

Threads and mutex locks

Introducing pthreads. stacks, shared memory. creating and joining. Concurrency programming gotchas.

Mutexes and semaphores

Why we need Mutex locks and semaphores. Basic usage of pthread implementations. Common gotchas.

#6: 10/2 - 10/6

Condition Variables

Mutex and Condition Variable examples. How to implement a lock (The critical section problem).

Critical Section Problem

Incorrect attempts to solve the Critical Section Problem. Introduction to Condition Variables.

Condition Variables II

Condition Variables. Implementing a semaphore using a Condition Variable.

#7: 10/9 - 10/13

Reader Writer Problem

Implementing a barrier. Implementing the R/W Problem using Condition Variables.

Dining Philosophers

The Dining Philosophers problem


Introduction to Deadlock. Coffman conditions.

See Deadlock.

#8: 10/16 - 10/20

Page tables

Virtual memory


Scheduling examples


Scheduling simulator. epoll

See Scheduling.

#9: 10/23 - 10/27

Pipes and Files

POSIX Pipes and random access files

Pipes, Files, VM II

POSIX Pipes, files, memory II

See Files


ext2/3/4 filesystem. inode

See Files.

#10: 10/30 - 11/3


file meta data

See Files.



Errno. Networking Intro

Robust error handling. EINTR. Intro to TCP,UDP,IP

#11: 11/6 - 11/10


TCP/IP Header. IPv4 exhaustion. A web client

TCP Server

Passive sockets. The 4 server calls and what they do. Gotchas.

TCP Server II

Socket Programming Gotchas. Intro to scheduling

#12: 11/13 - 11/17



See UDP.



See UDP.



See RPC.

#13: 11/20 - 11/24

No lecture

Thanksgiving Break

No lecture

Thanksgiving Break

No lecture

Thanksgiving Break

#14: 11/27 - 12/1

Network Review



Memory mapped files


Virtual f/s

See VFS.