Department of Computer Science
University of Wyoming


COSC 4780:
Principles of Programming Languages
Spring 2008
ARCHIVED!!!!!
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)".


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