IndexAnnouncements
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 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.
- The Glasgow Haskell Compiler (ghc), which comes with a semi-interactive variant called ghci.
- Hugs 98, which is a semi-interactive interpreter.
Course Policies
- Grading will be based on the following:
- Homework exercises: 40%
- Midterm exam: 25%
- Final exam: 35%
- Assigments: Homework assignments will normally be given on Wednesdays and will be due at the beginning of class the following Wednesday. Late homework can be handed in the class following the due date with a 30% penalty.
- Collaboration: As in most courses, we encourage students to discuss course material among themselves. Discussions of assignment problems is also permitted to an extent, but submitted assignments should be your own work, and collaborative discussions should be acknowledged.
- Final Examination: The final examination will be a two hour in-class exam given during Finals week.
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
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
- Why Functional Programming Matters by John Hughes.
- Monads and IO in Haskell by Amitabha Sanyal.
Additional Useful Links
- www.haskell.org, the main web site for the Haskell language.
- www.cs.nott.ac.uk/~gmh/book.html, the web page for the text book. Powerpoint slides and code are available here.