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 (includes valgrind) NOTES: Storage Classes
NOTES: Struct Definitions
NOTES: Functions (includes rand())
NOTES: C I/O (includes binary files)
NOTES: C Basics (includes bitwise ops)

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
C Basics (includes typecasting)

Day 18 (7-Oct) Day 19 (9-Oct) Day 20 (11-Oct)
Videos More Linked lists N/A N/A
Slides More Linked lists N/A N/A
Recap
Questions
Day 18 N/A N/A
Exercise Exercise 18 Midterm Project Midterm Project
Additional
Resources
Midterm Review Questions
Fall 2019 Midterm Questions
Midterm Review Solutions
Fall 2019 Midterm Solutions

Day 21 (14-Oct) Day 22 (16-Oct) Fall Break (18-Oct)
Videos Midterm Exam Introduction to C++
C++ Strings
Fall Break (no class)!
Slides Midterm Exam Introduction to C++
C++ Strings
N/A
Recap
Questions
N/A Day 22 N/A
Exercise N/A Midterm Project N/A
Additional
Resources
C++ Basics, I/O in C++, C++ string class

Day 23 (21-Oct) Day 24 (23-Oct) Day 25 (25-Oct)
Videos Introduction to STL and templates STL Containers - map, pair, and tuple
STL Algorithms
C++ I/O stream and stringstream
Intro to Object Oriented Programming
Slides Introduction to STL and templates STL Containers - map, pair, and tuple
STL Algorithms
C++ I/O stream and stringstream
Intro to Object Oriented Programming
Recap
Questions
Day 23 Day 24 Day 25
Exercise Exercise 23 Exercise 24 Exercise 25
Additional
Resources
STL STL C++ I/O, string class

Day 26 (27-Oct) Day 27 (29-Oct) Day 28 (31-Nov)
Videos C++ Reference
C++ Dynamic Memory Allocation
C++ Classes
Default Constructors
Constructors and default arguments
Destructors
Slides References
Dynamic Memory Allocation
C++ Classes
Default Constructors
Constructors and default arguments
Destructors
Recap
Questions
Day 26 Day 27 Day 28
Exercise Exercise 26 Exercise 27 Exercise 28
Additional
Resources
C++ Basics
C++ Dynamic Memory
C++ classes C++ classes