Merge branch 'pryor'
authorJim Pryor <profjim@jimpryor.net>
Tue, 24 Aug 2010 02:06:01 +0000 (22:06 -0400)
committerJim Pryor <profjim@jimpryor.net>
Tue, 24 Aug 2010 02:06:01 +0000 (22:06 -0400)
index.mdwn
offsite_reading.mdwn [new file with mode: 0644]
schedule_of_topics.mdwn

index 457d9c7..4f1281e 100644 (file)
@@ -175,6 +175,13 @@ superficial syntactic differences between these languages.
 
 ##[[Schedule of Topics]]##
 
+##[[Lecture Notes]]##
+
+##[[Offsite Reading]]##
+
+There's lots of links here already to tutorials and encyclopedia entries about many of the notions we'll be dealing with.
+
+
 ----
 
 All wikis are supposed to have a [[SandBox]], so this one does too.
diff --git a/offsite_reading.mdwn b/offsite_reading.mdwn
new file mode 100644 (file)
index 0000000..ee863af
--- /dev/null
@@ -0,0 +1,95 @@
+Many off these links are to Wikipedia. You can learn a lot from such articles,
+so long as you remember they may sometimes mislead or make mistakes. However, I
+hope at this point in your education you'll have learned to be a guarded reader
+even of authoritative treatises by eminent authors. So you shouldn't need any
+Wikipedia-specific warnings.
+
+## General issues about variables and binding in programming languages ##
+
+*      [[!wikipedia Variable (programming)]]
+*      [[!wikipedia Variable shadowing]]
+*      [[!wikipedia Scope (programming)]]
+*      [[!wikipedia Free variables and bound variables]]
+*      [[!wikipedia Name binding]]
+*      [[!wikipedia Name resolution]]
+*      [[!wikipedia Parameter (computer science)]]
+
+## Functions as values, etc ##
+
+*      [[!wikipedia Higher-order function]]
+*      [[!wikipedia First-class function]]
+*      [[!wikipedia Closure (computer science)]]
+*      [[!wikipedia Currying]]
+*      [[!wikipedia Recursion (computer science)]]
+
+## Functional vs imperative programming ##
+
+*      [[!wikipedia Declarative programming]]
+*      [[!wikipedia Functional programming]]
+*      [[!wikipedia Purely functional]]
+*      [[!wikipedia Referential transparency (computer science)]]
+*      [[!wikipedia Imperative programming]]
+
+## Scheme and OCaml ##
+
+*      [[!wikipedia Scheme (programming language)]]
+*      [[!wikipedia Objective Caml]]
+
+## Untyped lambda calculus and combinatory logic ##
+
+*      [[!wikipedia Lambda calculus]]
+
+*      [[!wikipedia Haskell Curry]]
+*      [[!wikipedia Moses Schönfinkel]]
+*      [[!wikipedia Alonzo Church]]
+
+*      [[!wikipedia Combinatory logic]]
+*      [[!wikipedia B,C,K,W system]]
+*      [[!wikipedia SKI combinatory calculus]]
+
+*      [[!wikipedia Church-Rosser theorem]]
+*      [[!wikipedia Normalization property]]
+*      [[!wikipedia Turing completeness]]
+
+*      [[!wikipedia Church encoding]]
+*      [[!wikipedia Y combinator]]
+
+*      [[!wikipedia Curry-Howard isomorphism]]
+
+*      [[!wikipedia Evaluation strategy]]
+*      [[!wikipedia Eager evaluation]]
+*      [[!wikipedia Lazy evaluation]]
+*      [[!wikipedia Strict programming language]]
+
+## Types ##
+
+*      [[!wikipedia Tagged union]]
+*      [[!wikipedia Algebraic data type]]
+*      [[!wikipedia Pattern matching]]
+*      [[!wikipedia Unit type]]
+*      [[!wikipedia Bottom type]]
+*      [[!wikipedia Typed lambda calculus]]
+*      [[!wikipedia Simply typed lambda calculus]]
+*      [[!wikipedia Type polymorphism]]
+*      [[!wikipedia System F]]
+
+*      [[!wikipedia Side effect (computer science)]]
+*      [[!wikipedia Reference (computer science)]]
+*      [[!wikipedia Pointer (computing)]]
+
+## Continuations ##
+
+*      [[!wikipedia Continuation]]
+*      [[!wikipedia Continuation-passing style]]
+*      [[!wikipedia Call-with-current-continuation]]
+*      [[!wikipedia Delimited continuation]]
+
+## Monads ##
+
+*      [[!wikipedia Monad (functional programming)]]
+
+## Linear Logic ##
+
+*      [[!wikipedia Linear logic]]
+
+
index fad5256..52455c5 100644 (file)
@@ -14,10 +14,11 @@ This is very sketchy at this point, but it should give a sense of our intended s
 
 1.     Beta reduction
 2.     Substitution; using alpha-conversion and other strategies
-3.     Conversion versus Reduction
+3.     Conversion versus reduction
 4.     Eta reduction and "extensionality"
 5.     Different evaluation strategies (call by name, call by value, etc.)
 6.     Strongly normalizing vs weakly normalizing vs non-normalizing; Church-Rosser Theorem(s)
+6.     Lambda calculus compared to combinatorial logic
 
 7.     Encoding pairs (and triples and ...)
 8.     Encoding booleans