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
NOTES: 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
NOTES: C++ Basics, NOTES: I/O in C++, NOTES: 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
NOTES: STL NOTES: STL NOTES: C++ I/O, NOTES: string class

Day 26 (27-Oct) Day 27 (29-Oct) Day 28 (31-Oct)
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
NOTES: C++ Basics
NOTES: C++ Dynamic Memory
NOTES: C++ classes NOTES: C++ classes

Day 29 (3-Nov) Day 30 (5-Nov) Day 31 (7-Nov)
Videos Function overloading
Operator overloading
Initialization and assignment
Rule of 3
Template functions
Template classes
Slides Function overloading
Operator overloading
Initialization and assignment
Rule of 3
Template functions
Template classes
Recap
Questions
Day 29 Day 30 Day 31
Exercise Exercise 29 Exercise 30 Exercise 31
Additional
Resources
NOTES: Overloading NOTES: Function & Class Templates

Day 32 (10-Nov) Day 33 (12-Nov) Day 34 (14-Nov)
Videos Inheritance
Polymorphism
Dynamic dispatch
Function hiding & abstract classes
Virtual destructors
OO Design & UML Diagrams
Slides Inheritance
Polymorphism
Dynamic dispatch
Function hiding & abstract classes
Virtual destructors
OO Design & UML Diagrams
Recap
Questions
Day 32 Day 33 Day 34
Exercise Exercise 32 Exercise 33 Work on final project
Additional
Resources
NOTES: Inheritance & Polymorphism NOTES: Inheritance & Polymorphism NOTES: Object Oriented Design

Day 35 (17-Nov) Day 36 (19-Nov) Day 37 (21-Nov)
Videos Enumerated Types
Exceptions
Customized Exceptions
N/A Iterators
Slides Enumerated Types
Exceptions
Customized Exceptions
N/A Iterators
Recap
Questions
Day 35 N/A Day 37
Exercise Exercise 35 Work on final project Exercise 37
Additional
Resources
NOTES: Error & Exception Handling

Day 38 (1-Dec) Day 39 (3-Dec) Day 40 (5-Dec)
Videos Lambdas N/A N/A
Slides Lambdas N/A N/A
Recap
Questions
Day 38 N/A N/A
Exercise Work on final project Work on final project Work on final project
Additional
Resources
Lambdas & Miscellany Final Exam Review Questions Final Exam Review Solutions