CS 241: Systems Programming

DateTopic and reading
Week 1
Mon, Feb 03Introduction [slides]
No reading
Wed, Feb 05Introduction to UNIX and the shell [slides] [exercises]
Reading
  • LCL. Chapters 1–5.
Fri, Feb 07More shell [slides] [exercises]
Reading
  • LCL. Chapters 6–10, chapter 8 is optional.
Week 2
Mon, Feb 10Environment and expansion [slides] [exercises]
Reading
  • LCL. Chapter 11 and optionally chapter 13.
Wed, Feb 12Version control and Git [slides] [exercises]
Reading
  • Git book. Sections 1.1, 1.3, 1.6, 1.7, 2.1, and 2.2.
Fri, Feb 14Shell scripting 1 [slides] [exercises]
Reading
  • LCL. Chapters 24–27.
Week 3
Mon, Feb 17Shell scripting 2 [slides] [exercises]
Reading
  • LCL. Chapters 29, 31–33.
Wed, Feb 19Introduction to C [slides] [exercises]
Reading
  • CJP. Chapters 1, 2, and section 3.8.
  • MC. Level 1’s ‘Buckle up’ and chapter 7 through section 7.1.
Fri, Feb 21More C [slides] [exercises]
No reading
Week 4
Mon, Feb 24Structure of C programs [slides] [exercises]
Reading
  • CJP. Chapter 4 through section 4.5, skip section 4.5.1.
Wed, Feb 26Make and compiling [slides] [exercises]
Reading
Fri, Feb 28Bits and bytes 1 [slides] [exercises]
Reading
  • MC. Section 5.2 through 5.5, ignore the parts about complex. Read 5.7 if you’re feeling ambitious.
Week 5
Mon, Mar 02Bits and bytes 2 [slides] [exercises]
Reading
Wed, Mar 04Pointers and arrays [slides]
Reading
  • CJP. Section 3.1 and Chapter 5 through Section 5.3.
  • MC. Section 6.1 through 6.1.4, Chapter 11 through Section 11.1, and Section 11.3.
Fri, Mar 06Strings [slides] [exercises]
Reading
  • CJP. Sections 3.2, 5.4, and 5.5.
Week 6
Mon, Mar 09Enums and structs [slides] [exercises]
Reading
  • CJP. Sections 3.3, 3.4, and 5.6.
Wed, Mar 11Dynamic memory allocations [slides] [exercises]
Reading
  • MC. Section 13.1.
Fri, Mar 13Debugging [exercises]
Reading
Week 7
Mon, Mar 16No class: COVID-19
No reading
Wed, Mar 18No class: COVID-19
No reading
Fri, Mar 20No class: COVID-19
No reading
Week 8
Mon, Mar 23No class: spring break
No reading
Wed, Mar 25No class: spring break
No reading
Fri, Mar 27No class: spring break
No reading
Week 9
Mon, Mar 30Linked lists [slides] [exercises]
Reading
Wed, Apr 01File I/O in C [slides] [exercises]
No reading
Fri, Apr 03Binary and Formatted I/O [slides] [exercises]
Reading
  • MC. Sections 8.1 and 8.3.
Week 10
Mon, Apr 06Multi-dimensional arrays [slides] [exercises]
Reading
  • CJP. Sections 5.7 and 5.8.
Wed, Apr 08Regular expressions I [slides]
Reading
  • LCL. Chapter 19.
Fri, Apr 10Regular expressions II [slides] [exercises]
No reading
Week 11
Mon, Apr 13Function pointers [slides] [exercises]
Reading
  • CJP. Section 5.11.
Wed, Apr 15System calls I [slides] [exercises]
Reading
Fri, Apr 17System calls II [slides] [exercises]
Reading
Week 12
Mon, Apr 20UNIX Signals [slides] [exercises]
Reading
Wed, Apr 22Static Libraries [slides] [exercises]
Reading
  • I.L. Taylor. Linkers. Read Linkers parts 1, 2, and 3.
Fri, Apr 24Dynamic Libraries [slides] [exercises]
Reading
Week 13
Mon, Apr 27Huffman compression [slides]
No reading
Wed, Apr 29Huffman's algorithm (continuing Monday's lecture)
No reading
Fri, May 01Introduction to networking
Reading
Week 14
Mon, May 04Variadic functions [slides] [exercises]
No reading
Wed, May 06Advanced Git [slides] [exercises]
No reading
Fri, May 08Memory unsafety: Introduction to control flow hijacking [slides]
No reading