Course Material

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

NA Day 1 (22-Jan) Day 2 (24-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 Unix/Linux Tutorial
Unix/Linux Reference Card
Online C compiler

Day 3 (27-Jan) Day 4 (29-Jan) Day 5 (31-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

Day 6 (3-Feb) Day 7 (5-Feb) Day 8 (7-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` Makefile Reference/Tutorial

Day 9 (10-Feb) Day 10 (12-Feb) Day 11 (14-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 Binky the Pointer (Video) valgrind --leak-check=full --show-leak-kinds=all

Day 12 (17-Feb) Day 13 (19-Feb) Day 14 (21-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

Day 15 (24-Feb) Day 16 (26-Feb) Day 17 (28-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

Day 18 (3-March) Day 19 (5-March) Day 20 (7-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 17 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 (10-March) Day 22 (12-March) Day 23 (14-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

Day 24 (24-March) Day 25 (26-March) Day 26 (28-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

Day 27 (31-March) Day 28 (2-April) Day 29 (4-April)
Videos C++ Classes
Default Constructors
Constructors and default arguments
Destructors
Function overloading
Operator overloading
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

Day 30 (7-April) Day 31 (9-April) Day 32 (11-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

Day 33 (14-April) Day 34 (16-April) Day 35 (18-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 N/A Exercise 35
Additional
Resources

Day 36 (21-April) Day 37 (23-April) Day 38 (25-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

Day 39 (28-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