CMSC 22300: Functional Programming

Winter Quarter, 2008 
MWF, 1:30 pm - 2:20 pm
Ryerson 277


Index

Announcements
Instructor Contact Info
Course Description
Course Textbooks
Programming Exercises
Course Policies
Course Mailing List
Midterm Exam
Homework Assignments
Handouts
Sample Code
Additional Useful Links


Announcements/Updates

The first class will be on Monday, Jan. 7, 2008 at 1:30pm in Ry 277.

Instructor Contact Info

Name Role Office Office hours Phone Email
David MacQueen Professor Hinds B-045 By appointment 2-4980 dbm@cs.uchicago.edu

Course Description

This course presents the functional programming paradigm and related program design concepts and techniques for systematically developing and reasoning about programs. The Haskell programming language as the vehicle for illustrating functional programming; it is a pure, lazy functional language that represents the functional paradigm in its most undiluted form. By providing better support for modularity and abstraction, functional programming languages make it easier to produce correct and well-structured software. We will look at a range of programming examples covering lists, trees, and symbolic and textual structures. Functional programming is often used in applications concerned with analyzing and manipulating languages and logics (metaprogramming), and there is growing interest in using functional programming in new applications such as computer graphics and internet search.

Knowledge of another programming language (e.g. Scheme, C, Java) and some programming experience would be helpful, but is not necessary. Experience with the Scheme language is particularly relevant, since Scheme is also a functional programming language.

Course Textbook

The main textbook for the course is Programming in Haskell by Graham Hutton.

Another textbook that is useful for background material or further study is: The Haskell School of Expression: Learning Functional Programming through Multimedia, by Paul Hudak. Hudak is also one of the authors of a good online tutorial, A Gentle Introduction to Haskell.

Another very important resource is the Haskel 98 Report, the reference manual for the Haskell 98 language.

Programming Exercises

This is a course about programming, so there will be regular programming exercises and small projects. The programming exercises can be writen and tested using one of two recommended Haskell implementations:

Both of these implementations are installed on the CS Department servers, and the interactive programs (hugs98, ghci) are largely compatible, so you can use either. You can also install either or both of these programs on your personal machine -- see installation instructions at the respective web sites.

Course Policies

Course Mailing List

A mailing list is being created for the course. The address is cmsc22100@mailman.cs.uchicago.edu. The web page for the mailing list will be a https://mailman.cs.uchicago.edu/mailman/listinfo/cmsc22300.

Midterm Exam

midterm.hs;

Homework Assignments

Homework 1 (due Wednesday, Jan 16);

Handouts

Here are links to PDF files of class handouts. (none so far)

Sample Code

None so far, but see the textbook web site.

Papers and Presentations

Additional Useful Links


Dave MacQueen
Last modified: Wed Feb 27 12:08:33 CST 2008