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. C Crash Course 2 (Virtual only; no class)

Topics: 3. man,asprintf,free,assert

Coursebook Reading: Chapter 3

See Lecture 3 on ClassTranscribe or here

4. A day at the C side: C Crash Course 3

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 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 on ClassTranscribe

8. Thanks for the heap memory

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

Coursebook Reading: Chapter 5

See lecture on ClassTranscribe

9. Memory allocators I

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

Coursebook Reading: Chapter 5

See lecture on ClassTranscribe

10. Memory allocators II

Topics: Memory allocators part 2.

Coursebook Reading: Chapter 5

See lecture on ClassTranscribe

11. Threads

Topics: Introducing pthreads. stacks. Concurrency programming gotchas.

Coursebook Reading: Chapter 6

See lecture 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 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 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 on ClassTranscribe

15. Critical Section Problem

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

Coursebook Reading: Chapter 7

See lecture on ClassTranscribe.

16. Condition Variables II

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

Coursebook Reading: Chapter 7

See lecture on ClassTranscribe.

17. Producer Consumers. Barriers

Topics: Implementing a barrier. Implementing Producer Consumer.

Coursebook Reading: Chapter 7

See lecture on ClassTranscribe

18. Reader Writer and Deadlock - Part 1

Topics:

Coursebook Reading: Chapter 8

See lecture on ClassTranscribe

19. Reader Writer and Deadlock - Part 2

Topics:

Coursebook Reading: Chapter 8

See lecture on ClassTranscribe

20. Dining Philosophers

Topics: The Dining Philosophers problem

Coursebook Reading: Chapter 8

See lecture on ClassTranscribe.

21. Page tables and IPC

Topics: Virtual memory

Coursebook Reading: Chapter 9

See lecture on ClassTranscribe.

22. Pipes and seeking

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

Coursebook Reading: Chapter 9

See lecture on ClassTranscribe

Surprize Quiz for Angrave

Topics: Bring your discussion questions

Coursebook Reading: Chapter

No class - Spring Break

Topics:

Coursebook Reading: Chapter

No class - Spring Break

Topics:

Coursebook Reading: Chapter

No class - Spring Break

Topics:

Coursebook Reading: Chapter

23. Files. Pipes and seeks part 2.

Topics: Working with files

Coursebook Reading: Chapter 9

See lecture on ClassTranscribe

24. UDP/TCP

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

Coursebook Reading: Chapter 11

See lecture on ClassTranscribe

25. TCP Client

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

Coursebook Reading: Chapter 11

See lecture on ClassTranscribe

26. TCP Server

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

Coursebook Reading: Chapter 11

See lecture on ClassTranscribe

27. Files

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

Coursebook Reading: Chapter 12

See lecture on ClassTranscribe.

28. Files 2

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

Coursebook Reading: Chapter 12

See lecture on ClassTranscribe.

29. Files 3

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

Coursebook Reading: Chapter 12

See lecture on ClassTranscribe.

30. Files 4

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

Coursebook Reading: Chapter 12

See lecture on ClassTranscribe.

31. Files-5

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

Coursebook Reading: Chapter 12

See lecture on ClassTranscribe.

No class

Topics:

Coursebook Reading: Chapter

32. Scheduling and Scheduling Algorithms

Topics: Scheduling examples

Coursebook Reading: Chapter 10

See lecture on ClassTranscribe.

33. Epoll

Topics: Intro to select, poll, and epoll

Coursebook Reading: Chapter 11

See lecture on ClassTranscribe

34. Disks and Signals

Topics: Disks and Signals

Coursebook Reading: Chapter 13

See lecture on ClassTranscribe

35. Working with Signals

Topics: Working with Signals

Coursebook Reading: Chapter 13

See lecture on ClassTranscribe

36. Networking Protocols

Topics: TCP handshakes, QUIC, HTTP/1.1

Coursebook Reading: Chapter 11

See lecture on ClassTranscribe

37. RPC

Topics: Remote Procedure Calls

Coursebook Reading: Chapter 11

See lecture on ClassTranscribe.

38. Systems Concepts Review

Topics: Systems Concepts Review

Coursebook Reading: Chapter 15

See lecture on ClassTranscribe

39. Security

Topics:

Coursebook Reading: Chapter 14

See lecture on ClassTranscribe

40. Course Review

Topics:

Coursebook Reading: Chapter 15

See lecture on ClassTranscribe

Guest Lecture (NCSA)

Topics:

Coursebook Reading: Chapter