COMP 211-002: Systems Fundamentals, Spring 2023

Key Details

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

Schedule

Class #MaterialsDateAssignmentReadings
1recording, slidesJan 10
2recording, slidesJan 12Assignment 1 ReleasedIntro through Sec. 1.2 of The C Programming Language (13 pgs)
Sec. 5.7 of The GNU C Reference Manual (1 pg)
3recording, slidesJan 17Sec. 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)
4recording, slidesJan 19Sec. 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)
5recording, slidesJan 24Sec. 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)
6recording, slidesJan 26Assignment 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)
7recording, slidesJan 31Sec. 2.7, 5.1, 5.3, and 5.5 of The C Programming Language (13 pgs)
8recording, slidesFeb 2Sec. 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)
9recording, slidesFeb 7Sec. 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)
10Midterm 1Feb 9Assignment 2 DueMidterm 1 Study Guide, Slides from TA-led Review Session, Exam Format Sample
11slides, no recordingFeb 16Sec. 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)
12slides, recordingFeb 21Assignment 3 ReleasedSec. 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)
13slides, recordingFeb 23Sec. 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)
14slides, recordingFeb 28Sec. 8.2.2–8.3, and 9 through 9.1 in Computer Systems: A Programmer's Perspective (11 pgs)
15slides, recordingMarch 2Sec. 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)
16slides, no recordingMarch 7Assignment 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)
17slides, recordingMarch 9Chap. 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)
18slides, recordingMarch 21Sec. 8.5 through 8.7 in Computer Systems: A Programmer's Perspective (1st Ed) (20 pgs)
19no slides, recordingMarch 23ACM Queue, Benchmarking "Hello, World!" (link)
Sec. 3.8 in The C Programming Language (1 pg)
20Midterm 2March 28Assignment 4 DueMidterm 2 Study Guide
21slides, no recordingMarch 30Assignment 5 Released
22slides, recordingApril 4Post-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)
23slides, recordingApril 11Sec. 10.4 (1st Ed) in Computer Systems: A Programmer's Perspective (3 pgs)
24slides, recordingApril 13Chap. 1 of Managing Projects with GNU Make (3rd Ed) (6 pgs)
25slides, recordingApril 18
26slides, recordingApril 20Sec. 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)
27slides, recordingApril 25Sec. 10.11 (1st Ed) in Computer Systems: A Programmer's Perspective (5 pgs)
28slides, recordingApril 27Research Interest Form, Assignment Improvement Points
29Final Exam at noonMay 2Assignment 5 DueFinal Exam Study Guide, Review Session Questions, Review Session Slides, Recording

Office Hours

Resources & Textbooks

Team 211