What is covered, week by week, and which topics each lecture draws on.
Every lecture the course claims to run gets a dated page and a teaching-team
reference. A course decides how many lectures it needs; one of them carries a
real deck. related: connects lectures to the sessions and assessments they
feed.
Why SNOBOL
Bell Labs, 1962 — where SNOBOL came from, why this course builds SNOBOL4 specifically, and why OCaml is the implementation language
Week 1 · 22 February 2027
Blanks that mean something
SNOBOL4's blank-sensitive lexing and its one statement grammar — why whitespace changes the parse, not just the layout
Week 2 · 1 March 2027
Everything is global
SNOBOL4's variable model — no lexical scoping, no nested functions, one flat namespace, by design
Week 3 · 8 March 2027
Strings without a plus sign
Strings as first-class values, and concatenation by juxtaposition — no operator token, adjacency is the operator
Week 4 · 15 March 2027
Failure is a value, not an exception
The goto field made precise — every statement succeeds or fails, and that signal is SNOBOL4's entire branching mechanism
Week 5 · 22 March 2027
DEFINE and the shape of a call
User-defined functions, the save/restore discipline behind them, and recursion that needs no special-casing at all
Week 6 · 29 March 2027
The cursor, made visible
Patterns as first-class values, Griswold's cursor model, and two legitimate ways to implement the backtracking search underneath them
Week 7 · 5 April 2027
What a pattern is made of
ANY, NOTANY, SPAN, BREAK, LEN, ARB, ARBNO, and BAL — the primitive vocabulary that concatenation and alternation compose
Week 8 · 12 April 2027
What backtracking leaves behind
Conditional and immediate assignment, the cursor-position operator, and the quickscan/fullscan heuristics that make matching fast in practice
Week 9 · 19 April 2027
Eleven kinds of thing
Tagged values and the eleven built-in types DATATYPE names, CONVERT as explicit coercion, and ARRAY/TABLE/DATA as functions that return data rather than syntax that declares it
Week 10 · 26 April 2027
The error message you'd want
What a diagnostic actually needs to say, why LR and recursive-descent parsers recover from a syntax error differently, and what CSNOBOL4 can and can't tell you about either
Week 11 · 3 May 2027
Where your interpreter's time actually goes
Real 1981 profiling data from the Arizona SIL implementation, what it says about where a SNOBOL4 interpreter's time goes, and the final project's menu of extensions
Week 12 · 10 May 2027