CPSC 429/529: Functional Programming

 

Instructor: Carsten Schürmann
Department of Computer Science
Yale University
Time: MWF 9:30-10:30
Room: AKW400

  Home
  Schedule
  Handouts
  Assignments
  Projects
  Links
 
 

News

The projects have been posted to the website. Click here.

The projects are due April 30, end of reading week.

Zhanyong's slides on FRP are available from the following location: http://haskell.cs.yale.edu/frp/frp-intro.ppt

Homework 4 is out. It is due 4/11/2001, before class.

Chris League is the Teaching Assistant for this class. His office hours are

  • Tue 9:30 - 10:30
  • Wed 13:30 - 15:00
  • Fri 11:00 - 12:00
  • and by appointment, in AKW 303.

We have moved. Classes take now place in AKW400.

Abstract

The objective of this course is to provide a firm foundation in the fundamental principles of programming languages in general and functional programming languages in particular. We are concerned with high-level programming principles. Students learn how to decompose and represent programming problems, how to compose the solutions into complete programs, and how to reason about the programs to ensure that they are correct.

The course is taught using the Haskell programming language and the Standard ML programming languages, both languages that support higher-order functions, exceptions, polymorphism, data abstraction, and modularity. We cover the following topics.

  • Induction and recursion, invariants.
  • Symbolic computation.
  • Data abstraction, representation invariants.
  • Higher-order functions, continuations.
  • Lazy programming techniques.
  • Monads.
  • Streams and demand-driven programming.
  • Assignment, mutable data structures.
  • Modularity, and the structure of large programs.
  • Exceptions, advanced control.
  • State encapsulation, objects.

Textbooks

We will be using two optional textbooks for the programming assignments in this class. Most of the lecture material does not appear in this textbook. Supplementary will be made available electronically.
  • Paul Hudak. The Haskell School of Expression. Cambridge University Press, 2000.
  • L.C. Paulson. ML for the Working Programmer, 2nd edition, Cambridge University Press, 1996.

Grades

Homework assignments are a critical part of the course work. A full understanding of the material in the textbooks and lectures can only be gained by applying it to solve problems. Homework will be assigned in a biweekly fashion. They will be handed out Wednesday, and they are due two weeks from then.
  • Homework assignments: 40%
  • Midterm exam: 30%
  • Final project: 30%

Office Hours

My office hours are Wednesday and Friday 10:30-11:30 or by appointment.