Asynchronous Learning

For students who like to learn independently you can succeed in this course using the course book and pre-recorded videos on ClassTranscribe. The original lecture handouts and example code are here. (Note the minivideos are from when the course was called CS241).

Synchronous Learning

The schedule below is approximate and subject to change - it's an interactive class - so we may get a bit behind etc. The handouts and code examples for this semester are here

No class - MLK day

Topics: History of Martin Luther King Jr.

Coursebook Reading: Chapter

1. Welcome to System Programming

Topics: 1. HW0 using my Linux-In-The-Browser minicourse

Coursebook Reading: Chapter 3

See Welcome

2. How to crash in C

Topics: 2. Dive into C programming

Coursebook Reading: Chapter 3

Code and handouts are here. Alternatively see Lecture 2 on ClassTranscribe

3. (Remote only) A day at the C side

Topics: 3. Man pages, malloc, copying memory, streams

Coursebook Reading: Chapter 3

See lecture 3 on ClassTranscribe

4. Formatted input

Topics: 4. getenv, scanf, getline, fork

Coursebook Reading: Chapter 3

See lecture 4 on ClassTranscribe

5. Fork and wait

Topics: 5. fork and waitpid

Coursebook Reading: Chapter 4

See lecture 5 ClassTranscribe

6. Forking Processes

Topics: 6. The fork-exec-wait pattern

Coursebook Reading: Chapter 4

See lecture 6 on ClassTranscribe

7. Signals for Process Control

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

Coursebook Reading: Chapter 4

See lecture 7 on ClassTranscribe

8. Thanks for the heap memory

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

Coursebook Reading: Chapter 5

See lecture 8 on ClassTranscribe

9. Memory allocators I

Topics: Hone your pointer skills when writing malloc and free.

Coursebook Reading: Chapter 5

See lecture 9 on ClassTranscribe

10. Memory allocators II

Topics: Memory allocators part 2.

Coursebook Reading: Chapter 5

See lecture 10 on ClassTranscribe

11. Threads

Topics: Introducing pthreads. stacks. Concurrency programming gotchas.

Coursebook Reading: Chapter 6

See lecture 11 on ClassTranscribe

12. Threads, memory and mutex locks

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

Coursebook Reading: Chapter 6

See lecture 12 on ClassTranscribe

13. Mutexes and semaphores

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

Coursebook Reading: Chapter 7

See lecture 13 on ClassTranscribe.

14. Condition Variables

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

Coursebook Reading: Chapter 7

See lecture 14 on ClassTranscribe

15. Condition Variables

Topics: Introduction to Condition Variables.

Coursebook Reading: Chapter 7

See lecture 15 on ClassTranscribe.

16. Counting Semaphores.

Topics: Condition Variables. Implementing a semaphore using a Condition Variable.

Coursebook Reading: Chapter 7

See lecture 16 on ClassTranscribe.

17. Producer Consumers. Barriers

Topics: Implementing a barrier. Implementing Producer Consumer.

Coursebook Reading: Chapter 7

See lecture 17 on ClassTranscribe

18. Reader Writer and Deadlock - Part 1

Topics:

Coursebook Reading: Chapter 8

See lecture 18 on ClassTranscribe

19. Reader Writer and Deadlock - Part 2

Topics:

Coursebook Reading: Chapter 8

See lecture 19 on ClassTranscribe

20. Dining Philosophers

Topics: The Dining Philosophers problem

Coursebook Reading: Chapter 8

See lecture 20 on ClassTranscribe.

21. Page tables and IPC

Topics: Virtual memory

Coursebook Reading: Chapter 9

See lecture 21 on ClassTranscribe.

22. Pipes and seeking

Topics: Moving data using pipes, seekable streams, named pipes, behavior with fork

Coursebook Reading: Chapter 9

See lecture 22 on ClassTranscribe

23. Files. Pipes and seeks part 2.

Topics: Working with files

Coursebook Reading: Chapter 9

See lecture 23 on ClassTranscribe

No class - Spring Break

Topics:

Coursebook Reading: Chapter

No class - Spring Break

Topics:

Coursebook Reading: Chapter

No class - Spring Break

Topics:

Coursebook Reading: Chapter

24. UDP/TCP

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

Coursebook Reading: Chapter 11

See lecture 24 on ClassTranscribe

25. TCP Client

Topics: TCP/IP Header. IPv4 exhaustion. A web client

Coursebook Reading: Chapter 11

See lecture 25 on ClassTranscribe

26. TCP Server

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

Coursebook Reading: Chapter 11

See lecture 26 on ClassTranscribe

27. Files

Topics: ext2/3/4 filesystem, index nodes (inodes), superbocks, ZFS / BtrFS

Coursebook Reading: Chapter 12

See lecture 27 on ClassTranscribe.

28. Files 2

Topics: ext2/3/4 filesystem, index nodes (inodes), superbocks, ZFS / BtrFS

Coursebook Reading: Chapter 12

See lecture 28 on ClassTranscribe.

29. Files 3

Topics: Symbolic links, hard links, directory searching, intro to permissions

Coursebook Reading: Chapter 12

See lecture 29 on ClassTranscribe.

30. Files 4

Topics: File permissions, directories, file globbing, intro to RAID

Coursebook Reading: Chapter 12

See lecture 30 on ClassTranscribe.

31. Files-5

Topics: Redundant Array of Inexpensive Disks (RAID), the various RAID levels

Coursebook Reading: Chapter 12

See lecture 31 on ClassTranscribe.

32. Scheduling and Scheduling Algorithms

Topics: Scheduling examples

Coursebook Reading: Chapter 10

See lecture 32 on ClassTranscribe.

33. Epoll

Topics: Intro to select, poll, and epoll

Coursebook Reading: Chapter 11

See lecture 33 on ClassTranscribe

34. Disks and Signals

Topics: Disks and Signals

Coursebook Reading: Chapter 13

See lecture 34 on ClassTranscribe

35. Working with Signals

Topics: Working with Signals

Coursebook Reading: Chapter 13

See lecture 35 on ClassTranscribe

36. Networking Protocols

Topics: TCP handshakes, QUIC, HTTP/1.1

Coursebook Reading: Chapter 11

See lecture 36 on ClassTranscribe

37. RPC

Topics: Remote Procedure Calls

Coursebook Reading: Chapter 11

See lecture 37 on ClassTranscribe.

38. Systems Concepts Review

Topics: Systems Concepts Review

Coursebook Reading: Chapter 15

See lecture 38 on ClassTranscribe

39. Security / Miscellaneous

Topics:

Coursebook Reading: Chapter 14

See lecture 39 on ClassTranscribe

40. Course Review

Topics:

Coursebook Reading: Chapter 15

See lecture on ClassTranscribe

To be announced

Topics:

Coursebook Reading: Chapter