CSci 555: Functional Programming
Spring Semester 2000
Syllabus


Locations

The spring semester 2000 class meets in 351 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 312 Weir Hall. The official office hours for this class are 1:30 p.m. until 2:30 p.m. on Mondays and Wednesdays, 9:30 a.m. until 11:00 a.m. on Tuesdays and Thursdays, 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 12:00 Noon on Tuesday, 9 May 2000.


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., Pascal or C), 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.

Versions of the Hugs interpreter are available locally for Unix and Windows systems. See the resource links Web page for links to the software and documentation.

Hugs has been installed on Unix system john.cs.olemiss.edu and on the Adler lab systems. It can be made available on other systems as needed and available.

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

The user manual is available locally in various formats. See the resource links Web page for the relevant links.

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

The tutorial is available locally in various formats. See the resource links Web page for the relevant links.

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

Course Topics

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


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 Technology 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 © 2000, H. Conrad Cunningham
Last modified: Sat Jan 6 17:39:29 2001