Instructor | Alley Stoughton |

Office | N214 |

Phone | 532-7906 |

alley.stoughton@icloud.com | |

Personal Website | people.cis.ksu.edu/~stough/ |

Course Website | people.cis.ksu.edu/~stough/705/ |

Lectures | TU 2:30-3:45 p.m. N122 |

Office Hours | TU 4:00-5:00 p.m. N214 |

- Course Syllabus (view/print)
- E-mail Messages
- OCaml Resources
*Types and Programming Languages*(*TAPL*) Website*Developing Applications With Objective Caml*(*DAWOC*) Website- LaTeX Document Preparation System

In the following, *TAPL* stands for the book
*Types and Programming Languages*, and
*DAWOC* stands for the book
*Developing Applications With Objective Caml*.

- Lecture 1: January 14
- Lecture 2: January 19
- Lecture 3: January 21
- Lecture 4: January 26
- Lecture 5: January 28
- Lecture 6: February 2
- Reading: Chapter 3 of
*TAPL* *TAPL*Chapter 3: Untyped Arithmetic Expressions (view/print)- Assignment 1

- Reading: Chapter 3 of
- Lecture 7: February 4
- Lecture 8: February 9
- Reading: Up through "Functional Core of Objective CAML" of
*DAWOC* - Introduction to OCaml
- Recursive and iterative versions of factorial in OCaml
(
`fact1.ml`,`fact2.ml`,`fact3.ml`) - Combine function (without pattern matching)
(
`combine1.ml`)

- Reading: Up through "Functional Core of Objective CAML" of
- Lecture 9: February 11
- Reading: Chapter 2 of
*DAWOC* - Combine function with and without pattern matching
(
`combine1.ml`,`combine2.ml`) - The map function
(
`map.ml`) - Insertion sorting via trees
(
`tree1.ml`,`tree2.ml`)

- Reading: Chapter 2 of
- Lecture 10: February 16
- Reading: Chapter 2 of
*DAWOC* - Insertion sorting via trees
(
`tree1.ml`,`tree2.ml`) - Assignment 1 (Corrected)
- Model answers to Assignment 1
- Assignment 2 (
`edits.ml`) - Multiplication of lists (handling of exceptions)
(
`times1.ml`,`times2.ml`)

- Reading: Chapter 2 of
- Lecture 11: February 18
- Reading: Chapter 4 of
*TAPL* - Staged computations
(
`staging.ml`) - Balanced sublists
(
`balanced`, understanding and correctness proof) *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`)

- Reading: Chapter 4 of
- Lecture 12: February 23
- Lecture 13: February 25
- Lecture 14: March 2
- Reading: Chapter 5 of
*TAPL* - Assignment 3
(
`edits.ml`,`minimal-edits.ml`) *TAPL*Chapter 5: Untyped Lambda Calculus (view/print)

- Reading: Chapter 5 of
- Lecture 15: March 4
- Lecture 16: March 9
- Lecture 17: March 23
- Lecture 18: March 25
- Reading: Chapter 8 of
*TAPL* *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
(
`sum-range-test`) *TAPL*Chapter 8: Typed Arithmetic Expressions (view/print)

- Reading: Chapter 8 of
- Lecture 19: March 30
- Lecture 20: April 1
- Lecture 21: April 6
- Lecture 22: April 8
- Reading: Chapters 10 and 11 of
*TAPL* *TAPL*Chapter 9: Simply Typed Lambda Calculus (view/print)- Assignment 5

- Reading: Chapters 10 and 11 of
- Lecture 23: April 13
- Reading: Chapters 10 and 11 of
*TAPL* - Assignment 5
*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)

- Reading: Chapters 10 and 11 of
- Lecture 24: April 15
- Lecture 25: April 20
- Lecture 26: April 22
- Reading: Chapter 12 of
*TAPL* - Assignment 6
*TAPL*Chapter 12: Normalization of the Simply Typed Lambda-Calculus

- Reading: Chapter 12 of
- Lecture 27: April 27
- Reading: Chapter 12 of
*TAPL* - Assignment 6
*TAPL*Chapter 12: Normalization of the Simply Typed Lambda-Calculus

- Reading: Chapter 12 of
- Lecture 28: April 29
- Reading: Section References of Chapter Imperative Programming of DAWOC
- Reading: Chapter 13 of TAPL
- Preparation for Final Examination
- 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 29: May 4
- Lecture 30: May 6
- End of course discussion

- Assignment 1 (Original)
- Assignment 1 (Corrected)
- Model answers to Assignment 1
- Assignment 2
(
`edits.ml`,`minimal-edits-test.ml`) - Model answer to Assignment 2
(
`minimal-edits.ml`) - Assignment 3
(
`edits.ml`,`minimal-edits.ml`) - Model answers to Assignment 3
- Assignment 4
(
`sum-range-test`) - Model answers to Assignment 4
(
`sum-range-untyped.txt`) - Assignment 5
- Model answers to Assignment 5
- Assignment 6
- Model answers to Assignment 6

- Assignment 1
- Model answers to Assignment 1
- Assignment 2
(
`random-lists`,`balanced-standalone`) - Model answers to Assignment 2
(
`balanced`) - Assignment 3
- Model answers to Assignment 3
(
`insert`) - Assignment 4
(
`gcd-test`) - Model answers to Assignment 4
(
`gcd-untyped.txt`) - Assignment 5
- Model answers to Assignment 5
- Assignment 6
- Model answers to Assignment 6

Alley Stoughton (alley.stoughton@icloud.com)