Course Material

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

Day 1 (22-Jan) Day 2 (24-Jan) Day 3 (26-Jan)
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
Unix/Linux Tutorial
Unix/Linux Reference Card
Github SSH key setup
Section 03 slides
Online C compiler
Section 03 slides
Emacs reference card
Interactive Vim tutorial
Git cheatsheet
Setting Up VS Code
Section 03 slides

Day 4 (29-Jan) Day 5 (31-Jan) Day 6 (2-Feb)
Videos Logical operators, control flow Arrays, ASCII
C strings
File I/O, assert, math functions
Writing functions, command line arguments
Slides Logical operators, control flow Arrays
C strings
File I/O, assert, math functions
Writing functions, command line arguments
Recap
Questions
Day 4 Day 5 Day 6
Exercise Exercise 4 Exercise 5 Exercise 6
Additional
Resources
Section 03 slides Section 03 slides Section 03 slides

Day 7 (5-Feb) Day 8 (7-Feb) Day 9 (9-Feb)
Videos Function declarations
Passing arrays to functions
Recursion
Separate compilation
Makefiles
Header guards
Multidimensional arrays, gdb
Slides Function declarations
Passing arrays to functions
Recursion
Separate compilation
Makefiles
Header guards
Multidimensional arrays, gdb
Recap
Questions
Day 7 Day 8 Day 9
Exercise Exercise 7 Exercise 8 Exercise 9
Additional
Resources
Section 03 slides Section 03 slides GDB Cheat Sheet
Section 03 slides

Day 10 (12-Feb) Day 11 (14-Feb) Day 12 (16-Feb)
Videos Pointers Dynamic Memory Allocation
Valgrind
Pointer Arithmetic
Dynamic 2-D Arrays, Pointers and Const
Slides Pointers Dynamic Memory Allocation
Valgrind
Pointer Arithmetic
Dynamic 2-D Arrays, Pointers and Const
Recap
Questions
Day 10 Day 11 Day 12
Exercise Exercise 10 Exercise 11 Exercise 12
Additional
Resources
Binky the Pointer (Video)
Section 03 slides
valgrind --leak-check=full --show-leak-kinds=all
Section 03 slides

Section 03 slides

Day 13 (19-Feb) Day 14 (21-Feb) Day 15 (23-Feb)
Videos Lifetime/Scope
Structs
Binary file I/O
Bitwise operations
Number representation,
type conversion/casting

Random number generation
Slides Lifetime/Scope
Structs
Binary file I/O
Bitwise operations
Number representation,
type conversion/casting

Random number generation
Recap
Questions
Day 13 Day 14 Day 15
Exercise Exercise 13 Exercise 14 Exercise 15
Additional
Resources

Section 03 slides

Section 03 slides

Section 03 slides

Day 16 (26-Feb) Midterm Project (28-Feb) Day 17 (1-March)
Videos Linked lists Intro to midterm project More Linked lists
Slides Linked lists N/A More Linked lists
Recap
Questions
Day 16 N/A Day 17
Exercise Exercise 16 Midterm Project Exercise 17
Additional
Resources

Section 03 slides

Section 03 slides
Midterm Review Questions
Fall 2019 Midterm Questions

Section 03 slides

Midterm Project (4-March) Midterm Project (6-March) Midterm Exam (8-March)
Videos N/A N/A N/A
Slides N/A N/A N/A
Recap
Questions
N/A N/A N/A
Exercise Midterm Project Midterm Project N/A
Additional
Resources
Section 03 slides Midterm Review Solutions
Fall 2019 Midterm Solutions

Day 22 (11-March) Day 23 (13-March) Day 24 (15-March)
Videos Introduction to C++
C++ Strings
Introduction to STL and templates STL Containers - map, pair, and tuple
STL Algorithms
Slides Introduction to C++
C++ Strings
Introduction to STL and templates STL Containers - map, pair, and tuple
STL Algorithms
Recap
Questions
Day 22 Day 23 Day 24
Exercise Midterm Project Exercise 23 Exercise 24
Additional
Resources
Section 03 slides Section 03 slides Section 03 slides

Day 25 (25-March) Day 26 (27-March) Day 27 (29-March)
Videos C++ I/O stream and stringstream
Intro to Object Oriented Programming
C++ Reference
C++ Dynamic Memory Allocation
C++ Classes
Default Constructors
Slides C++ I/O stream and stringstream
Intro to Object Oriented Programming
References
Dynamic Memory Allocation
C++ Classes
Default Constructors
Recap
Questions
Day 25 Day 26 Day 27
Exercise Exercise 25 Exercise 26 Exercise 27
Additional
Resources
Section 03 slides Section 03 slides Section 03 slides

Day 28 (1-April) Day 29 (3-April) Day 30 (5-April)
Videos Constructors and default arguments
Destructors
Function overloading
Operator overloading
Initialization and assignment
Rule of 3
Slides Constructors and default arguments
Destructors
Function overloading
Operator overloading
Initialization and assignment
Rule of 3
Recap
Questions
Day 28 Day 29 Day 30
Exercise Exercise 28 Exercise 29 Exercise 30
Additional
Resources
Section 03 slides Section 03 slides Section 03 slides

Day 31 (8-Apr) Day 32 (10-Apr) Day 33 (12-Apr)
Videos Template functions
Template classes
Inheritance
Polymorphism
Dynamic dispatch
Function hiding & abstract classes
Virtual destructors
Slides Template functions
Template classes
Inheritance
Polymorphism
Dynamic dispatch
Function hiding & abstract classes
Virtual destructors
Recap
Questions
Day 31 Day 32 Day 33
Exercise Exercise 31 Exercise 32 Exercise 33
Additional
Resources
Section 03 slides Section 03 slides Section 03 slides

Day 34 (15-Apr) Day 35 (17-Apr) Day 36 (19-Apr)
Videos OO Design & UML Diagrams Enumerated Types
Exceptions
Customized Exceptions
Iterators
Slides OO Design & UML Diagrams Enumerated Types
Exceptions
Customized Exceptions
Iterators
Recap
Questions
Day 34 Day 35 Day 36
Exercise Final Project Exercise 35 Exercise 36
Additional
Resources
Section 03 slides Section 03 slides Section 03 slides

Day 37 (22-Apr) Day 38 (24-Apr) Day 39 (26-Apr)
Videos Lambdas N/A N/A
Slides Lambdas N/A N/A
Recap
Questions
Day 37 N/A N/A
Exercise Final Project Final Project Final Project
Additional
Resources
Final Exam Review Questions Final Exam Review Solutions