Course Material

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

NA Day 1 (21-Jan) Day 2 (23-Jan)
Videos NA Course intro
Linux, ugrad accounts
Hello world program in C
C basics
Slides NA Course intro
Linux, ugrad accounts
Hello world program in C
C basics
Recap
Questions
NA Day 1 Day 2
Exercise NA Exercise 1 Exercise 2
Additional
Resources
NA NOTES: Unix
Unix/Linux Tutorial
Unix/Linux Reference Card
JSLinux
NOTES: C Basics
NOTES: I/O in C
Online C compiler

Day 3 (26-Jan) Day 4 (28-Jan) Day 5 (30-Jan)
Videos Editors (emacs)
Git
Submission workflow
Logical operators, control flow Arrays, ASCII
C strings
Slides Editors (emacs)
Git
Submission workflow
Logical operators, control flow Arrays
C strings
Recap
Questions
Day 3 Day 4 Day 5
Exercise Exercise 3-A
Exercise 3-B
Exercise 4 Exercise 5
Additional
Resources
Emacs reference card
Interactive Vim tutorial
Git cheatsheet
Setting Up VS Code
GitHub Token & SSH key setup
NOTES: C Basics
NOTES: Control Structures
NOTES: C Arrays
NOTES: C Strings

Day 6 (2-Feb) Day 7 (4-Feb) Day 8 (6-Feb)
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 (9-Feb) Day 10 (11-Feb) Day 11 (13-Feb)
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)
Prof. Martin: Writing Robust C Code
Prof. Martin: Debugging Like a Scientist

Day 12 (16-Feb) Day 13 (18-Feb) Day 14 (20-Feb)
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 (23-Feb) Day 16 (25-Feb) Day 17 (27-Feb)
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 (2-March) Day 19 (4-March) Day 20 (6-March)
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 Work on midterm project Work on midterm project
Additional
Resources
Midterm Review Questions
Fall 2019 Midterm Questions
Midterm Review Solutions
Fall 2019 Midterm Solutions

Day 21 (9-March) Day 22 (11-March) Day 23 (13-March)
Videos Midterm Exam Introduction to C++
C++ Strings
Introduction to STL and templates
Slides Midterm Exam Introduction to C++
C++ Strings
Introduction to STL and templates
Recap
Questions
N/A Day 22 Day 23
Exercise N/A Midterm Project Exercise 23
Additional
Resources
NOTES: C++ Basics, NOTES: I/O in C++, NOTES: C++ string class NOTES: STL

Day 24 (23-March) Day 25 (25-March) Day 26 (27-March)
Videos STL Containers - map, pair, and tuple
STL Algorithms
C++ I/O stream and stringstream
Intro to Object Oriented Programming
C++ Reference
C++ Dynamic Memory Allocation
Slides STL Containers - map, pair, and tuple
STL Algorithms
C++ I/O stream and stringstream
Intro to Object Oriented Programming
References
Dynamic Memory Allocation
Recap
Questions
Day 24 Day 25 Day 26
Exercise Exercise 24 Exercise 25 Exercise 26
Additional
Resources
NOTES: STL NOTES: C++ I/O, NOTES: string class NOTES: C++ Basics
NOTES: C++ Dynamic Memory

Day 27 (30-March) Day 28 (1-April) Day 29 (3-April)
Videos C++ Classes
Default Constructors
Constructors and default arguments
Destructors
Function overloading
Operator overloading (newer version)
Operator overloading (older version also covering copy constructors)
Slides C++ Classes
Default Constructors
Constructors and default arguments
Destructors
Function overloading
Operator overloading
Recap
Questions
Day 27 Day 28 Day 29
Exercise Exercise 27 Exercise 28 Exercise 29
Additional
Resources
NOTES: C++ classes NOTES: C++ classes NOTES: Overloading

Day 30 (6-April) Day 31 (8-April) Day 32 (10-April)
Videos Initialization and assignment
Rule of 3
Template functions
Template classes
Inheritance
Polymorphism
Slides Initialization and assignment
Rule of 3
Template functions
Template classes
Inheritance
Polymorphism
Recap
Questions
Day 30 Day 31 Day 32
Exercise Exercise 30 Exercise 31 Exercise 32
Additional
Resources
Final Project Team Declaration/Team Placement Request Form NOTES: Function & Class Templates NOTES: Inheritance & Polymorphism

Day 33 (13-April) Day 34 (15-April) Day 35 (17-April)
Videos Dynamic dispatch
Function hiding & abstract classes
Virtual destructors
OO Design & UML Diagrams Enumerated Types
Exceptions
Customized Exceptions
Slides Dynamic dispatch
Function hiding & abstract classes
Virtual destructors
OO Design & UML Diagrams Enumerated Types
Exceptions
Customized Exceptions
Recap
Questions
Day 33 Day 34 Day 35
Exercise Exercise 33 Work on final project Exercise 35
Additional
Resources
NOTES: Inheritance & Polymorphism NOTES: Object Oriented Design NOTES: Error & Exception Handling

Day 36 (20-April) Day 37 (22-April) Day 38 (24-April)
Videos N/A Iterators Lambdas
Slides N/A Iterators Lambdas
Recap
Questions
N/A Day 37 Day 38
Exercise Work on final project Exercise 37 Work on final project
Additional
Resources
Lambdas & Miscellany

Day 39 (27-April)
Videos N/A
Slides N/A
Recap
Questions
N/A
Exercise Work on final project
Additional
Resources
Final Exam Review Questions
Final Exam Review Solutions