# Topics #
These topics are organized in two ways: by their content, and by the
week in which they were introduced.
## Topics by content ##
* [[Introduction to functional programming|topics/week1 kapulet intro]]
* [[Order: static versus dynamic|topics/week1 order]]
* The Lambda Calculus
* [[Intro to the Lambda Calculus|topics/week2 lambda intro]]
* [[Advanced notes on the Lambda Calculus|topics/week2 lambda advanced]]
* Encoding data types in the Lambda Calculus
* [[Booleans, Tuples, Lists, and Numbers|topics/week2 encodings]]
## Topics by week ##
Week 1:
* [[Order in programming languages and natural language|topics/week1 order]]
This discussion considers conjunction in a language that recognized presupposition failure.
* [[Introduction to functional programming|topics/week1 kapulet intro]]
Basics of functional programming: `let`, `case`, pattern matching, and
recursion. Definitions of factorial.
* [[Advanced notes on functional programming|topics/week1 kapulet advanced]]
* [[Homework for week 1|exercises/assignment1]]
Week 2:
* [[Introduction to the Lambda Calculus|topics/week2 lambda intro]]
* [[Advanced notes on the Lambda Calculus|topics/week2 lambda advanced]]
* [[Encoding Booleans, Tuples, Lists, and Numbers|topics/week2 encodings]];
* [[Homework for week 2|exercises/assignment2]]
Week 3:
* More on Lists
Introduces list comprehensions, shows how to encode `tail` in the Lambda Calculus
* Combinatorial Logic
* Homework for week 3
*More coming, please wait...*