Schedule

Week 1: [01/22/2020] - [01/26/2020]

No class

MLK day

1. System Programming

1. Dive into System programming

Prelecture: HW0. The lecture will assume you've made significant progress on this homework

2. How to crash in C

2. Dive into C programming

Prelecture: Intro to C Notes. The lecture will assume you've already reviewed and played with this material.

Week 2: [01/29/2020] - [02/02/2020]

3. C Crash Course 2

3. man,asprintf,free,assert

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

4. getenv, scanf, getline, fork

5. Fork and wait

5. fork and waitpid

Week 3: [02/05/2020] - [02/09/2020]

6. Forking Processes

6. The fork-exec-wait pattern

7. Signals for Process Control

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

8. Signals 2

8. Advanced Signals

Week 4: [02/12/2020] - [02/16/2020]

9. Thanks for the heap memory

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

10. Memory allocators I

Hone your pointer skills when writing malloc and free.

11. Memory allocators II

Memory allocators part 2.

Week 5: [02/19/2020] - [02/23/2020]

12. Threads

Introducing pthreads. stacks. Concurrency programming gotchas.

13. Threads, memory and mutex locks

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

14. Mutexes and semaphores

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

Week 6: [02/26/2020] - [03/01/2020]

15. Condition Variables

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

16. Critical Section Problem

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

17. Condition Variables II

Condition Variables. Implementing a semaphore using a Condition Variable.

Week 7: [03/04/2020] - [03/08/2020]

18. Reader Writer Problem

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

19. Dining Philosophers

The Dining Philosophers problem

20. Deadlock

Introduction to Deadlock. Coffman conditions.

See Deadlock.

Week 8: [03/11/2020] - [03/15/2020]

21. Page tables and IPC

Virtual memory

22. Pipes and seeking

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

23. Chat with Professor Angrave

Week 9: [03/18/2020] - [03/22/2020]

No lecture

Spring Break - Piazza responses limited

No lecture

Spring Break - Piazza responses limited

No lecture

Spring Break - Piazza responses limited

Week 10: [03/25/2020] - [03/29/2020]

24. UDP/TCP

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

25. TCP Client

TCP/IP Header. IPv4 exhaustion. A web client

26. TCP Server

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

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

27. Files

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

See Files.

28. Files 2

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

See Files.

29. Files 3

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

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

30. Files 4

File permissions, directories, file globbing, intro to RAID

31. Files-5

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

32. Scheduling and Scheduling Algorithms

Scheduling examples

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

33. Epoll

Intro to select, poll, and epoll

34. Disks and Signals

Disks and Signals

35. Working with Signals

Working with Signals

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

36. Networking Protocols

TCP handshakes, QUIC, HTTP/1.1

37. RPC

Remote Procedure Calls

See RPC.

38. Systems Concepts Review

Systems Concepts Review

Week 15: [04/29/2020] - [05/03/2020]

39. Misc.

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

Week 17: [05/13/2020] - [05/17/2020]