expand about eval order
[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     *   [[Introducing Monads|topics/week7_introducing_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     *   [[Combinatory evaluator|topics/week7_combinatory_evaluator]]
33
34 *   The Untyped Lambda Calculus
35
36     *   [[Introduction to the Lambda Calculus|topics/week2 lambda intro]]
37     *   [[Advanced notes on the Lambda Calculus|topics/week2 lambda advanced]]
38     *   Encoding data types in the Lambda Calculus
39         *   [[Booleans|topics/week2 encodings#booleans]]
40         *   [[Tuples|topics/week2 encodings#tuples]]
41         *   [[Lists|topics/week2 encodings#lists]], v1 (as right-folds)
42         *   [[Numbers|topics/week2 encodings#numbers]], v1 ("Church's encoding")
43         *   [[Arithmetic with Church numbers|topics/week3_church_arithmetic]]
44         *   [[How to get the `tail` of v1 lists?|topics/week3 lists#tails]]
45         *   [[Some other list encodings|topics/week3 lists#other-lists]]
46     *   [[Reduction Strategies and Normal Forms|topics/week3_evaluation_order]]
47     *   [[Fixed point combinators|topics/week4_fixed_point_combinators]]
48     *   [[More about fixed point combinators|topics/week4_more_about_fixed_point_combinators]]
49     *   Interpreter for Lambda terms
50
51 *   Combinatory logic
52
53     *   [[Introduction|topics/week3 combinatory logic]]
54     *   [[Combinatory evaluator|topics/week7_combinatory_evaluator]]
55
56 *   Typed Lambda Calculi
57
58     *   [[Simply-typed lambda calculus|topics/week5 simply typed]] (will be updated)
59     *   [[System F|topics/week5 system F]] (will be updated)
60     *   Types in OCaml and Haskell (will be posted soon)
61     *   [[Introducing Monads|topics/week7_introducing_monads]]
62
63
64 ## Topics by week ##
65
66 Week 1:
67
68 *   [[Order in programming languages and natural language|topics/week1 order]]
69 This discussion considers conjunction in a language that recognized presupposition failure.
70 *   [[Introduction to functional programming|topics/week1 kapulet intro]]
71 Basics of functional programming: `let`, `case`, pattern matching, and
72 recursion.  Definitions of factorial.
73 *   [[Advanced notes on functional programming|topics/week1 kapulet advanced]]
74 *   [[Homework for week 1|exercises/assignment1]] ([[Answers|exercises/assignment1_answers]])
75
76 Week 2:
77
78 *   [[Introduction to the Lambda Calculus|topics/week2 lambda intro]]
79 *   [[Advanced notes on the Lambda Calculus|topics/week2 lambda advanced]]
80 *   [[Encoding Booleans, Tuples, Lists, and Numbers|topics/week2 encodings]]
81 *   [[Homework for week 2|exercises/assignment2]] ([[Answers|exercises/assignment2_answers]])
82
83 Week 3:
84
85 *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.*
86
87 *   [[Arithmetic with Church numbers|topics/week3_church_arithmetic]]
88 *   [[More on Lists|topics/week3 lists]]
89 Introduces list comprehensions, discusses how to get the `tail` of lists in the Lambda Calculus, and some new list encodings
90 *   [[What is computation?|topics/week3_what_is_computation]]
91 *   [[Reduction Strategies and Normal Forms|topics/week3_evaluation_order]] (posted on Monday 23 Feb)
92 *   [[Unit and its usefulness|topics/week3 unit]]
93 *   [[Combinatory Logic|topics/week3 combinatory logic]]
94 *   [[Homework for week 3|exercises/assignment3]] ([[Answers|exercises/assignment3_answers]])
95
96 Week 4:
97
98 *   [[Fixed point combinators|topics/week4_fixed_point_combinators]]
99 *   [[More about fixed point combinators|topics/week4_more_about_fixed_point_combinators]]
100 *   Towards types (in progress)
101 *   [[Homework for week 4|exercises/assignment4]]
102
103 Week 5:
104
105 *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.
106
107 *   [[Simply-typed lambda calculus|topics/week5 simply typed]]
108 *   [[System F|topics/week5 system F]]
109 *   Types in OCaml and Haskell (will be posted soon)
110 *   Practical advice for working with OCaml and/or Haskell (will be posted soon)
111 *   [[Homework for weeks 5 and 6|exercises/assignment5]]
112
113 Week 6:
114
115 *   [[footnote about "Plexy"|readings/kaplan-plexy.pdf]] from Kaplan's *Demonstratives* about Plexy; [[our notes|topics/week6_plexy]] comparing to the Maybe type
116 *   (Recommended) [[King's discussion of Schiffer|readings/king-on-schiffer.pdf]] in Chapter 4 of *The Nature and Structure of Content* (2007)
117 *   (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)" -->
118 *   Michael Rieppel, "[[Being Something: Properties and Predicative Quantification|readings/rieppel-beingsthg.pdf]]"
119
120 Week 7:
121
122 *   [[Combinatory evaluator|topics/week7_combinatory_evaluator]]
123 *   Interpreter for Lambda terms
124 *   [[Introducing Monads|topics/week7_introducing_monads]] (updated Fri 20 Mar)
125 *   [[Homework for week 7|exercises/assignment7]]