Course Material

You can click on the header for a specific week to expand or collapse the materials for that week.

Day 1 (25-Aug) Day 2 (27-Aug) Day 3 (29-Aug)
Videos Course intro
Linux, ugrad accounts
Hello world program in C
C basics
Editors (emacs)
Git
Submission workflow
Slides Course intro
Linux, ugrad accounts
Hello world program in C
C basics
Editors (emacs)
Git
Submission workflow
Recap
Questions
Day 1 Day 2 Day 3
Exercise Exercise 1 Exercise 2 Exercise 3-A
Exercise 3-B
Additional
Resources
NOTES: Unix
Unix/Linux Tutorial
Unix/Linux Reference Card
JSLinux
NOTES: C Basics
NOTES: I/O in C
Online C compiler
Emacs reference card
Interactive Vim tutorial
Git cheatsheet
Setting Up VS Code
GitHub Token & SSH key setup

Labor Day (1-Sep) Day 4 (3-Sep) Day 5 (5-Sep)
Videos NA Logical operators, control flow Arrays, ASCII
C strings
Slides NA Logical operators, control flow Arrays
C strings
Recap
Questions
NA Day 4 Day 5
Exercise NA Exercise 4 Exercise 5
Additional
Resources
NA NOTES: C Basics
NOTES: Control Structures
NOTES: C Arrays
NOTES: C Strings

Day 6 (8-Sep) Day 7 (10-Sep) Day 8 (12-Sep)
Videos File I/O, assert, math functions
Writing functions, command line arguments
Function declarations
Passing arrays to functions
Recursion
Separate compilation
Makefiles
Header guards
Slides File I/O, assert, math functions
Writing functions, command line arguments
Function declarations
Passing arrays to functions
Recursion
Separate compilation
Makefiles
Header guards
Recap
Questions
Day 6 Day 7 Day 8
Exercise Exercise 6 Exercise 7 Exercise 8
Additional
Resources
C Math Library Reference Discussion on `assert` NOTES: C Functions (including make) Makefile Reference/Tutorial

Day 9 (15-Sep) Day 10 (17-Sep) Day 11 (19-Sep)
Videos Multidimensional arrays, gdb Pointers Dynamic Memory Allocation
Valgrind
Slides Multidimensional arrays, gdb Pointers Dynamic Memory Allocation
Valgrind
Recap
Questions
Day 9 Day 10 Day 11
Exercise Exercise 9 Exercise 10 Exercise 11
Additional
Resources
GDB Cheat Sheet
NOTES: Storage classes (including gdb)
Binky the Pointer (Video)
NOTES: Pointers & Dynamic Memory Allocation (including valgrind)
valgrind --leak-check=full --show-leak-kinds=all

Day 12 (22-Sep) Day 13 (24-Sep) Day 14 (26-Sep)
Videos Pointer Arithmetic
Dynamic 2-D Arrays, Pointers and Const
Lifetime/Scope
Structs
Random number generation
Binary file I/O
Bitwise operations
Slides Pointer Arithmetic
Dynamic 2-D Arrays, Pointers and Const
Lifetime/Scope
Structs
Random number generation
Binary file I/O
Bitwise operations
Recap
Questions
Day 12 Day 13 Day 14
Exercise Exercise 12 Exercise 13 Exercise 14
Additional
Resources
NOTES: Pointers & Dynamic Memory Allocation (including valgrind) NOTES: Storage Classes
NOTES: Functions (including rand())

Day 15 (30-Sep) Day 16 (2-Oct) Day 17 (4-Oct)
Videos Number representation,
type conversion/casting
Linked lists
Slides Number representation,
type conversion/casting
Linked lists
Recap
Questions
Day 15 Day 16
Exercise Exercise 15 Exercise 16 Midterm Project
Additional
Resources