CIS 705 — Programming Languages — Spring 2009
Resources
Lectures
In the following, TAPL stands for the book
Types and Programming Languages, and
DAWOC stands for the book
Developing Applications With Objective Caml.
The OCaml programs referred to below can also be found in the directory
~stough/705 (/home/faculty/stough/705) on the CIS
Linux system.
- Lecture 1: Jan 15
- Reading: Chapter 1 of TAPL
- Course Syllabus (view/print)
- Tour of course website
- TAPL Chapter 1: Introduction
(view/print)
- Lecture 2: Jan 20
- Reading: Chapter 2 of TAPL
- TAPL Chapter 2: Mathematical Preliminaries
(view/print)
- Lecture 3: Jan 22
- Reading: Chapter 3 of TAPL through Section 3.3
- TAPL Chapter 2: Mathematical Preliminaries
(view/print)
- TAPL Chapter 3: Untyped Arithmetic Expressions
(view/print)
- Lecture 4: Jan 27
- Reading: Chapter 3 of TAPL
- TAPL Chapter 3: Untyped Arithmetic Expressions
(view/print)
- Lecture 5: Jan 29
- Reading: Chapter 3 of TAPL
- TAPL Chapter 3: Untyped Arithmetic Expressions
(view/print)
- Lecture 6: February 3
- Lecture 7: February 5
- Reading: Up through "Presenting Part I" of DAWOC
- TAPL Chapter 3: Untyped Arithmetic Expressions
(view/print)
- Introduction to OCaml
- Lecture 8: February 10
- Reading: Up through "Functional Core of Objective CAML" of DAWOC
- Recursive and iterative versions of factorial in OCaml
(fact1.ml,
fact2.ml,
fact3.ml)
- Combine function (without pattern matching)
(combine1.ml)
- Lecture 9: February 12
- Lecture 10: February 17
- Lecture 11: February 19
- Reading: Chapters 4 and 5 of TAPL
- Maximal increasing sublists
(maximal.ml)
- TAPL Chapter 4: Implementation of Untyped Arithmetic Expressions
(see syntax.ml and core.ml)
(arith,
arith.tar.gz)
- Tail-Recursive Implementation of Untyped Arithmetic Expressions
(see syntax.ml and core.ml)
(arith-tail,
arith-tail.tar.gz)
- Lecture 12: February 24
- Reading: Chapter 5 of TAPL
- TAPL Chapter 5: Untyped Lambda Calculus
(view/print)
- Lecture 13: February 26
- Reading: Chapter 5 of TAPL
- TAPL Chapter 5: Untyped Lambda Calculus
(view/print)
- Lecture 14: March 3
- Lecture 15: March 5
- Reading: Chapter 6 of TAPL
- TAPL Chapter 5: Untyped Lambda Calculus
(view/print)
- Definition of factorial using functional
(fact4.ml)
- Lecture 16: March 10
- Reading: Chapter 7 of TAPL
- TAPL Chapter 5: Untyped Lambda Calculus
(view/print)
- TAPL Chapter 6: Nameless Representation of Terms
(view/print)
- Lecture 17: March 12
- Reading: Chapter 7 of TAPL
- TAPL Chapter 6: Nameless Representation of Terms
(view/print)
- TAPL Chapter 7: Untyped Lambda Calculus Implementation
(see syntax.ml, core.ml and test.f)
(untyped,
untyped.tar.gz)
- Fibonacci function in Untyped Lambda Calculus
(fib)
- Assignment 4
(gcd-test)
- Lecture 18: March 24
- Reading: Chapter 8 of TAPL
- TAPL Chapter 8: Typed Arithmetic Expressions
(view/print)
- Lecture 19: March 26
- Reading: Chapter 9 of TAPL
- TAPL Chapter 8: Typed Arithmetic Expressions
(view/print)
- TAPL Chapter 9: Simply Typed Lambda Calculus
(view/print)
- Lecture 20: March 31
- Reading: Chapter 9 of TAPL
- TAPL Chapter 9: Simply Typed Lambda Calculus
(view/print)
- Lecture 21: April 2
- Reading: Chapter 10 of TAPL
- TAPL Chapter 9: Simply Typed Lambda Calculus
(view/print)
- Lecture 22: April 7
- Reading: Chapters 10 and 11 of TAPL
- TAPL Chapter 10: Simply Typed Lambda Calculus Implementation
(see syntax.ml, core.ml and test.f)
(simplebool,
simplebool.tar.gz)
- TAPL Chapter 11: Simple Extensions
(view/print)
- Lecture 23: April 9
- Lecture 24: April 14
- TAPL Chapter 11: Simple Extensions
(view/print)
- Lecture 25: April 16
- Reading: Chapter 12 of TAPL
- TAPL Chapter 11: Simple Extensions
(view/print)
- Lecture 26: April 21
- Reading: Chapter 12 of TAPL
- TAPL Chapter 12: Normalization of the Simply Typed Lambda-Calculus
- Lecture 27: April 23
- Reading: Chapter 12 of TAPL
- TAPL Chapter 12: Normalization of the Simply Typed Lambda-Calculus
- Lecture 28: April 28
- Lecture 29: April 30
- Reading: Section References of Chapter Imperative Programming of DAWOC
- Reading: Chapter 13 of TAPL
- Imperative version of factorial in OCaml, using references
(fact5.ml)
- Do-it-yourself objects in OCaml, using references
(object.ml)
- TAPL Chapter 13: References
(view/print)
- Lecture 30: May 5
- Lecture 31: May 7
- TAPL Chapter 13: References
(view/print)
- End of course discussion
Assignments
Final Examination
Old Assignments
Old Final Examination
Alley Stoughton
(stough@k-state.edu)