Live Exploration Schedule

Prof. Angrave will be hosting live non-lectures Mondays and Wednesdays 9:30-10:45am CT on Zoom (see Piazza for link).

Asynchronous Schedule

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

See Lecture 2 on ClassTranscribe

3. C Crash Course 2

Topics: 3. man,asprintf,free,assert

Coursebook Reading: Chapter 3

See Lecture 3 on ClassTranscribe

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

Break

Topics:

Coursebook Reading: Chapter

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 1

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

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

Break

Topics:

Coursebook Reading: Chapter

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.

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 (if time)

Topics:

Coursebook Reading: Chapter 14

See lecture on ClassTranscribe

40. Misc.

Topics:

Coursebook Reading: Chapter 15

See lecture on ClassTranscribe