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
Lecture:
How to Program
topic Racket Expressions and Bindings
← Tuesday, 3 September - Friday, 6 September
Lecture:
Code:
Reference: How to Program (Racket) notes up through Environments, Variables, and Bindings.
topic Functions
Lecture:
Code:
Reference: How to Program (Racket) notes sections
topic Pairs, Lists, and GC
Lecture:
Code:
Reference: How to Program (Racket) notes section Cons and Lists
topic Local Bindings and Scope
Lecture:
Code:
Reference: How to Program (Racket) notes section Local Bindings and Scope
topic First-class and Higher-order Functions
← Friday, 13 September - Tuesday, 17 September
Lecture:
Code:
Reference: How to Program (Racket) notes section First-class and Higher-order Functions
topic Tail Recursion
← Tuesday, 17 September - Friday, 20 September
Lecture:
Code:
topic Lexical Scope and Closures
Lecture:
Code:
topic Immutability and Referential Transparency
← Tuesday, 24 September - Friday, 27 September
Lecture:
What’s in a Type
topic ML and Static Types
Lecture:
Reference: ML Summary, Part 1
Alternative: Programming in Standard ML, Ch. 2-6
topic Datatypes, Patterns, and Parametric Polymorphism
Lecture:
Code:
Reference: ML Summary, Part 2
Alternative: Programming in Standard ML, Ch. 7-12, 16.
topic Patterns Everywhere
← Tuesday, 8 October - Friday, 11 October
Lecture:
Code:
Reference: ML Summary, Part 2
Alternative: Programming in Standard ML, Ch. 7-12, 16.
topic Currying and Partial Application
Lecture:
Code:
Reference: ML Summary, Part 3
topic Restricted Mutable State
Lecture:
Reference: ML Summary, Part 3
topic Abstract Types
Lecture:
Code:
Reference:
- ML Summary, Part 4
- Programming in SML 18, 19, 20, 21, 22, 32-34. (Includes extra features/details we do not cover)
topic ASTs, Expression Interpreter
Reference:
This class session meets in the lab for a quick code tour and hands-on work with the Interpretive Dance assignment.
topic Abstract Types
Lecture:
Code:
Reference:
- ML Summary, Part 4
- Programming in SML 18, 19, 20, 21, 22, 32-34. (Includes extra features/details we do not cover)
topic Type Inference
Lecture:
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 Static vs. Dynamic Typing
Lecture:
When Things Happen
topic Delayed Evaluation, Streams, Laziness
Lecture:
Code:
Reference:
- ML Summary, Part 5
- Programming in SML, Ch. 15
topic Parallelism
← Tuesday, 12 November - Friday, 15 November
Lecture:
Code:
Reference: Programming in Manticore, a Heterogenous Parallel Functional Language, sections 2.3, 4, 5.3. (Skim 1)
topic Concurrency
← Friday, 15 November - Friday, 22 November
Lecture:
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.
Why a Broader PL Mindset
topic Dynamic Dispatch
← Friday, 22 November - Tuesday, 26 November
Lecture:
topic Subtyping
← Tuesday, 26 November - Tuesday, 3 December
Lecture:
Code:
topic FP vs. OO Decomposition
Lecture:
topic Deductive Programming
Lecture:
Code:
Reference:
- Learn Prolog Now!, Ch. 1-4, 6, 10.
- or Adventure in Prolog, Ch. 1-5, 8, 10, 11, 13.