Course Material

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

Day 1 (5-Jun) Day 2 (7-Jun) Day 3 (9-Jun)
Videos Course intro
Linux, ugrad accounts
Hello world program in C
C basics
Editors (emacs)
Git
Submission workflow
Logical operators, control flow
Arrays, ASCII
C strings
File I/O, assert, math functions
Writing functions, command line arguments
Slides Course intro
Linux, ugrad accounts
Hello world program in C
C basics
Editors (emacs)
Git
Submission workflow
Logical operators, control flow
Arrays
C strings
File I/O, assert, math functions
Writing functions, command line arguments
Recap
Questions
Day 1
Day 2
Day 3
Day 4
Day 5
Day 6
Exercise Exercise 1
Exercise 2
Exercise 3-A
Exercise 3-B
Exercise 4
Exercise 5
Exercise 6
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 02 Notes Day 03 Notes
Recorded
Sessions
day1-lecture day2-lecture day3-lecture

Day 4 (12-Jun) Day 5 (14-Jun) Day 6 (16-Jun)
Videos Function declarations
Passing arrays to functions
Recursion
Separate compilation
Makefiles
Header guards
Multidimensional arrays, gdb
Pointers
Dynamic Memory Allocation
Valgrind
Pointer Arithmetic
Dynamic 2-D Arrays, Pointers and Const
Slides Function declarations
Passing arrays to functions
Recursion
Separate compilation
Makefiles
Header guards
Multidimensional arrays, gdb
Pointers
Dynamic Memory Allocation
Valgrind
Pointer Arithmetic
Dynamic 2-D Arrays, Pointers and Const
Recap
Questions
Day 7
Day 8
Day 9
Day 10
Day 11
Day 12
Exercise Exercise 7
Exercise 8
Exercise 9
Exercise 10
Exercise 11
Exercise 12
Additional
Resources
GDB Cheat Sheet
Binky the Pointer (Video)
Lecture
Slides
Day 04 Notes Day 05 Notes Day 06 Notes
Recorded
Sessions
day4-lecture day5-lecture day6-lecture

Day 7 (19-Jun) Day 8 (21-Jun) Day 9 (23-Jun)
Videos Lifetime/Scope
Structs
Random number generation
Binary file I/O
Bitwise operations
Number representation,
type conversion/casting
Slides Lifetime/Scope
Structs
Random number generation
Binary file I/O
Bitwise operations
Number representation,
type conversion/casting

Midterm project overview
Recap
Questions
Day 13
Day 14
Day 15
Exercise No class (Juneteenth) Exercise 13
Exercise 14
Exercise 15
Additional
Resources
Lecture
Slides
Day 07 Notes Day 08 Notes
Recorded
Sessions
day7-lecture day8-lecture

Day 10 (26-Jun) Day 11 (28-Jun) Day 12 (30-Jun)
Videos Linked lists
More Linked lists
N/A N/A
Slides Linked lists
More Linked lists
N/A N/A
Recap
Questions
Day 17
Day 18
N/A N/A
Exercise Exercise 17
Exercise 18
Midterm Project Midterm Project
Additional
Resources
Midterm Review Solutions
Fall 2019 Midterm Solutions
Lecture
Slides
Day 09 Notes Day 11 Notes
Recorded
Sessions
day9-lecture day11-lecture

Day 13 (3-Jul) Day 14 (5-Jul) Day 15 (7-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 Midterm Exam Exercise 23
Exercise 24
Additional
Resources
Lecture
Slides
Day 13 Notes Day 15 Notes
Recorded
Sessions
day13-lecture day15-lecture
day15-lecture-supplement

Day 16 (10-Jul) Day 17 (12-Jul) Day 18 (14-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
Function overloading
Operator overloading
Initialization and assignment
Rule of 3
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
Function overloading
Operator overloading
Initialization and assignment
Rule of 3
Recap
Questions
Day 25
Day 26
Day 27
Day 28
Day 29
Day 30
Exercise Exercise 25
Exercise 26
Exercise 27
Exercise 28
Exercise 29
Exercise 30
Additional
Resources
Lecture
Slides
Day 16 Notes Day 17 Notes Day 18 Notes
Recorded
Sessions
day16-lecture day17-lecture day18-lecture

Day 19 (17-Jul) Day 20 (19-Jul) Day 21 (21-Jul)
Videos Template functions
Template classes
Inheritance
Polymorphism
Dynamic dispatch
Function hiding and abstract classes
Virtual destructors
OO Design & UML Diagrams
Enumerated Types
Exceptions
Customized Exceptions
Iterators
Slides Template functions
Template classes
Inheritance
Polymorphism
Dynamic dispatch
Function hiding and abstract classes
Virtual destructors
OO Design & UML Diagrams
Enumerated Types
Exceptions
Customized Exceptions
Iterators
Recap
Questions
Day 31
Day 32
Day 33
Day 34
Day 35
Day 37
Exercise Exercise 31
Exercise 32
Exercise 33
Work on final project
Exercise 35
Work on final project
Exercise 37
Additional
Resources
Lecture
Slides
Day 19 Notes Day 20 Notes Day 21 Notes
Recorded
Sessions
day19-lecture day20-lecture day21-lecture

Day 22 (24-Jul) Day 23 (26-Jul) Day 24 (28-Jul)
Videos Lambdas
Slides Lambdas
Recap
Questions
Day 38
Exercise Work on final project Work on final project Final exam
Additional
Resources
Lecture
Slides
Day 22 Notes
Recorded
Sessions
day22-lecture