Week

Monday

Wednesday

Friday

#1: 8/22 - 8/26
Announcements will appear here ...

Monday

System Programming
1. Dive into System programming
Prelecture: HW0.

Wednesday

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.

Friday

C Crash Course 2
3. man,asprintf,free,assert

#2: 8/29 - 9/2
Announcements will appear here ...

Monday

C Crash Course 3
4. getenv, scanf, getline, fork

Wednesday

Fork and wait
5. fork and waitpid

Friday

Forking Processes
6. The fork-exec-wait pattern

#3: 9/5 - 9/9
Announcements will appear here ...

Monday

Labor day
Labor day (no class)

Wednesday

Signals for Process Control
7. Introducing POSIX signals to suspend and kill child processes. SIGSTOP, SIGKILL, SIGINT

Friday

Thanks for the heap memory
8. How to build a memory allocator. Placement algorithms. Fragmentation.

#4: 9/12 - 9/16
Announcements will appear here ...

Monday

Memory allocators I
9. Hone your pointer skills when writing malloc and free.

Wednesday

Memory allocators II
10. Memory allocators part 2.

Friday

Threads
11. Introducing pthreads. stacks. Concurrency programming gotchas.

#5: 9/19 - 9/23
Announcements will appear here ...

Monday

Threads and mutex locks
12. Introducing pthreads. stacks, shared memory. creating and joining. Concurrency programming gotchas.

Wednesday

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

Friday

Critical Section Problem
14. Mutex and Semaphore examples. How to implement a lock (The critical section problem).

#6: 9/26 - 9/30
Announcements will appear here ...

Monday

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

Wednesday

Condition Variables
16. Condition Variables. Implementing a semaphore using a Condition Variable.

Friday

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

#7: 10/3 - 10/7
Announcements will appear here ...

Monday

Producer Consumer. RW II
18. Implementing the Producer Consumer using semaphores. Analysis of Reader Writer solutions.

Wednesday

Deadlock
19. Introduction to Deadlock. Coffman conditions.

Friday

Dining Philosophers
20. The Dining Philosophers problem

#8: 10/10 - 10/14
Announcements will appear here ...

Monday

Page tables
21. Virtual memory

Wednesday

Pipes and Files
22. POSIX Pipes and random access files

Friday

Pipes, Files, VM II
23. POSIX Pipes, files, memory II

#9: 10/17 - 10/21
Announcements will appear here ...

Monday

Errno. Networking Intro
24. Robust error handling. EINTR. Intro to TCP,UDP,IP

Wednesday

TCP
25. TCP/IP Header. IPv4 exhaustion. A web client

Friday

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

#10: 10/24 - 10/28
Announcements will appear here ...

Monday

TCP Server II
27. Socket Programming Gotchas. Intro to scheduling

Wednesday

Scheduling. TCP Handshake
28. Scheduling examples. The SYN ACKSYN ACK Handshake of TCP

Friday

Scheduling-2. epoll
29. Scheduling simulator. epoll

#11: 10/31 - 11/4
Announcements will appear here ...

Monday

Files-1
30. ext2/3/4 filesystem. inode

Wednesday

Files-2
31. file meta data

Friday

Files-3
32. Dirs and symlinks

#12: 11/7 - 11/11
Announcements will appear here ...

Monday

Files-4
33. Virtual f/s

Wednesday

Files-5
34. Memory mapped files

Friday

Signals
35. POSIX Signals Revisited

#13: 11/14 - 11/18
Announcements will appear here ...

Monday

Protocols
36. Protocols and Serialization

Wednesday

RPC
37. RPC

Friday

Course review
38. Exam practice/review

#14: 11/21 - 11/25
Announcements will appear here ...

Monday

No lecture
Thanksgiving Break

Wednesday

No lecture
Thanksgiving Break

Friday

No lecture
Thanksgiving Break

#15: 12/5 - 12/9
Announcements will appear here ...

Monday

UDP
39. UDP and O/S Concepts

Wednesday

O/S Concepts
40. Operating System Concepts

Friday

No lecture
Exams start