3 These topics are organized in two ways: by their content, and by the
4 week in which they were introduced.
6 ## Topics by content ##
8 * [[Basics of functional programming|topics/week1]]
10 * [[Order: static versus dynamic|topics/week1 order]]
16 * [[Order in programming languages and natural language|topics/order]]
17 This discussion considers conjunction in a language that recognized presupposition failure.
18 * [[Introduction to functional programming|topics/week1]]
19 Basics of functional programming: `let`, `case`, pattern matching, and
20 recursion. Definitions of factorial.
21 * [[Homework for week 1|exercises/assignment1]]
22 * [[Advanced notes|week1 advanced notes]]
24 *More coming, please wait...*
27 Once we get up and running, the central focii of the course will be
28 **continuations**, **types**, and **monads**. One of the on-going themes will
29 concern evaluation order and issues about how computations (inferences,
30 derivations) unfold in (for instance) time. The key analytic technique is to
31 form a static, order-independent model of a dynamic process. We'll be
32 discussing this in much more detail as the course proceeds.
34 The logical systems we'll be looking at include:
36 * the "pure"/untyped lambda calculus
38 * the simply-typed lambda calculus
39 * polymorphic types with System F
40 * some discussion of dependent types
41 * if time permits, "indeterministic" or "preemptively parallel" computation and linear logic
45 recursion using the Y-combinator
46 evaluation-order stratgies
47 normalizing properties
48 the Curry-Howard isomorphism(s)
49 monads in category theory and computation