Schedule

Week 1: [08/24/2020] - [08/28/2020]

1. Welcome to System Programming

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

See Welcome

2. How to crash in C

2. Dive into C programming

See Lecture 2 on ClassTranscribe

3. C Crash Course 2

3. man,asprintf,free,assert

See Lecture 3 on ClassTranscribe

Week 2: [08/31/2020] - [09/04/2020]

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

4. getenv, scanf, getline, fork

See lecture 4 on ClassTranscribe

5. Fork and wait

5. fork and waitpid

See lecture 5 ClassTranscribe

6. Forking Processes

6. The fork-exec-wait pattern

See lecture on ClassTranscribe

Week 3: [09/07/2020] - [09/11/2020]

Labor Day (all-campus holiday)

Labor Day (all-campus holiday)

7. Signals for Process Control

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

See lecture on ClassTranscribe

8. Thanks for the heap memory

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

See lecture on ClassTranscribe

Week 4: [09/14/2020] - [09/18/2020]

9. Memory allocators I

Hone your pointer skills when writing malloc and free.

See lecture on ClassTranscribe

10. Memory allocators II

Memory allocators part 2.

See lecture on ClassTranscribe

11. Threads

Introducing pthreads. stacks. Concurrency programming gotchas.

See lecture on ClassTranscribe

Week 5: [09/21/2020] - [09/25/2020]

12. Threads, memory and mutex locks

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

See lecture on ClassTranscribe

13. Mutexes and semaphores

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

See lecture on ClassTranscribe.

14. Condition Variables

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

See lecture on ClassTranscribe

Week 6: [09/28/2020] - [10/02/2020]

15. Critical Section Problem

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

See lecture on ClassTranscribe.

16. Condition Variables II

Condition Variables. Implementing a semaphore using a Condition Variable.

See lecture on ClassTranscribe.

17. Reader Writer Problem

Implementing a barrier. Implementing the R/W Problem using Condition Variables.

See lecture on ClassTranscribe

Week 7: [10/05/2020] - [10/09/2020]

18. Dining Philosophers

The Dining Philosophers problem

See lecture on ClassTranscribe.

19. Deadlock

Introduction to Deadlock. Coffman conditions.

See lecture on ClassTranscribe.

20. Page tables and IPC

Virtual memory

See lecture on ClassTranscribe.

Week 8: [10/12/2020] - [10/16/2020]

21. Pipes and seeking

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

See lecture on ClassTranscribe

22. UDP/TCP

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

See lecture on ClassTranscribe

23. TCP Client

TCP/IP Header. IPv4 exhaustion. A web client

See lecture on ClassTranscribe

Week 9: [10/19/2020] - [10/23/2020]

24. TCP Server

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

See lecture on ClassTranscribe

25. Files

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

See lecture on ClassTranscribe.

26. Files 2

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

See lecture on ClassTranscribe.

Week 10: [10/26/2020] - [10/30/2020]

27. Files 3

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

See lecture on ClassTranscribe.

28. Files 4

File permissions, directories, file globbing, intro to RAID

See lecture on ClassTranscribe.

29. Files-5

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

See lecture on ClassTranscribe.

Week 11: [11/01/2020] - [11/05/2020]

30. Scheduling and Scheduling Algorithms

Scheduling examples

See lecture on ClassTranscribe.

31. Epoll

Intro to select, poll, and epoll

See lecture on ClassTranscribe

32. Disks and Signals

Disks and Signals

See lecture on ClassTranscribe

Week 12: [11/08/2020] - [11/12/2020]

33. Working with Signals

Working with Signals

See lecture on ClassTranscribe

34. Networking Protocols

TCP handshakes, QUIC, HTTP/1.1

See lecture on ClassTranscribe

35. RPC

Remote Procedure Calls

See lecture on ClassTranscribe.

Week 13: [11/15/2020] - [11/19/2020]

36. Systems Concepts Review

Systems Concepts Review

See lecture on ClassTranscribe

37. Misc.

See lecture on ClassTranscribe

No lecture

Week 14: [11/22/2020] - [11/26/2020]

Fall Break

Fall Break

Fall Break

Week 15: [11/29/2020] - [12/03/2020]

No lecture

No lecture

No lecture

Week 16: [12/06/2020] - [12/10/2020]

No lecture

No lecture

Last day of classes at UIUC