# 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: