CS 4450 (Principles of Programming Languages), Winter 2008

Credit Hours

3

Class Meeting Time

MWF 2:00PM - 2:50PM

Class Meeting Place: 116 EBW

Instructor: Dr. William L. Harrison (HarrisonWL 'at' missouri.edu)

Room 331 EBW

Phone: (573)882-2436

Office Hours: By appointment only. 

Teaching Assistant: Adam Procter (amp269 ‘at’ missouri.edu)

Prerequisites

CS 2050

Textbook

  1. Programming in Haskell, 1st Edition; by Graham Hutton. Published by Cambridge University Press. ISBN: 0521692695.

Announcements

1.      No announcements yet.

2.      Homework 0: Problems 3-5, in Hutton Chapter 1. Due Tuesday, January 29 by midnight. Email your solution to Adam.

3.      Homework 1: Due Friday, February 8th by midnight. Email your solution to Adam.

4.      Homework 2: Due Wednesday, February 20th by midnight. Email your solution to Adam.

5.      Homework 3: Due Tuesday, March 4th by midnight. Email your solution to Adam.

6.      Homework 4: Due Thursday, March 20th by midnight. Email your solution to Adam.

7.      Homework 5: Due Friday, April 25th by midnight. Email your solution to Adam.

7.      Homework 6: Due Wednesday, May 7th by midnight. Email your solution to Adam.

 

 

 

 

Lecture Materials

All lecture slides are posted here as we finish them. Programs that I write during class are available here.

Assignments and Solutions

All assignments are posted here as they are assigned. All solutions are posted here.

Overview:

Students taking this course can expect to acquire the following:

  1. functional programming techniques;
  2. an understanding of the major classes of high-level programming languages, language features, and programming styles, with an emphasis on applying concepts from programming language theory;
  3. formal methods of specifying the syntax and semantics of programming languages;
  4. and the knowledge needed to write parsers and interpreters for the major classes of programming languages.

 

Topics:

 

  1. Introduction to functional programming: strongly typed programming languages, recursion, folds and map, recursive data structures, proof by induction. (4 weeks)
  2. Environment-passing interpreters for the lambda calculus. (4 weeks)
  3. Modeling procedures as functions and closures (1 week)
  4. Binding forms: “letrec”, dynamic binding, static binding (2 weeks)
  5. Imperative features: reference types, assignment and sequencing (2 weeks)
  6. Evaluation strategies: eager vs. lazy languages; infinite data structures such as streams  (2 weeks)

 

Taking the course will involve four forms of activities:

  1. Attending and participating in lectures
  2. Doing assigned reading from the textbooks, papers, and supplementary materials
  3. Doing assigned homework
  4. Taking exams

Grading Scheme

  1. Written & programming assignments (40%)
  2. Midterm exam (25%)
  3. Final exam (35%)

Academic honesty

Academic honesty is fundamental to the activities and principles of a university. All members of the academic community must be confident that each person's work has been responsibly and honorably acquired, developed, and presented. Any effort to gain an advantage not given to all students is dishonest whether or not the effort is successful. The academic community regards academic dishonesty as an extremely serious matter, with serious consequences that range from probation to expulsion. When in doubt about plagiarism, paraphrasing, quoting, or collaboration, consult the course instructor.

Special Needs

If you have special needs as addressed by the Americans with Disabilities Act (ADA) and need assistance, please notify the Office of Disability Services, A048 Brady Commons, 882-4696 or the course instructor immediately. Reasonable efforts will be made to accommodate your special needs.

Copyright 2006 by William L. Harrison.