1ec4a92b187de09b216e405f452996332c408d25
[lambda.git] / content.mdwn
1 # Topics #
2
3 These topics are organized in two ways: by their content, and by the
4 week in which they were introduced.
5
6 ## Topics by content ##
7
8 *   [[What is computation?|topics/week3_what_is_computation]]
9
10 *   [[Kaplan on Plexy|topics/week6_plexy]]
11
12 *   Functional Programming
13
14     *   [[Introduction|topics/week1 kapulet intro]]
15     *   [[Week 1 Advanced notes|topics/week1 kapulet advanced]]
16     *   [["Rosetta Stone" page #1 for Kaupulet, Scheme, OCaml, Haskell|rosetta1]]
17     *   Offsite links for help on [[learning Scheme]], [[OCaml|learning OCaml]], and [[Haskell|learning Haskell]]
18     *   [[List Comprehensions|topics/week3 lists#comprehensions]]
19     *   [[Unit and its usefulness|topics/week3 unit]]
20     *   More tips on using Scheme
21     *   Types in OCaml and Haskell (will be posted soon)
22     *   Practical advice for working with OCaml and/or Haskell (will be posted soon)
23     *   [[Kaplan on Plexy|topics/week6_plexy]] and the Maybe type
24     *   Interpreter for Lambda terms
25     *   Starting with Monads
26
27 *   Order, "static versus dynamic"
28
29     *   [[Order in programming languages and natural language|topics/week1 order]]
30     *   [[Reduction Strategies and Normal Forms in the Lambda Calculus|topics/week3_evaluation_order]]
31     *   [[Unit and its usefulness|topics/week3 unit]]
32
33 *   The Untyped Lambda Calculus
34
35     *   [[Introduction to the Lambda Calculus|topics/week2 lambda intro]]
36     *   [[Advanced notes on the Lambda Calculus|topics/week2 lambda advanced]]
37     *   Encoding data types in the Lambda Calculus
38         *   [[Booleans|topics/week2 encodings#booleans]]
39         *   [[Tuples|topics/week2 encodings#tuples]]
40         *   [[Lists|topics/week2 encodings#lists]], v1 (as right-folds)
41         *   [[Numbers|topics/week2 encodings#numbers]], v1 ("Church's encoding")
42         *   [[Arithmetic with Church numbers|topics/week3_church_arithmetic]]
43         *   [[How to get the `tail` of v1 lists?|topics/week3 lists#tails]]
44         *   [[Some other list encodings|topics/week3 lists#other-lists]]
45     *   [[Reduction Strategies and Normal Forms|topics/week3_evaluation_order]]
46     *   [[Fixed point combinators|topics/week4_fixed_point_combinators]]
47     *   [[More about fixed point combinators|topics/week4_more_about_fixed_point_combinators]]
48     *   Interpreter for Lambda terms
49
50 *   Combinatory logic
51
52     *   [[Introduction|topics/week3 combinatory logic]]
53     *   Interpreter for Combinatory Logic terms
54
55 *   Typed Lambda Calculi
56
57     *   [[Simply-typed lambda calculus|topics/week5 simply typed]] (will be updated)
58     *   [[System F|topics/week5 system F]] (will be updated)
59     *   Types in OCaml and Haskell (will be posted soon)
60     *   Starting with Monads
61
62
63 ## Topics by week ##
64
65 Week 1:
66
67 *   [[Order in programming languages and natural language|topics/week1 order]]
68 This discussion considers conjunction in a language that recognized presupposition failure.
69 *   [[Introduction to functional programming|topics/week1 kapulet intro]]
70 Basics of functional programming: `let`, `case`, pattern matching, and
71 recursion.  Definitions of factorial.
72 *   [[Advanced notes on functional programming|topics/week1 kapulet advanced]]
73 *   [[Homework for week 1|exercises/assignment1]] ([[Answers|exercises/assignment1_answers]])
74
75 Week 2:
76
77 *   [[Introduction to the Lambda Calculus|topics/week2 lambda intro]]
78 *   [[Advanced notes on the Lambda Calculus|topics/week2 lambda advanced]]
79 *   [[Encoding Booleans, Tuples, Lists, and Numbers|topics/week2 encodings]]
80 *   [[Homework for week 2|exercises/assignment2]] ([[Answers|exercises/assignment2_answers]])
81
82 Week 3:
83
84 *These notes were developed over the course of the week. It'd be a good idea to review them again now, to be sure you've read all the content.*
85
86 *   [[Arithmetic with Church numbers|topics/week3_church_arithmetic]]
87 *   [[More on Lists|topics/week3 lists]]
88 Introduces list comprehensions, discusses how to get the `tail` of lists in the Lambda Calculus, and some new list encodings
89 *   [[What is computation?|topics/week3_what_is_computation]]
90 *   [[Reduction Strategies and Normal Forms|topics/week3_evaluation_order]] (posted on Monday 23 Feb)
91 *   [[Unit and its usefulness|topics/week3 unit]]
92 *   [[Combinatory Logic|topics/week3 combinatory logic]]
93 *   [[Homework for week 3|exercises/assignment3]] ([[Answers|exercises/assignment3_answers]])
94
95 Week 4:
96
97 *   [[Fixed point combinators|topics/week4_fixed_point_combinators]]
98 *   [[More about fixed point combinators|topics/week4_more_about_fixed_point_combinators]]
99 *   Towards types (in progress)
100 *   [[Homework for week 4|exercises/assignment4]]
101
102 Week 5:
103
104 *Note*: Jim will be updating and expanding the lecture notes by Tuesday, but doesn't want to delay any longer letting you have access to the drafts we (in part) presented from in seminar. But do come back and re-read the pages when the expanded versions are posted.
105
106 *   [[Simply-typed lambda calculus|topics/week5 simply typed]]
107 *   [[System F|topics/week5 system F]]
108 *   Types in OCaml and Haskell (will be posted soon)
109 *   Practical advice for working with OCaml and/or Haskell (will be posted soon)
110 *   [[Homework for weeks 5 and 6|exercises/assignment5]]
111
112 Week 6:
113
114 *   [[footnote about "Plexy"|readings/kaplan-plexy.pdf]] from Kaplan's *Demonstratives* about Plexy; [[our notes|topics/week6_plexy]] comparing to the Maybe type
115 *   (Recommended) [[King's discussion of Schiffer|readings/king-on-schiffer.pdf]] in Chapter 4 of *The Nature and Structure of Content* (2007)
116 *   (Recommended) [[King's discussion of clausal complements and proposition-designators|readings/king-on-logicism.pdf]] from Chapter 5 of *The Nature and Structure of Content* (2007) <!-- reviews and elaborates his paper "[Designating propositions](http://philpapers.org/rec/KINDP)" -->
117 *   Michael Rieppel, "[[Being Something: Properties and Predicative Quantification|readings/rieppel-beingsthg.pdf]]"
118
119 Week 7:
120
121 *   Interpreter for Combinatory Logic terms
122 *   Interpreter for Lambda terms
123 *   Starting with Monads
124
125