- 2021: programs that read things
The first course was C++ in summer 2021: ten homeworks in six weeks, from 'Hello, my name is David Brin' to arrays and file I/O, with Doxygen configs already in hw1. The final read a numbers file and tallied occurrences up to a user-chosen max. The terminal below runs a faithful TypeScript port of that final over the actual shipped numbers files, including its quirks: the header line silently swallowed, out-of-range numbers read but not counted, and the 'most frequent' answer when every count is zero.
- 2024: data structures with a grade attached
CSE 12 made the containers personal: build MyArrayList yourself (backing array, size-vs-capacity, the shifting that insert and remove really do), and rock-paper-scissors as an exercise in interfaces and modular arithmetic (winner = (loser + 1) mod moves, which generalizes past three moves for free). The visualizer below animates David's MyArrayList doing its shifts and grows, and the RPS game plays against his actual winner logic.
- A URL is just a string
CSE 15L handed out a tiny course-provided HTTP server, 'wavelet', 53 lines around Java's built-in HttpServer, and the assignment was the Handler: parse the path, split the query on [=&], build the response. The replay below runs David's chat and doc-search handlers faithfully in TypeScript, including the chat handler's quirks (visiting / clears the chat and increments a counter). The search corpus is a 30-document synthetic stand-in; the real OANC corpus isn't shipped.
- The bug was the assignment
The JUnit lab ships a merge() with a planted bug: the second drain loop increments the WRONG index, so one test passes and the other spins until its 500 ms timeout kills it. The comment in the file says exactly how to fix it. The widget below runs both tests against the TS port, red timeout and all, then lets you apply the one-line fix and watch them both go green. First contact with the idea that tests are executable claims.
- CSE 100: what the library call hides
The algorithms-era notebook is three cells: install pyahocorasick, feed it eleven Fast & Furious titles, print that the automaton has 106 nodes. That's the whole notebook; the library does everything. The widget below is this page's from-scratch implementation of what those cells hide: watch the trie grow node by node, failure links attach in BFS order, and a cursor walk your text emitting (end, pattern) tuples, the exact shape pyahocorasick returns. Same titles, same node count: 106.
- The bridge to the deep-learning pages (built 2026-09-01)
The last artifact is CardClassifier.ipynb, a PyTorch tutorial follow-along (EfficientNet-B0 via timm, 53 playing-card classes) that leads straight to the CV and cross-teaching pages. Honesty box: the Kaggle dataset isn't on disk, so nothing was re-run and no predictions ship; the notebook is referenced, not demonstrated. Everything live on this page is a disclosed TypeScript port (C++ final, handlers, merge lab, MyArrayList, RPS); the Aho-Corasick automaton and the C++ port are fixture-tested against Python references. Widgets written with AI coding tools.