Programming and Data Structures

PDF version of this text.

This document was built on Nov 18, 2025.

List of Lectures

  1. Introduction and C++

  2. Types, Control Structures, and Procedural Abstraction

  3. Machine Model I

  4. Machine Model II

  5. Const, Structs, and ADTs in C

  6. Streams and I/O

  7. Catch-up Lecture

  8. Abstract Data Types in C++

  9. Derived Classes and Inheritance

  10. Polymorphism

  11. Arrays, Pointer Arithmetic, and Strings

  12. Array-based Data Structures and Time Complexity

  13. Sorted Data Structures and Templates

  14. Containers and Iterators

  15. Memory Models and Dynamic Memory

  16. Managing Dynamic Memory

  17. The Big Three

  18. Linked Lists

  19. Implementing Iterators

  20. Function Objects and Impostor Syndrome

  21. Recursion

  22. Structural Recursion

  23. Binary Search Trees and Maps

  24. Error Handling and Exceptions

Containers and Dynamic Memory

About

These notes were written by Amir Kamil in Winter 2019 for EECS 280. They are based on the lecture slides by James Juett and Amir Kamil, which were themselves based on slides by Andrew DeOrio and many others.

This text is licensed under the Creative Commons Attribution-ShareAlike 4.0 International license.