CSE 4205: Programming Languages and Systems Fall 2025 (Other Semesters)

 
Aug 24-Aug 30
Aug 31-Sep 06 Sep 07-Sep 13 Sep 14-Sep 20 Sep 21-Sep 27 Sep 28-Oct 04
Oct 05-Oct 11 <-- Fall Break Oct 12-Oct 18 Oct 19-Oct 25 Oct 26-Nov 01
Nov 02-Nov 08 Nov 09-Nov 15 Nov 16-Nov 22 Nov 23-Nov 29 <-- Thanksgiving
Nov 30-Dec 06

Date/SubjectPrepIn ClassAssignments
       
       
Tue Aug 26 (#0)
Welcome; Setup
slides: presentation pdf
       
Thu Aug 28 (#1)
Functional Static 1a
xkcd: Editors

Courses and Software Setup
Grossman video: 003-expressions-and-variables
Grossman video: 004-rules-for-expressions
Grossman video: 005-REPL-and-errors
Grossman video: 006-shadowing
Grossman video: 007-functions-informally
Grossman video: 008-functions-formally
Grossman video: 009-tuples
Grossman video: 010-lists
Grossman video: 011-list-functions
Grossman video: 012-let-expressions
Grossman video: 013-nested-functions
Grossman video: 014-let-efficiency
video: Making Sense of SML Error Output
video: Synthesizing Information
worksheet
slides: presentation pdf
>>> Assign (SML) WashU WarmUp List Length
>>> Assign (SML) WashU WarmUp To Squares with Functions
>>> Assign (SML) WashU Exercise Sum Distances To Origin with Functions
       
       
       
       
Tue Sep 2 (#2)
Functional Static 1b
xkcd: Side Effect Free

video: Shards O' Glass Freeze Pops
Grossman video: 015-options
Grossman video: 016-booleans
Grossman video: 017-no-mutation
Grossman video: 018-java-mutation
worksheet
slides: presentation pdf
>>> Assign (SML) WashU WarmUp Is Strictly Ascending with Functions
>>> Assign (SML) WashU WarmUp Sum Scan with Functions
>>> Assign (SML) WashU Exercise Closest To Origin
>>> Assign (SML) UW Exercise Calendar Date
       
Thu Sep 4 (#3)
Functional Static 2a
Grossman video: 019-language-pieces
Grossman video: 020-build-new-types
Grossman video: 021-records
Grossman video: 022-tuples-as-syntactic-sugar
Grossman video: 023-datatype-bindings
Grossman video: 024-case-expressions
Grossman video: 025-useful-datatypes
Grossman video: 026-precise-pattern-matching-sofar
Grossman video: 027-type-synonyms
Grossman video: 028-another-expression-example
Grossman video: 029-list-and-option-datatypes
worksheet
slides: presentation pdf
>>> Assign (SML) WashU WarmUp To Squares with Pattern Matching
>>> Assign (SML) WashU WarmUp Sum Scan with Pattern Matching
>>> Assign (SML) WashU WarmUp Is Strictly Ascending with Pattern Matching
>>> Assign (SML) WashU WarmUp Remove First Occurrence
>>> Assign (SML) WashU Exercise Eliminate Unsorted
       
Sat Sep 6
<<< Submit (SML) WashU Exercise Sum Distances To Origin with Functions
       
       
Tue Sep 9 (#4)
Functional Static 2b
Grossman video: 030-polymorphic-datatypes
Grossman video: 031-eachof-pattern-matching
Grossman video: 032-type-inference
Grossman video: 033-polymorphic-and-equality-types
Grossman video: 034-nested-patterns
Grossman video: 035-more-nested-patterns
Grossman video: 036-nested-patterns-precisely
Grossman video: 037-function-patterns
worksheet
slides: presentation pdf
>>> Assign (SML) WashU WarmUp Sum Distances To Origin with Nested Pattern Matching
>>> Assign (SML) WashU Exercise Hearts Card Game
       
Thu Sep 11 (#5)
Language and Thought; Functional Static 2c
Ted Talk: Lera Boroditsky: How language shapes the way we think
video: Numbers in Pirahã
video: Recursion in Pirahã?
(Optional) Wikipedia: Pirahã language
xkcd: Tail Recursion

Grossman video: 038-exceptions
Grossman video: 039-tail-recursion
Grossman video: 040-accumulators
Grossman video: 041-tail-recursion-perspective
worksheet
slides: presentation pdf
>>> Assign (SML) WashU WarmUp Sum Distances To Origin with Tail Recursion
>>> Assign (SML) WashU WarmUp Sum Scan with Tail Recursion
>>> Assign (SML) UW Exercise Card Game
       
Sat Sep 13
<<< Submit (SML) WashU Exercise Closest To Origin
<<< Submit (SML) UW Exercise Calendar Date
<<< Submit (SML) WashU Exercise Eliminate Unsorted
       
       
Tue Sep 16 (#6)
Functional Static 3a
Grossman video: 042-functions-intro
Grossman video: 043-functions-as-arguments
Grossman video: 044-functions-and-types
Grossman video: 045-anonymous-functions
Grossman video: 046-unnecessary-function-wrapping
Grossman video: 047-map-and-filter
Grossman video: 048-generalizing-prior-topics
worksheet
slides: presentation pdf
>>> Assign (SML) WashU WarmUp To Squares using Higher-Order Functions
>>> Assign (SML) WashU WarmUp Sum Distances To Origin using Higher-Order Functions
       
Thu Sep 18 (#7)
Story of Your Life; Functional Static 3b
Read: Story of Your Life
xkcd: College Athletes

video: UW3 Pattern Matching Rosetta Stone
Grossman video: 049-lexical-scope
Grossman video: 050-lexical-scope-and-functions
Grossman video: 051-why-lexical-scope
Grossman video: 052-closures-and-recomputation
Grossman video: 053-fold-and-more-closures
Grossman video: 054-combining-functions
Grossman video: 055-currying
Grossman video: 056-partial-application
Grossman video: 057-currying-wrapup
worksheet
slides: presentation pdf
>>> Assign (SML) WashU Group WarmUp Curried Higher-Order Function Debugging
>>> Assign (SML) WashU Exercise Spreadsheet
>>> Assign (SML) UW Exercise Pattern Matching
       
Sat Sep 20
<<< Submit (SML) WashU Exercise Hearts Card Game
<<< Submit (SML) UW Exercise Card Game
       
       
Tue Sep 23 (#8)
Functional Static 3c; Course Motivation
xkcd: Standards

Grossman video: 058-mutable-references
Grossman video: 059-callbacks
Grossman video: 060-library-docs
Grossman video: 061-adts-with-closures
Grossman video: 062-without-closures
Grossman video: 063-java-without-closures
Grossman video: 064-c-without-closures
Grossman video: m1-motivation-intro
Grossman video: m2-motivation-general
Grossman video: m3-pls-the-same
Grossman video: m4-why-functional
Grossman video: m5-why-these-languages
worksheet
slides: presentation pdf
>>> Assign (SML) WashU WarmUp Sum Scan without Leveraging Identity Element
>>> Assign (SML) WashU Exercise Scan Higher Order Function
       
Thu Sep 25 (#9)
Functional Static 4a
xkcd: Haskell

video: How To Use Refs In SML
Grossman video: 065-section-introduction
Grossman video: 066-what-is-type-inference
Grossman video: 067-ml-type-inference
Grossman video: 068-type-inference-examples
Grossman video: 069-polymorphic-examples
Grossman video: 070-other-inference
Grossman video: 071-mutual-recursion
worksheet
slides: presentation pdf
>>> Assign (SML) WashU WarmUp Concat & Length O(1) List
       
Sat Sep 27
<<< Submit (SML) WashU Exercise Spreadsheet
<<< Submit (SML) UW Exercise Pattern Matching
       
       
Tue Sep 30 (#10)
Functional Static 4b
xkcd: Workflow

video: Binary Search Tree Client Demo
Grossman video: 072-namespace-mgmt
Grossman video: 073-signatures
Grossman video: 074-module-example
Grossman video: 075-signatures-for-example
Grossman video: 076-signature-matching
Grossman video: 077-equivalent-structure
Grossman video: 078-another-equivalent-structure
Grossman video: 079-modules-different-types
Grossman video: 080-function-equivalence
Grossman video: 081-standard-equivalences
Grossman video: 082-equivalence-performance
worksheet
slides: presentation pdf
>>> Assign (SML) WashU WarmUp Binary Int Tree
>>> Assign (SML) WashU Exercise Binary Search Tree
       
Thu Oct 2 (#11)
Functors
worksheet
slides: presentation pdf
>>> Assign (SML) WashU Exercise Chained (Single List and Hashed) Dictionaries
>>> Assign (Java) WashU Exercise ImList<E>
       
Sat Oct 4
<<< Submit (SML) WashU Exercise Scan Higher Order Function
       
       
Tue Oct 7
Fall Break (No Class)
       
Thu Oct 9 (#12)
Sorted Dictionary
video: Sorted Dictionary Scenario
worksheet
slides: presentation pdf
>>> Assign (SML) WashU Exercise Sorted Dictionary
>>> Assign (Java) WashU Exercise java.util.Optional<T>
>>> Assign (Java) WashU WarmUp Sum Distances To Origin
>>> Assign (Java) WashU Exercise Tail Recursion
       
Sat Oct 11
<<< Submit (SML) WashU Exercise Binary Search Tree
<<< Submit (SML) WashU Exercise Chained (Single List and Hashed) Dictionaries
<<< Submit (Java) WashU Exercise ImList<E>
       
       
Tue Oct 14 (#13)
The Lambda Calculus; Spreadsheet to Dictionaries
video: The Lambda Calculus (Hutton)
video: Y Combinator (Hutton)
(Optional) Wikipedia: Fixed-point combinator
(Optional) Wikipedia: Church encoding
(Optional) video: The Lambda Calculus (Lebec)
worksheet
slides: presentation pdf
>>> Assign (SML) WashU Exercise Spreadsheet To Dictionaries
>>> Assign (Java) WashU Group WarmUp Any and All
>>> Assign (Java) WashU WarmUp N Times
>>> Assign (Java) WashU Exercise Higher Order Functions Hall of Fame
       
Thu Oct 16 (#14)
Functional Dynamic 1a
xkcd: (Parentheses)

Read: Low-fidelity Prototyping
(Optional) Wikipedia: L-system
Grossman video: 083-racket-intro
Grossman video: 084-racket-basics
Grossman video: 085-racket-lists
Grossman video: 086-syntax-and-parens
Grossman video: 087-parens-matter
Grossman video: 088-dynamic-typing
Grossman video: 089-cond
Grossman video: 090-local-bindings
Grossman video: 091-toplevel-bindings
video: Making Sense of Dr Racket Error Output
video: Racket Image Library Demo: Snowdudes
video: Racket Image Library Recursive Demo: Spiral
worksheet
slides: presentation pdf
>>> Assign (Racket) WashU Group WarmUp Racket Debug A
>>> Assign (Racket) WashU WarmUp Home Is Where The (Racket) Heart Is
       
Sat Oct 18
<<< Submit (SML) WashU Exercise Sorted Dictionary
<<< Submit (Java) WashU Exercise java.util.Optional<T>
<<< Submit (Java) WashU Exercise Tail Recursion
       
       
Tue Oct 21 (#15)
Functional Dynamic 1b
xkcd: Universe

video: Are C Macros Really That Bad?
video: Thunk That Scenario
Grossman video: 092-setbang
Grossman video: 093-truth-about-cons
Grossman video: 094-mcons
Grossman video: 095-thunks
Grossman video: 096-avoid-computations
Grossman video: 097-delay-and-force
Grossman video: 098-using-streams
Grossman video: 099-defining-streams
Grossman video: 100-memoization
Grossman video: 101-macros-intro
Grossman video: 102-three-issues
Grossman video: 103-define-syntax
Grossman video: 104-hygiene
Grossman video: 105-macro-examples
worksheet
slides: presentation pdf
>>> Assign (Racket) WashU WarmUp Recursive Circles
>>> Assign (Racket) WashU Exercise Sierpiński
>>> Assign (Racket) WashU WarmUp Thunks and Streams
>>> Assign (Racket) UW Exercise Streams
       
Thu Oct 23 (#16)
Functional Dynamic 2a
Read: Fire and Ice by Robert Frost
xkcd: Perl or Lisp

Grossman video: 106-section-topics
Grossman video: 107-datatypes-without-structs
Grossman video: 108-datatypes-with-structs
Grossman video: 109-why-structs
worksheet
slides: presentation pdf
>>> Assign (Racket) WashU WarmUp Interact
>>> Assign (Racket) WashU Exercise Cantor
       
Sat Oct 25
<<< Submit (SML) WashU Exercise Spreadsheet To Dictionaries
<<< Submit (Java) WashU Exercise Higher Order Functions Hall of Fame
       
       
Tue Oct 28 (#17)
Functional Dynamic 2b
Grossman video: 110-implement-a-language
Grossman video: 111-interpreter-assumptions
Grossman video: 112-implementing-variables
Grossman video: 113-implementing-closures
Grossman video: 114-closures-efficient
Grossman video: 115-macros-via-functions
worksheet
slides: presentation pdf
>>> Assign (Racket) WashU Exercise IBPL List Converter
>>> Assign (Racket) WashU Exercise Snowflake
       
Thu Oct 30 (#18)
Functional Dynamic 2c
video: Reverse Stream Scenario
video: Reverse Stream Scenario Responses
Grossman video: 116-ml-vs-racket
Grossman video: 117-what-is-static-checking
Grossman video: 118-soundness-completeness
Grossman video: 119-weak-typing
worksheet
slides: presentation pdf
>>> Assign (Racket) WashU WarmUp Deep Lists
>>> Assign (Racket) WashU Exercise IBPL Interpreter
       
Sat Nov 1
<<< Submit (Racket) WashU Exercise Sierpiński
<<< Submit (Racket) UW Exercise Streams
<<< Submit (Racket) WashU Exercise Cantor
       
       
Tue Nov 4 (#19)
Functional Dynamic 2d
video: A Champion For C Has Arrived
Grossman video: 120-static-vs-dynamic-one
Grossman video: 121-static-vs-dynamic-two
Grossman video: 122-eval
worksheet
slides: presentation pdf
>>> Assign (Racket) WashU WarmUp Dynamic Binary Int Tree
>>> Assign (Racket) WashU WarmUp Dynamic Spreadsheet
>>> Assign (Racket) WashU Exercise IBPL Functions and Macros
       
Thu Nov 6 (#20)
OOP Dynamic 1a
Grossman video: 123-ruby-intro
Grossman video: 124-classes-objects
Grossman video: 125-object-state
Grossman video: 126-visibility
Grossman video: 127-example
Grossman video: 128-all-objects
Grossman video: 129-classes-dynamic
Grossman video: 130-duck-typing
worksheet
slides: presentation pdf
>>> Assign (Ruby) WashU Exercise Render Part A
       
Sat Nov 8
<<< Submit (Racket) WashU Exercise IBPL List Converter
<<< Submit (Racket) WashU Exercise Snowflake
<<< Submit (Racket) WashU Exercise IBPL Interpreter
       
       
Tue Nov 11 (#21)
OOP Dynamic 1b
Grossman video: 131-arrays
Grossman video: 132-blocks
Grossman video: 133-using-blocks
Grossman video: 134-procs
Grossman video: 135-hashes-ranges
worksheet
slides: presentation pdf
>>> Assign (Ruby) WashU WarmUp Home Is Where The (Ruby) Heart Is
>>> Assign (Ruby) WashU WarmUp Powers of 2 Range
>>> Assign (Ruby) UW Exercise Tetris
       
Thu Nov 13 (#22)
OOP Dynamic 1c
video: Composition vs Inheritance
Grossman video: 136-subclassing
Grossman video: 137-why-subclassing
Grossman video: 138-overriding
Grossman video: 139-method-lookup
Grossman video: 140-dynamic-dispatch-vs-closures
Grossman video: 141-manual-dynamic-dispatch
worksheet
slides: presentation pdf
>>> Assign (Ruby) WashU Exercise Render Part B
       
Sat Nov 15
<<< Submit (Racket) WashU Exercise IBPL Functions and Macros
<<< Submit (Ruby) WashU Exercise Render Part A
       
       
Tue Nov 18 (#23)
OOP Dynamic 2a
video: The Matrix: Blue Pill or Red Pill
video: The Matrix: Jump Program
Grossman video: 142-fp-oo-decomposition
Grossman video: 143-adding-operations-or-variants
Grossman video: 144-binary-methods-fp
Grossman video: 145-double-dispatch
Grossman video: 146-multimethods
worksheet
slides: presentation pdf
>>> Assign (Ruby) WashU Exercise Render Part C
       
Thu Nov 20 (#24)
OOP Dynamic 2b
Grossman video: 147-multiple-inheritance
Grossman video: 148-mixins
Grossman video: 149-interfaces
Grossman video: 150-abstract-methods
worksheet
slides: presentation pdf
>>> Assign (Ruby) WashU WarmUp Powers of 2 Range Enumerable Mixin
>>> Assign (Ruby + SML) UW Exercise Geometry Language
>>> Assign (Ruby) WashU Exercise Render Part D
       
Sat Nov 22
<<< Submit (Ruby) UW Exercise Tetris
<<< Submit (Ruby) WashU Exercise Render Part B
       
       
Tue Nov 25 (#25)
OOP Dynamic 2c; The Computer Revolution Hasn't Happened Yet; Kingdom of Nouns; OOP Static 2: Interfaces, Classes, Inheritance, Final, Override
video: Alan Kay OOPSLA 1997
xkcd: The General Problem

Read: Execution in the Kingdom of Nouns
Read: Java Interfaces
Read: Java Inheritance
Grossman video: 151-subtyping
Grossman video: 152-subtype-relation
Grossman video: 153-depth-subtyping
Grossman video: 154-java-arrays
Grossman video: 155-function-subtyping
Grossman video: 156-object-subtyping
Grossman video: 157-generics-versus-subtyping
Grossman video: 158-bounded-polymorphism
worksheet
slides: presentation pdf
>>> Assign (Ruby) WashU WarmUp Text File Writer
>>> Assign (Ruby) WashU Exercise Branch
>>> Assign (Java) WashU WarmUp Iterable Range
>>> Assign (Java) WashU Exercise Iterable ImList<E>
       
Thu Nov 27
Thanksgiving (No Class)
       
       
       
       
Tue Dec 2 (#26)
Mostly Wrong History; OOP Static 3: Producer Extends Consumer Super
Read: A Brief, Incomplete, and Mostly Wrong History of Programming Languages
Read: Producer Extends, Consumer Super
worksheet
slides: presentation pdf
       
Thu Dec 4 (#27)
1984; Teach Yourself Programming in Ten Years
xkcd: Good Code

Read: Uber Programming Languages Story
Read: Programming Types and Mindsets
Read: Teach Yourself Programming in Ten Years (Norvig)
Read: How to Teach Yourself Programming (Abstruse Goose)
Read: Chapters 1-5 (inclusive) of 1984
worksheet
slides: presentation pdf
       
Sat Dec 6
<<< Submit (Ruby) WashU Exercise Render Part C
<<< Submit (Ruby + SML) UW Exercise Geometry Language
<<< Submit (Ruby) WashU Exercise Render Part D
<<< Submit (Ruby) WashU Exercise Branch
<<< Submit (Java) WashU Exercise Iterable ImList<E>
       
       
       
       
       
       
Sat Dec 13