Topics
This page collects all course reference material by topic.
Contents:
General
Materials
- How to Program
- How to Program (Racket) notes: text similar to CS 251 lectures for this part (subset of language)
- Racket Guide: quick intro for programmers (full language)
- Racket Cheat Sheet (full language)
- All Racket Documentation (full language)
- What’s in a Type
- ML Summary notes: designed for a similar course that starts with ML (more time on basics we learned in Racket)
- Programming in Standard ML
- SML/NJ
- SML Standard Basis Library Documentation
- When Things Happen
- ML Summary notes Part 5
- Programming in Standard ML
- Programming in Manticore, a Heterogenous Parallel Functional Language
- Concurrent Programming in ML. John H. Reppy. Cambridge University Press, 1999. (local access)
- Core Concurrent ML Reference and FAQ
Exam Info
By Topic
topic The Plan
Slides: ➊ plan.pdf ➍ plan-4up.pdf
How to Program
topic Racket Expressions and Bindings
← Tuesday, 28 January - Friday, 31 January
Slides: ➊ racket.pdf ➍ racket-4up.pdf
Code:
Reference: How to Program (Racket) notes up through Environments, Variables, and Bindings.
topic Functions
Slides: ➊ racket-functions.pdf ➍ racket-functions-4up.pdf
Code:
Reference: How to Program (Racket) notes sections
topic Pairs, Lists, and GC
Slides: ➊ racket-lists.pdf ➍ racket-lists-4up.pdf
Code:
Reference: How to Program (Racket) notes section Cons and Lists
topic Local Bindings and Scope
Slides: ➊ racket-let.pdf ➍ racket-let-4up.pdf
Code:
Reference: How to Program (Racket) notes section Local Bindings and Scope
topic First-class and Higher-order Functions
← Friday, 7 February - Tuesday, 11 February
Slides: ➊ racket-hof.pdf ➍ racket-hof-4up.pdf
Code:
Reference: How to Program (Racket) notes section First-class and Higher-order Functions
topic Tail Recursion
← Tuesday, 11 February - Friday, 14 February
Slides: ➊ racket-tail.pdf ➍ racket-tail-4up.pdf
Code:
topic Lexical Scope and Closures
Slides: ➊ racket-lexical-closures.pdf ➍ racket-lexical-closures-4up.pdf
Code:
topic Immutability and Referential Transparency
Slides: ➊ racket-immutable.pdf ➍ racket-immutable-4up.pdf
What’s in a Type
topic ML and Static Types
Slides: ➊ ml.pdf ➍ ml-4up.pdf
Reference: ML Summary, Part 1
Alternative: Programming in Standard ML, Ch. 2-6
topic Datatypes, Patterns, and Parametric Polymorphism
← Friday, 28 February - Tuesday, 3 March
Slides: ➊ ml-datatypes.pdf ➍ ml-datatypes-4up.pdf
Code:
Reference: ML Summary, Part 2
Alternative: Programming in Standard ML, Ch. 7-12, 16.
topic Patterns Everywhere
Slides: ➊ ml-patterns.pdf ➍ ml-patterns-4up.pdf
Code:
Reference: ML Summary, Part 2
Alternative: Programming in Standard ML, Ch. 7-12, 16.
topic Currying and Partial Application
Slides: ➊ ml-curry.pdf ➍ ml-curry-4up.pdf
Code:
Reference: ML Summary, Part 3
topic Restricted Mutable State
Slides: ➊ ml-ref.pdf ➍ ml-ref-4up.pdf
Reference: ML Summary, Part 3
topic Type Inference
Slides: ➊ ml-inference.pdf ➍ ml-inference-4up.pdf
Code:
Reference:
ML so far:
- Programming in SML Ch. 2-13 (everything except ADTs); 18, 19, 20, 21, 22, 32-34. (Includes extra features/details we do not cover)
- ML Summary notes, parts 1, 2, 3, 4
topic Abstract Types
← Tuesday, 31 March - Friday, 3 April
Slides: ➊ ml-adts.pdf ➍ ml-adts-4up.pdf
Code:
Reference:
- Slides matching UW CSE 341 videos
- ML Summary, Part 4
- Programming in SML 18, 19, 20, 21, 22, 32-34. (Includes extra features/details we do not cover)
Videos:
Two parts, in order:
-
ML Structures, Signatures, and Abstract Types
This set of videos is by Dan Grossman, University of Washington. Our course adapts several components of Dan's course (UW CSE 341). The material and perspective on this topic are quite similar to Ben's 251 lecture, slides, and code (above), though the typical CS 251 slides are organized slightly differently. See the Reference section above for slides that match closely to these videos. (Our ML Summary notes already match.)
- ▸ mp4 ▸ m4v captioned Modules for Namespace Management
- ▸ mp4 ▸ m4v captioned Signatures and Hiding Things
- ▸ mp4 ▸ m4v captioned A Module Example
- ▸ mp4 ▸ m4v captioned Signature for Our Example
- ▸ mp4 ▸ m4v captioned Signature Matching
- ▸ mp4 ▸ m4v captioned An Equivalent Structure
- ▸ mp4 ▸ m4v captioned Another Equivalent Structure
- ▸ mp4 ▸ m4v captioned Different Modules Define Different Types
When Things Happen
topic Delayed Evaluation, Streams, Laziness
← Tuesday, 7 April - Friday, 10 April
Slides: ➊ ml-delay.pdf ➍ ml-delay-4up.pdf
Code:
Reference:
- ML Summary, Part 5
- Programming in SML, Ch. 15
Videos: ☰ yt playlist
topic Parallelism
Slides: ➊ parallelism.pdf ➍ parallelism-4up.pdf
Code:
Reference: Programming in Manticore, a Heterogenous Parallel Functional Language, sections 2.3, 4, 5.3. (Skim 1)
Videos: ☰ yt playlist
topic Concurrency
← Friday, 17 April - Tuesday, 21 April
Slides: ➊ concurrency.pdf ➍ concurrency-4up.pdf
Code:
Reference:
- Concurrent Programming in ML. John H. Reppy. Cambridge University Press, 1999. (local access): ch. 1, 3. Skim 2 for context.
- Shorter coverage of most of the same material: Programming in Manticore, a Heterogenous Parallel Functional Language, sections 3.1-3.3, 3.5.2.
Videos: ☰ yt playlist
Why a Broader PL Mindset
topic Static vs. Dynamic Typing
Slides: ➊ ml-racket-static-dynamic.pdf ➍ ml-racket-static-dynamic-4up.pdf
Reference:
- Slides matching UW CSE 341 videos
- Notes matching UW CSE 341 videos (start at “ML Versus Racket”)
Videos:
This set of videos is by Dan Grossman, University of Washington. Our course adapts several components of Dan’s course (UW CSE 341). The material and perspective on this topic are quite similar to Ben’s 251 lecture, slides, and code (above), though the typical CS 251 slides are organized slightly differently. See the Reference section above for slides and notes that match closely to these videos.
- ▸ mp4 ▸ m4v captioned ML Versus Racket
- ▸ mp4 ▸ m4v captioned What is Static Checking?
- ▸ mp4 ▸ m4v captioned Soundness and Completness
- ▸ mp4 ▸ m4v captioned Weak Typing
- ▸ mp4 ▸ m4v captioned Static Versus Dynamic Typing Part One
- ▸ mp4 ▸ m4v captioned Static Versus Dynamic Typing Part Two
topic Dynamic Dispatch
Slides: ➊ oo-dispatch.pdf ➍ oo-dispatch-4up.pdf
Reference:
Videos: ☰ yt playlist
topic FP vs. OO Decomposition
Slides: ➊ oo-decomposition.pdf ➍ oo-decomposition-4up.pdf
Code:
Reference:
- Slides matching UW CSE 341 videos
- Notes matching UW CSE 341 videos (see first two sections, beyond is optional)
Videos:
This set of videos is by Dan Grossman, University of Washington. Our course adapts several components of Dan’s course (UW CSE 341). The material and perspective on this topic are quite similar to Ben’s 251 lecture, slides, and code (above), though the typical CS 251 slides are organized slightly differently. See the Code and Reference sections above for code, slides, and notes that match closely to these videos.
-
▸ mp4
▸ m4v captioned
OOP vs. Functional Decompositions
- (Note: A Ruby section extends from 6:45 to 10:00, where a quick recap in Java is given. Feel free to follow the discussion without trying to follow the Ruby features, or just skip to the Java part.)
- ▸ mp4 ▸ m4v captioned Adding Operations or Variants
There’s more in this direction if you are curious, but these are the basics I would like you to see.
topic Deductive Programming
Slides: ➊ deductive.pdf ➍ deductive-4up.pdf
Code:
Reference:
- Learn Prolog Now!, Ch. 1-4, 6, 10.
- or Adventure in Prolog, Ch. 1-5, 8, 10, 11, 13.