CS 241: System Programming Tux

Monday

Wednesday

Friday

#1: 1/16 - 1/20

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.

#2: 1/23 - 1/27

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

#3: 1/30 - 2/3

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.

#4: 2/6 - 2/10

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: 2/13 - 2/17

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

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

#6: 2/20 - 2/24

Monday

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

Wednesday

Condition Variables II
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: 2/27 - 3/3

Monday

Reader Writer Problem & Deadlock
18. Implementing Reader Write. Introduction to Deadlock.

Wednesday

Deadlock
19. Introduction to Deadlock. Coffman conditions.
See Deadlock.

Friday

Dining Philosophers
20. The Dining Philosophers problem

#8: 3/6 - 3/10

Monday

Page tables
21. Virtual memory

Wednesday

Pipes and Files
22. POSIX Pipes and random access files

Friday

No lecture
No lecture for EoH

#9: 3/13 - 3/17

Monday

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

Wednesday

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

Friday

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

#10: 3/20 - 3/24
  • Spring Break: There will be no office hours or staff on piazza.

Monday

SPRING BREAK!

Wednesday

SPRING BREAK!

Friday

SPRING BREAK!

#11: 3/27 - 3/31

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
28. Scheduling examples

#12: 4/3 - 4/7

Monday

Scheduling-2
29. Scheduling simulator. epoll
See Scheduling.

Wednesday

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

Friday

Files-2
31. file meta data
See Files.

#13: 4/10 - 4/14

Monday

Files-3
32. Permissions

Wednesday

Files-4
33. Virtual f/s
See VFS.

Friday

Files-5
34. Memory mapped files

#14: 4/17 - 4/21

Monday

RPC
35. RPC
See RPC.

Wednesday

UDP
36. UDP
See UDP.

Friday

Misc
36. Misc O/S Concepts
See Everything.