Department of Computer Science
University of Wyoming


COSC 4780:
Principles of Programming Languages
Spring 2008
SYLLABUS



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

Recommended Texts:
                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:

  • Midterm Exam   March 6, 2008 (in class)
  • Final Exam:   May 8, 2008 -- 10:15 am - 12:15 pm

    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:

  • Labs The machines in EN4059 and EN4086 have Emacs, Tuareg and Ocaml installed.

    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..