--- title: "Lecture notes — 2026-04-07 (abstract data types)" project: "cs101-intro" tags: - lecture - study-notes - cs101 date: 2026-04-07 --- # Lecture 2026-04-07 — Abstract data types **Source** — Live lecture + **import from audio transcription** (Otter.ai export, cleaned 2026-04-07 evening). ## Summary (5 bullets) - ADT = **behavior contract** separate from implementation. - **List ADT** can be array-backed or linked; tradeoffs: cache locality vs. insert cost. - **Iterator** pattern hides internal structure from client code. - Big-O today focused on **worst case** unless stated otherwise. - Prof emphasized: **choose the ADT first**, then pick the implementation. ## Detailed notes - **Array list** — doubling strategy keeps append amortized O(1); wasted space bounded by a constant factor. - **Singly linked list** — O(1) insert at head; need tail pointer for O(1) enqueue in naive queue. - **Invariant** example: `size` field must equal length walked from head. ## Questions for office hours - Why not use Python `list` for everything in homework if industry does? **Answer (from slide footer)** — Pedagogy: you implement to see *why* the optimizations exist. ## Homework link Maps directly to `assignments/week-3-data-structures.md` — start `Stack` tonight.