CSci 555: Functional Programming
Spring Semester 2003
Syllabus


Locations

The spring semester 2003 class meets in 235 Weir Hall at 8:00 a.m. to 9:15 a.m. on Tuesdays and Thursdays.

The class is taught by Prof. Conrad Cunningham, whose office is in 203 Weir Hall. The official office hours for this class are Wednesday from 1:00 p.m. until 3:00 p.m. and by appointment at other times.

Prof. Cunningham's voice telephone number is (662) 915-5358 and fax number is (662) 915-5623. His WWW home page is http://www.cs.olemiss.edu/~hcc/ and his email address is cunningham@cs.olemiss.edu (send?).

The WWW home page for this class is http://www.cs.olemiss.edu/~hcc/csci555/ .

The final examination for this class is scheduled for Wednesday, May 7, at 8:00 a.m.


Student Disabilities Services Statement

"It is the responsibility of any student with a disability who requests a reasonable accommodation to contact the Office of Disability Services (915-7128). Contact will then be made by that office through the student to the instructor of this class. The instructor will then be happy to work with the student so that a reasonable accommodation of any disability can be made."


Course Goals

The goals of this course are (1) to introduce the students to the principles and techniques of programming with a purely functional, lazily evaluated programming language and (2) to give them practice in reasoning about and manipulating programs as mathematical entities.


Course Description from the Catalog

The principles and techniques of programming with functions. Purely functional programming languages; recursion; higher-order functions; reduction models; strictness; type systems; list operations; infinite data structures; program synthesis and transformation.


Prerequisites

Senior or graduate standing in computer science.

Anyone who does not have a mature understanding of programming in an imperative language (e.g., Java, C/C++, or Pascal), of basic algorithms and data structures (e.g., sorting, searching, lists, stacks, and trees), and of basic discrete mathematics (e.g., sets, relations, functions, induction, and simple algebraic concepts) should contact the instructor before enrolling in the course. Successful completion of CSci 111, 112, and 211 and Math 301 should give sufficient background.


Source Materials

Textbook:
Simon Thompson. Haskell: The Craft of Functional Programming, SECOND EDITION. Addison Wesley, 1999. ISBN: 0-201-34275-8.

Notes:
H. Conrad Cunningham. Notes on Functional Programming with Gofer. Technical Report UMCIS-1995-01.
Note: Gofer is an earlier name for the Hugs interpreter used this semester.

Software:
Hugs Interpreter for the language Haskell 98. The system was originally developed by Mark P. Jones, now of the Oregon Graduate Institute.

See the Website http://www.haskell.org/hugs for the available downloads. There is a local copy of the Windows installers for the Hugs interpreter and the Hugs graphics library.

Hugs will be available on Department systems as announced later.

Manual:
Mark P. Jones and John C. Peterson. Hugs 98, A Functional Programming System Based on Haskell 98, User Manual Manual [PDF].

Tutorial:
Paul Hudak, John Peterson, and Joseph Fasel. A Gentle Introduction to Haskell Version 98

Readings:
Various journal and conference articles, research reports, and book excerpts as appropriate.

Course Topics

  1. Functional programming concepts. (3 hours)
  2. Introduction to Haskell. First-order functions. Data types. (9 hours)
  3. Higher-order functions. (9 hours)
  4. List comprehensions. (1 hour)
  5. User-defined data types. Trees. (3 hours)
  6. Programming laws. Program synthesis techniques. (6 hours)
  7. Purely functional input/output. (2 hours)
  8. Interpretation techniques. Program efficiency. (3 hours)
  9. Type Classes. Modules. Abstract data types. (3 hours)
  10. Infinite data structures. (2 hours)
  11. Exams (3 hours)


Professional Conduct

As a student in CSci 555, you are expected to conduct yourself in a professional manner according to the Honor Code of the School of Engineering, the Information Tchnology Appropriate Use Policy, the M Book, and any other relevant policies.

Limited Collaboration Policy. Unless otherwise indicated, any homework assignment or programming exercise given in this class will be an individual assignment. The work you submit is to reflect the knowledge, understanding, and skill that you have attained as an individual. However, the instructor does want to encourage the development of a community of scholars who are actively engaged in discussion of the ideas related to this course. With this in mind, you are allowed to discuss solutions of the homework and programming problems with other students if done so according to the following guidelines:


Grading

The grading scale for this class is A [90..100], B [80..90), C [70..80), D [60..70), and F [0..60).

Two-thirds of the semester grade will come from the exam average and one-third from the homework assignment/project average.


Assignments and Projects


Examinations


UP to CSCI 555 root document?


Copyright © 2003, H. Conrad Cunningham
Last modified: Wed 8 Jan 2003.