SI 204 Spring 2017

This is the archived website of SI 204 from the Spring 2017 semester. Feel free to browse around; you may also find more recent offerings at my teaching page.


The lectures are broken into 10 units, as shown below. The notes will be updated after every class. These pages are also reachable from the main calendar.

  • Unit 1: Intro (Classes 1–2)
    Computers, language, and compilation, Unix and your VM, Hello world
  • Unit 2: Variables and If (Classes 3–6)
    Variables, Input/Output, Branching (if statement), Scope
  • Unit 3: Iteration (Classes 7–11)
    While loop, For loop, Nested loops
  • Unit 4: I/O (Classes 12–14)
    File I/O, printf, pointers, scanf
  • Unit 5: Functions (Classes 15–19)
    Prototype and definition, Top-down design, Pointer arguments, Recursion, Header files
  • Unit 6: Arrays (Classes 20–24)
    Memory layout, Strings, Allocation/deallocation, Arrays and functions, Nested arrays
  • Unit 7: Sorting and Searching (Classes 25–27)
    Selection Sort, Linear Search, Generic programming, qsort
  • Unit 8: Compound data (Classes 28–31)
    Structs, typedef, Bottom-up design, Nested structs, Structs and arrays
  • Unit 9: Linked lists (Classes 32–34)
    Nodes, List creation, List traversal, Recursion and iteration on linked lists
  • Unit 10: C++ (Classes 35–39)
    Streams, strings, new and delete, Overloading