Course Material

You can click on the header for a specific week to expand or collapse the materials for that week. Recorded lectures can be found in Canvas in the Panopto tab for our class.

Day 1 (28-May) Day 2 (30-May)
Videos Course intro
Linux, ugrad accounts
Hello world program in C
C basics
Editors (emacs)
Git
Submission workflow
Logical operators, control flow
Slides Course intro
Linux, ugrad accounts
Hello world program in C
C basics
Editors (emacs)
Git
Submission workflow
Logical operators, control flow
Recap
Questions
Day 1
Day 2
Day 3
Day 4
Exercise Exercise 1
Exercise 2
Exercise 3-A
Exercise 3-B
Exercise 4
Additional
Resources
Unix/Linux Tutorial
Unix/Linux Reference Card
Github SSH key setup
Online C compiler
Emacs reference card
Interactive Vim tutorial
Vim lecture video
Git cheatsheet
Lecture
Slides
Day 01 Notes Day 2 Notes (annotated)
Recorded
Sessions

Day 3 (2-Jun) Day 4 (4-Jun) Day 5 (6-Jun)
Videos Arrays, ASCII
C strings
File I/O, assert, math functions
Writing functions, command line arguments
Function declarations
Passing arrays to functions
Recursion
Separate compilation
Makefiles
Header guards
Function declarations
Passing arrays to functions
Recursion
Separate compilation
Makefiles
Header guards
Slides Arrays
C strings
File I/O, assert, math functions
Writing functions, command line arguments
Function declarations
Passing arrays to functions
Recursion
Separate compilation
Makefiles
Header guards
Function declarations
Passing arrays to functions
Recursion
Separate compilation
Makefiles
Header guards
Recap
Questions
Day 5
Day 6
Day 7
Day 8
Day 7
Day 8
Exercise Exercise 5
Exercise 6
Exercise 7
Exercise 8
Exercise 7
Exercise 8
Additional
Resources
Lecture
Slides
Day 3 Notes (annotated) Day 4 Notes (annotated) Day 4 Notes (annotated)
Recorded
Sessions

Day 6 (9-Jun) Day 7 (11-Jun) Day 8 (13-Jun)
Videos Multidimensional arrays, gdb
Pointers
Dynamic Memory Allocation
Valgrind
Pointer Arithmetic
Dynamic 2-D Arrays, Pointers and Const
Lifetime/Scope
Structs
Random number generation
Binary file I/O
Bitwise operations
Slides Multidimensional arrays, gdb
Pointers
Dynamic Memory Allocation
Valgrind
Pointer Arithmetic
Dynamic 2-D Arrays, Pointers and Const
Lifetime/Scope
Structs
Random number generation
Binary file I/O
Bitwise operations
Recap
Questions
Day 9
Day 10
Day 11
Day 12
Day 13
Day 14
Exercise Exercise 9
Exercise 10
Exercise 11
Exercise 12
Exercise 13
Exercise 14
Additional
Resources
GDB Cheat Sheet
Binky the Pointer (Video)
Lecture
Slides
Day 5 Notes (annotated) Day 6 Notes (annotated) Day 7 Notes (annotated)
Recorded
Sessions

Day 9 (16-Jun) Day 10 (18-Jun) Day 11 (16-Jun)
Videos Lifetime/Scope
Structs
Random number generation
Binary file I/O
Bitwise operations
Number representation,
type conversion/casting
Linked lists
More Linked lists
Slides Lifetime/Scope
Structs
Random number generation
Binary file I/O
Bitwise operations
Number representation,
type conversion/casting

Midterm project overview
Linked lists
More Linked lists
Recap
Questions
Day 13
Day 14
Day 15 Day 17
Day 18
Exercise Exercise 13
Exercise 14
Exercise 15 Exercise 17
Exercise 18
Additional
Resources
Lecture
Slides
Day 7 Notes (annotated) Day 9 Notes (annotated) Day 10 Notes (annotated)
Recorded
Sessions

Day 12 (23-Jun) Day 13 (25-Jun) Day 14 (27-Jun)
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
Additional
Resources
Midterm Review Solutions
Fall 2019 Midterm Solutions
Lecture
Slides
Day 12 Notes (annotated)
Recorded
Sessions

Day 15 (30-Jun) Day 16 (2-Jul)
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 Exercise 23
Exercise 24
Additional
Resources
Lecture
Slides
Day 13 Notes (annotated) Day 15 Notes (annotated)
Recorded
Sessions

Day 17 (7-Jul) Day 18 (9-Jul) Day 19 (11-Jul)
Videos C++ I/O stream and stringstream
Intro to Object Oriented Programming
References
Dynamic Memory Allocation
C++ Classes
Default Constructors
Constructors and default arguments
Destructors
Slides C++ I/O stream and stringstream
Intro to Object Oriented Programming
References
Dynamic Memory Allocation
C++ Classes
Default Constructors
Constructors and default arguments
Destructors
Recap
Questions
Day 25
Day 26
Day 27
Day 28
Exercise Midterm Exam Exercise 25
Exercise 26
Exercise 27
Exercise 28
Additional
Resources
Lecture
Slides
Day 16 Notes (annotated) Day 17 Notes (annotated)
Recorded
Sessions

Day 20 (14-Jul) Day 21 (16-Jul) Day 22 (18-Jul)
Videos Function overloading
Operator overloading
Initialization and assignment
Rule of 3
Template functions
Template classes
Inheritance
Polymorphism
Dynamic dispatch
Function hiding and abstract classes
Virtual destructors
OO Design & UML Diagrams
Slides Function overloading
Operator overloading
Initialization and assignment
Rule of 3
Template functions
Template classes
Inheritance
Polymorphism
Dynamic dispatch
Function hiding and abstract classes
Virtual destructors
OO Design & UML Diagrams
Recap
Questions
Day 29
Day 30
Day 31
Day 32
Day 33
Day 34
Exercise Exercise 29
Exercise 30
Exercise 31
Exercise 32
Exercise 33
Work on final project
Additional
Resources
Lecture
Slides
Day 18 Notes (annotated) Day 19 Notes (annotated) Day 20 Notes (annotated)
Recorded
Sessions

Day 23 (21-Jul) Day 24 (23-Jul) Day 25 (25-Jul)
Videos Enumerated Types
Exceptions
Customized Exceptions
Iterators
Lambdas
Slides Enumerated Types
Exceptions
Customized Exceptions
Iterators
Lambdas
Recap
Questions
Day 35
Day 37
Day 38
Exercise Exercise 35
Work on final project
Exercise 37
Work on final project Work on final project
Additional
Resources
Lecture
Slides
Day 21 Notes (annotated) Day 22 Notes (annotated)
Recorded
Sessions

Day 26 (28-Jul) Day 27 (30-Jul) Day 28 (2-Aug)
Videos N/A N/A
Slides N/A N/A
Recap
Questions
N/A N/A
Exercise Final exam
Additional
Resources
Lecture
Slides
Recorded
Sessions