| Instructor: Pohl | E-mail:jpohl@cs.uwyo.edu |
| Office: Engineering 4093 | Phone: 766-5147 |
| Office hours: TBD | |
| Class: Tuesday and Thursday from 9:35 to 10:50 in EN 1046 | |
| Course Web Page: http://www.cs.uwyo.edu/~jpohl/courses/4780/ | |
Prerequisites: (COSC 3015) Functional Programming, (COSC 3020) Algorithms and Data Structures, or consent of instructor.
Required Textbook:
|
The Structure of Typed Programming Languages
by David A. Schmidt MIT Press 1994. Errata in text pdf |
|
The Functional Approach to Programming
by Guy Cousineau and Maurice Mauny Cambridge University Press, 1998 |
|
Types and Programming Languages
by Benjamin C. Pierce MIT Press 2002. Errata in text .txt |
Abstract: This course studies programming languages attempting to answer the question "What does a program mean?" Of course the "meaning" of a program is determined by how and what it computes which in turn is determined by the mechanisms which implement the constructs of the programming language. This course will marry the mathematically based approach from Schmidt's text with programming assignments in the OCaml dialect of the ML programming language. We describe these mechanisms mathematically and will implement them in a series of interpreters, each one implementing more, or different, features. As an added bonus, this course will teach students to think and program in a functional programming language.
Grading and Other Policies: Grades will be based on written
homework, a mid-term exam and a final exam. A standard grading scale
will be used, where an overall average of 90% or above earns an A, 80%
a B, 70% a C, and 60% a D. Work is due by the end of the due date;
late work is accepted for a few days, or until a solution is
distributed, at a substantial reduction in credit. Returned
work should be kept for verification of records.
| Midterm Exam | 20% |
| Homework | 50% |
| Final Exam | 30% |
| 100% |
The professor reserves the right to alter the grading scheme or to take
extenuating circumstances into account when assigning grades. Discussion
of the course material among students is encouraged, although students
are expected to write up their own homeworks. Academic dishonesty will
be treated in accordance with the strictest university standards. Students
are urged to read University regulation 802 , section 3 defines academic
dishonesty.
Homework: Email your homework to cosc4780 at cosc4780@cs.uwyo.edu.
Use the subject line "COSC 4780 HW (number) (your name)".
| No. | Due Date | Assignment | Source materials | Test Data | Remarks |
| 1 | Thursday, January 17 | hw1.pdf | Hickey Notes | tests , unnamed_functions.ml | Some links Imperative Programming, Declarative Programming, Functional Programming The installation instructions for Ocaml, Emacs and Tuareg have been updated -- some people were having problems getting Tuareg downloaded. |
| 2 | Thursday, January 24 | hw2.pdf | hw2.ml | tests hw2 | |
| 3 | Tuesday, January 29 | hw3b.pdf | hw3b.ml | tests hw3b | expected |
| 4 | Thursday, January 31 | hw4a.pdf | hw4a.ml | tests hw4a | |
| 5 | Tuesday, February 5 | hw5.pdf | |||
| 6 | Thursday, February 7 | hw6.pdf | hw6.ml | tests hw6 | Expected results -- new test file which matches results... |
| 7 | Tuesday, February 12 | hw7.pdf | hw7.ml | tests hw7 | Expected results |
| 8 | Tuesday, February 19 | hw8.pdf | |||
| 9 | Thursday, February 21 | hw9.pdf | hw9.ml | tests hw9 | Expected results |
| 10 | Tuesday, February 26 | hw10b.pdf | Note due date is correct!!! Midterm exam will be on March 6. | ||
| 11 | Thursday, February 28 | hw11b.pdf | ML file | test file | Results file, new ML as of 12:30 Wednesday |
| 12 | Tuesday, March 4 | hw12.pdf | Practice Problem on Lambda-calc | ||
| 13 | Tuesday, March 25 | hw13.pdf | ML file | test file | Results file |
| 14 | Thursday, April 3 | hw14.pdf | Due in class. New version 16:00 Wed. | ||
| 15 | Tuesday, April 8 | hw15.pdf | ML file | test file | Results file |
| 16 | Tuesday, April 15 | hw16.pdf | ML file | test file | Results file |
| 17 | Tuesday, April 22 | hw17.pdf | ML file | test file | Results file |
| 18 | Tuesday, April 29 | hw18.pdf | ML file | test file | Results file, new as of Monday April 28. |
| 19 | Thursday, May 1 | hw19.pdf | ML file | test file | Results file There is a new ML file that is much easier to complete. Take a look at it. It also works with the test file. If you have already done the work, simply modify your ML code to include the command constructor "Print" (very easy). |
Exams:
OCaml Stuff:
OCaml is an object-oriented dialect of the ML language developed by
the researchers at INRIA in
France. We will be implementing the semantics presented in Schmidt's
book using OCaml. There is an OCaml
web-page which includes free distributions
for both Linux and Windows. The Caml Light documentation (Caml light Manual)
seems to be the easiest place to find documentation on the standard
functions in the libraries.
There is a nice introduction to OCaml by Jason
Hickey, Introduction to
the Objective Caml Programming Language . There is also a
recent English translation of an OCaml book published in France by
O'Reiley Developing Applications with Objective Caml. A draft
of the translation is available online, either as a single (large) pdf file or chapter by chapter .
Laboratory Facilities: OCaml will be loaded on the machines in EN 4059 (only available when not in use for lectures) and in the upper divison CS lab in En 4086 (where there are both Linux and Windows machines.)
Other Resources:
Links:
Ocaml Language Reference Manual
www.ocaml.org
caml light this might work better if you're running an older version of windows.
instructions for installing a locally created ziped emacs folder with Tuareg already installed.
Installing Emacs, OCaml and Tuareg on Windows
Emacs Quick Reference Guide
Gnu Emacs
Emacs For Windows 95/98/2K/NT/ME/XP.
Introduction to the Objective Caml Programming Language
F# is Microsoft's version of OCaml that is built on top of the .NET framework..