All lectures notes are posted on Canvas.
- Lecture 0
- Pointers and references in C++; Class constructors; keyword const; Macros (and debugging)
- Lecture 1
- Debugging, Proxy Design Patterns
- Exercise 0 due Tuesday at 4:30 P.M. P.S.T.
- Lecture 2
- Testing Software
- Lecture 3
- Make, Pre/post conditions, consistent/minimal specifications, Invariants, introduction to templates.
- HW0 due Friday at 4:30 P.M. P.S.T.
- Lecture 4
- Lambdas, Iterators, functors
- Lecture 5
- Pointers and ownership, l/r-value references.
- EX1 due Tuesday in class at 4:30 P.M. P.S.T.
- Lecture 6
- Revisiting Structs and their layouts, unions.
- Lecture 7:
- Abstraction functions and representation invariants; RAII; Free-store memory allocations (with a footnote on allocators)
- HW1 due Friday at 4:30 P.M. P.S.T.
- Lecture 8
- Exception Handling
- Lecture 9
- Graph remove_*; inline functions; typedefs; inheritance and polymorphism
- EX2 due Tuesday at 4:30 P.M. P.S.T.
- Lecture 10
- Construction, cleanup, and copy initialization
- Lecture 11
- Defining copy and move semantics, delegating constructors, entanglement, slicing
- HW2 due Friday at 4:30 P.M. P.S.T.
- Lecture 12
- Template Programming part (i); std::find_if, and std::any_of
- Lecture 13
- Template Programming part (ii); use of specializations in MTL
- EX3 due Tuesday at 4:30 P.M. P.S.T.
- Lecture 14
- Perfect forwarding, enable_if; concepts and metafunctions; compile time programming
- Lecture 15
- Cachegrind, optimization, compiler optimizations
- HW3 due Friday at 4:30 P.M. P.S.T.
- Lecture 16
- Floating point, Under/overflow, relative error, machine tolerance; bit-shifting
- Lecture 17
- Generic programming conclusion: algorithms and lifting
- EX4 due Tuesday at 4:30 P.M. P.S.T.
- Lecture 18
- Regex
- Lecture 19
- Cancelled
- HW4 due Friday at 4:30 P.M. P.S.T.