Instructor: Joshua Bakita
Location: 201 Chapman Hall, Tues/Thurs 2:00-3:15
Contact Email: s23-comp-211-002-staff-cs@cs.unc.edu
Description: This course is a first step into the wild and wonderful world of systems programming, primarily in C. Your main takeaways from this class should be fundamental principles about how programs and the systems they run on work (particularly how they manage memory), no matter what language you use.
Syllabus
Piazza (See Sakai for access code.)
Gradescope
Sakai
Class # | Materials | Date | Assignment | Readings |
---|---|---|---|---|
1 | recording, slides | Jan 10 | ||
2 | recording, slides | Jan 12 | Assignment 1 Released | Intro through Sec. 1.2 of The C Programming Language (13 pgs) Sec. 5.7 of The GNU C Reference Manual (1 pg) |
3 | recording, slides | Jan 17 | Sec. 2.1–2.1.6 and 2.1.8–2.1.10 of Computer Systems: A Programmer's Perspective (1st Ed) (7 pgs) Sec. 2.2–2.2.1 and 2.2.4–2.2.7 of Computer Systems: A Programmer's Perspective (1st Ed) (19 pgs) Sec. 2.1, 2.2 of The C Programming Language (2 pgs) | |
4 | recording, slides | Jan 19 | Sec. 7.2, 1.6, and 1.9 of The C Programming Language (7 pgs) Sec. 2.5.5 of The GNU C Reference Manual (1 pg) Sec. 12.12 through 12.12.6 of The GNU C Library Reference Manual (10 pgs) Sec. 1 through 5 of ANSI Standard X3.4-1977 (5 pgs) | |
5 | recording, slides | Jan 24 | Sec. 2.3, 6.1-6.5, and 6.7-6.9 of The C Programming Language (27 pgs) Sec. 2.2 through 2.4 of The GNU C Reference Manual (9 pgs) | |
6 | recording, slides | Jan 26 | Assignment 1 Due Assignment 2 Released | Sec. 1.4 of The C Programming Language (1 pg) Sec. 8.2–8.2.1 of Programming Systems: A Programmer's Perspective (1st Ed) (2 pg) Sec. 20.1 of The GNU C Library Reference Manual (2 pgs) Optional: Sec. III-A of Dissecting the CUDA scheduling hierarchy... (1/4 pg) Optional: Videos in Resources on bytes, two's complement, and endianness (38.5 min) |
7 | recording, slides | Jan 31 | Sec. 2.7, 5.1, 5.3, and 5.5 of The C Programming Language (13 pgs) | |
8 | recording, slides | Feb 2 | Sec. 2.11, 5.2, 5.6, 5.10, 7.1(note), 7.5, 7.6, and B1.6 of The C Programming Language (15 pgs) Sec. 6.1.2 (first half, stop at practice problem 6.3) in Computer Systems... (1st Ed) (5 pgs) | |
9 | recording, slides | Feb 7 | Sec. 2.9 and 4.11 of The C Programming Language (7 pgs) Review Sec. 2.1.8–2.1.10 of Computer Systems: A Programmer's Perspective (1st Ed) (5 pgs) | |
10 | Midterm 1 | Feb 9 | Assignment 2 Due | Midterm 1 Study Guide, Slides from TA-led Review Session, Exam Format Sample |
11 | slides, no recording | Feb 16 | Sec. 2.2.2–2.2.3 of Computer Systems: A Programmer's Perspective (1st Ed) (8 pgs) Video in Resources on two's complement (16.25 min) Optional: Advanced Info on Structs/Unions: Sec. 3.9 in Computer Systems... (1st Ed) (7 pgs) | |
12 | slides, recording | Feb 21 | Assignment 3 Released | Sec. 5.11 and 7.8.5 of The C Programming Language (4 pgs) Sec. 10.9.1–10.9.2 of Computer Systems: A Programmer's Perspective (1st Ed) (4 pgs) Sec. 3.2.3.1–3.2.3.5 in The GNU C Library Reference Manual (4 pgs) Sec. 5.4 in The C Programming Language (4 pgs) |
13 | slides, recording | Feb 23 | Sec. 1.10, and 4.3 through 4.6 of The C Programming Language (14 pgs) Sec. 1.2, 7.1, and 7.2 of Computer Systems: A Programmer's Perspective (1st Ed) (6 pgs) Sec. 2.9 of The GNU C Reference Manual (2 pgs) | |
14 | slides, recording | Feb 28 | Sec. 8.2.2–8.3, and 9 through 9.1 in Computer Systems: A Programmer's Perspective (11 pgs) | |
15 | slides, recording | March 2 | Sec. 14.1 (1st Ed) or 13.1 (2nd Ed) in UNIX Power Tools (3 pgs) Sec. 1 through 1.2 (7th Ed) in Operating System Concepts (9 pgs) | |
16 | slides, no recording | March 7 | Assignment 3 Due Assignment 4 Released | Sec. 1.3 (can skip to "Opening the Box") in Computer Organization and Design (13 pgs) Preface and Chapter 1 of Understanding Software Dynamics (12 pgs) |
17 | slides, recording | March 9 | Chap. 3 up through 3.4 in Understanding Software Dynamics (6 pgs) Intro text on a cache: Sec. 7.1 (3rd Ed) or 5.1 (4th Ed) in Computer Organization and Design (6 pgs) | |
18 | slides, recording | March 21 | Sec. 8.5 through 8.7 in Computer Systems: A Programmer's Perspective (1st Ed) (20 pgs) | |
19 | no slides, recording | March 23 | ACM Queue, Benchmarking "Hello, World!" (link) Sec. 3.8 in The C Programming Language (1 pg) | |
20 | Midterm 2 | March 28 | Assignment 4 Due | Midterm 2 Study Guide |
21 | slides, no recording | March 30 | Assignment 5 Released | |
22 | slides, recording | April 4 | Post-Midterm-2 Review Guide Sec. 7.4 in 3rd Ed (5.4 in 4th Ed) in Computer Organization and Design, but: - Skip after paragraph two of subsec. "Making Address Translation Fast: The TLB" - Skip subsec. "Integrating Virtual Memory, TLB, and Caches" - Skip subsec. "Handling TLB Misses and Page Faults" (24 pgs) Hover for notes on above reading: Note 1, Note 2, Note 3. Sec. 10.8 (1st Ed) of Computer Systems: A Programmer's Perspective (6 pgs) | |
23 | slides, recording | April 11 | Sec. 10.4 (1st Ed) in Computer Systems: A Programmer's Perspective (3 pgs) | |
24 | slides, recording | April 13 | Chap. 1 of Managing Projects with GNU Make (3rd Ed) (6 pgs) | |
25 | slides, recording | April 18 | ||
26 | slides, recording | April 20 | Sec. 11.1, 11.6, 11.7 (1st Ed) in Computer Systems: A Programmer's Perspective (5 pgs) Sec. 15 Intro through 15.2 in The GNU C Library Reference Manual (4 pgs) Optional IPC overview: Sec. 3.4 and 3.5 (7th Ed) in Operating System Concepts (11 pgs) | |
27 | slides, recording | April 25 | Sec. 10.11 (1st Ed) in Computer Systems: A Programmer's Perspective (5 pgs) | |
28 | slides, recording | April 27 | Research Interest Form, Assignment Improvement Points | |
29 | Final Exam at noon | May 2 | Assignment 5 Due | Final Exam Study Guide, Review Session Questions, Review Session Slides, Recording |
info gnu-c
and online (HTML, PDF).info libc
and online (HTML, PDF).make
. This book is freely available under the GNU Free Documentation License (3rd Edition PDF), but is also available in print.