CS 241

Week

Monday

Wednesday

Friday

1/18 - 1/24

Monday

Martin Luther King, Jr. Day
No Classes

Wednesday

System Programming
1. Dive into System programming
Prelecture: HW0. The lecture will assume you've made significant progress on this homework

Friday

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.

1/25 - 1/31

Monday

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

Wednesday

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

Friday

Fork and wait
5. fork and waitpid

2/1 - 2/7

Monday

Forking Processes
6. The fork-exec-wait pattern

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.

2/8 - 2/14

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.

2/15 - 2/21

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).

2/22 - 2/28

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.

2/29 - 3/6

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

3/7 - 3/13

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

3/14 - 3/18

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

No lecture
No lecture

3/19 - 3/27

  • Spring Break: There will be no office hours or staff on piazza.

Monday

SPRING BREAK!

Wednesday

SPRING BREAK!

Friday

SPRING BREAK!

3/28 - 4/3

Monday

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

Wednesday

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

Friday

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

4/4 - 4/10

Monday

Scheduling-2. epoll
29. Scheduling simulator. epoll

Wednesday

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

Friday

Files-2
31. file meta data

4/11 - 4/17

Monday

Files-3
32. Dirs and symlinks

Wednesday

Files-4
33. Virtual f/s

Friday

Files-5
34. Memory mapped files

4/18 - 4/23

Monday

Signals
35. POSIX Signals Revisited

Wednesday

Protocols
36. Protocols and Serialization

Friday

RPC
37. RPC