Topics
These topics are organized in two ways: by their content, and by the week in which they were introduced.
Topics by content
- Groenendijk, Stokhof, and Veltman
Mutation and hyper-synonymy (no notes)
Functional Programming
- Introduction
- Week 1 Advanced notes
- "Rosetta Stone" page #1 for Kaupulet, Scheme, OCaml, Haskell
- Offsite links for help on learning Scheme, OCaml, and Haskell
- List Comprehensions
- Unit and its usefulness
- More tips on using Scheme
- Types in OCaml and Haskell (will be posted someday)
- Practical advice for working with OCaml and/or Haskell (will be posted someday)
- Kaplan on Plexy and the Maybe type
- Untyped lambda evaluator (in browser) (for home)
- Ramble on Monads and Modules
- Installing and Using the Juli8 Libraries
- Programming with mutable state
- Mutation and hyper-synonymy (no notes)
Order, "static versus dynamic"
- Order in programming languages and natural language
- Reduction Strategies and Normal Forms in the Lambda Calculus
- Unit and its usefulness
- Combinatory evaluator (for home)
- Programming with mutable state
- see also Continuation links, below
The Untyped Lambda Calculus
- Introduction to the Lambda Calculus
- Advanced notes on the Lambda Calculus
- Encoding data types in the Lambda Calculus
- Booleans
- Tuples
- Lists, v1 (as right-folds)
- Numbers, v1 ("Church's encoding")
- Arithmetic with Church numbers
- How to get the
tail
of v1 lists? - Some other list encodings
- Abortable list traversals
- Reduction Strategies and Normal Forms
- Fixed point combinators
- More about fixed point combinators
- Untyped lambda evaluator (in browser) (for home)
- Environments and Closures
Combinatory logic
- Introduction
- Combinatory evaluator (for home)
Typed Lambda Calculi
- Simply-typed lambda calculus (will be updated)
- System F (will be updated)
- Types in OCaml and Haskell (will be posted someday)
- see also Monads links, below
Monads
Continuations
Topics by week
Week 1:
- Order in programming languages and natural language This discussion considers conjunction in a language that recognized presupposition failure.
- Introduction to functional programming
Basics of functional programming:
let
,case
, pattern matching, and recursion. Definitions of factorial. - Advanced notes on functional programming
- Homework for week 1 (Answers)
Week 2:
- Introduction to the Lambda Calculus
- Advanced notes on the Lambda Calculus
- Encoding Booleans, Tuples, Lists, and Numbers
- Homework for week 2 (Answers)
Week 3:
- Arithmetic with Church numbers
- More on Lists
Introduces list comprehensions, discusses how to get the
tail
of lists in the Lambda Calculus, and some new list encodings - What is computation?
- Reduction Strategies and Normal Forms (posted on Monday 23 Feb)
- Unit and its usefulness
- Combinatory Logic
- Homework for week 3 (Answers)
Week 4:
- Fixed point combinators
- More about fixed point combinators
- Towards types (in progress)
- Homework for week 4 (Answers)
Week 5:
- Simply-typed lambda calculus
- System F
- Types in OCaml and Haskell (will be posted someday)
- Practical advice for working with OCaml and/or Haskell (will be posted someday)
- Homework for weeks 5 and 6 (Answers)
Week 6:
- footnote about "Plexy" from Kaplan's Demonstratives about Plexy; our notes comparing to the Maybe type
- (Recommended) King's discussion of Schiffer in Chapter 4 of The Nature and Structure of Content (2007)
- (Recommended) King's discussion of clausal complements and proposition-designators from Chapter 5 of The Nature and Structure of Content (2007)
- Michael Rieppel, "Being Something: Properties and Predicative Quantification"
Week 7:
- Combinatory evaluator
- Introducing Monads (updated Mon 23 Mar)
- Homework for week 7 (updated Mon 23 Mar)
- Environments and Closures
- Untyped lambda evaluator
Week 8:
Week 9:
- Installing and Using the Juli8 Libraries
- Using the OCaml Monad library
- Programming with mutable state
- A State Monad Tutorial
- Using multiple monads together
- Homework for weeks 8-9
Week 10:
- Groenendijk, Stokhof, and Veltman, "Coreference and Modality" (1996)
- Notes on GSV, with links to code
Week 12:
- Mutation and hyper-synonymy (no notes)
- Abortable list traversals
- List and tree zippers
- Homework for week 12
Week 13:
Week 14:
- Introducing continuations (includes CPS transforms from week 13)
- Manipulating trees with monads
Week 15: