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. Producer Consumers. Barriers

Implementing a barrier. Implementing Producer Consumer.

See lecture on ClassTranscribe

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

18. Reader Writer and Deadlock - Part 1

See lecture on ClassTranscribe

19. Reader Writer and Deadlock - Part 1

See lecture on ClassTranscribe

20. Dining Philosophers

The Dining Philosophers problem

See lecture on ClassTranscribe.

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

21. Page tables and IPC

Virtual memory

See lecture on ClassTranscribe.

22. Pipes and seeking

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

See lecture on ClassTranscribe

23. Files. Pipes and seeks part 2.

Working with files

See lecture on ClassTranscribe

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

24. UDP/TCP

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

See lecture on ClassTranscribe

25. TCP Client

TCP/IP Header. IPv4 exhaustion. A web client

See lecture on ClassTranscribe

26. TCP Server

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

See lecture on ClassTranscribe

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

27. Files

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

See lecture on ClassTranscribe.

28. Files 2

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

See lecture on ClassTranscribe.

29. Files 3

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

See lecture on ClassTranscribe.

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

30. Files 4

File permissions, directories, file globbing, intro to RAID

See lecture on ClassTranscribe.

31. Files-5

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

See lecture on ClassTranscribe.

32. Scheduling and Scheduling Algorithms

Scheduling examples

See lecture on ClassTranscribe.

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

33. Epoll

Intro to select, poll, and epoll

See lecture on ClassTranscribe

34. Disks and Signals

Disks and Signals

See lecture on ClassTranscribe

35. Working with Signals

Working with Signals

See lecture on ClassTranscribe

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

36. Networking Protocols

TCP handshakes, QUIC, HTTP/1.1

See lecture on ClassTranscribe

37. RPC

Remote Procedure Calls

See lecture on ClassTranscribe.

38. Systems Concepts Review

Systems Concepts Review

See lecture on ClassTranscribe

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

Fall Break

Fall Break

Fall Break

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

39. Misc.

See lecture on ClassTranscribe

No lecture

No lecture

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

No lecture

No lecture

No lecture

Last day of classes at UIUC