CS 241: Systems Programming

DateTopic and reading
Week 1
Mon, Sep 02No class: Labor Day
No reading
Wed, Sep 04Introduction [slides]
No reading
Fri, Sep 06Introduction to UNIX and the shell [slides] [exercises]
Reading
  • LCL. Chapters 1–5.
Week 2
Mon, Sep 09More shell [slides]
Reading
  • LCL. Chapters 6–10, chapter 8 is optional.
Wed, Sep 11Environment and expansion [slides] [exercises]
Reading
  • LCL. Chapter 11 and optionally chapter 13.
Fri, Sep 13Version control and Git [slides] [exercises]
Reading
  • Git book. Sections 1.1, 1.3, 1.6, 1.7, 2.1, and 2.2.
Week 3
Mon, Sep 16Shell scripting 1 [slides] [exercises]
Reading
  • LCL. Chapters 24–27.
Wed, Sep 18Shell scripting 2 [slides] [exercises]
Reading
  • LCL. Chapters 29, 31–33.
Fri, Sep 20Introduction to C [slides]
Reading
  • CJP. Chapters 1, 2, and section 3.8.
  • MC. Level 1’s ‘Warning to experienced C programmers’ and chapter 7 through section 7.1.
Week 4
Mon, Sep 23More C [slides] [exercises]
No reading
Wed, Sep 25Structure of C programs [slides] [exercises]
Reading
  • CJP. Chapter 4 through section 4.5, skip section 4.5.1.
Fri, Sep 27Make and compiling [slides] [exercises]
Reading
Week 5
Mon, Sep 30Bits 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.
Wed, Oct 02Bits and bytes 2 [slides] [exercises]
Reading
Fri, Oct 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.
Week 6
Mon, Oct 07Strings [slides]
Reading
  • CJP. Sections 3.2, 5.4, and 5.5.
Wed, Oct 09No class: Yom Kippur
No reading
Fri, Oct 11Enums and structs [slides] [exercises]
Reading
  • CJP. Sections 3.3, 3.4, and 5.6.
Week 7
Mon, Oct 14Dynamic memory allocations [slides] [exercises]
Reading
  • MC. Section 13.1.
Wed, Oct 16Debugging [exercises]
Reading
Fri, Oct 18Linked lists [slides] [exercises]
Reading
Week 8
Mon, Oct 21No class: fall break
No reading
Wed, Oct 23No class: fall break
No reading
Fri, Oct 25No class: fall break
No reading
Week 9
Mon, Oct 28File I/O in C [slides] [exercises]
No reading
Wed, Oct 30Binary and Formatted I/O [slides] [exercises]
Reading
  • MC. Sections 8.1 and 8.3.
Fri, Nov 01Multi-dimensional arrays [slides] [exercises]
Reading
  • CJP. Sections 5.7 and 5.8.
Week 10
Mon, Nov 04Function pointers [slides] [exercises]
Reading
  • CJP. Section 5.11.
Wed, Nov 06Regular expressions I [slides]
Reading
  • LCL. Chapter 19.
Fri, Nov 08Regular expressions II [slides] [exercises]
No reading
Week 11
Mon, Nov 11System calls I [slides] [exercises]
Reading
Wed, Nov 13System calls II [slides] [exercises]
Reading
Fri, Nov 15UNIX Signals [slides] [exercises]
Reading
Week 12
Mon, Nov 18Static Libraries [slides] [exercises]
Reading
  • I.L. Taylor. Linkers. Read Linkers parts 1, 2, and 3.
Wed, Nov 20Dynamic Libraries [slides] [exercises]
Reading
Fri, Nov 22No class: Project work day
No reading
Week 13
Mon, Nov 25Huffman compression [slides]
No reading
Wed, Nov 27Introduction to networking
Reading
Fri, Nov 29No class: Thanksgiving break
No reading
Week 14
Mon, Dec 02Variadic functions [slides] [exercises]
No reading
Wed, Dec 04Advanced Git [slides] [exercises]
No reading
Fri, Dec 06Memory unsafety: Introduction to control flow hijacking [slides]
No reading
Week 15
Mon, Dec 09Project presentations I
No reading
Wed, Dec 11Project presentations II
No reading
Fri, Dec 13No class: end of instructional period
No reading