CSci 555: Functional Programming
Spring Semester 1997
Syllabus


Locations

The spring semester 1997 class meets in 352 Weir Hall at 11:00 a.m. to 12:15 p.m. on Mondays and Wednesdays.

The class is taught by Prof. Conrad Cunningham, whose office is in 312 Weir Hall. The official office hours for this class are Tuesday mornings or by appointment at other times.

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

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

The final examination for this class is scheduled for 4 p.m. on Friday, 6 May 1997.


School of Engineering Honor Code

All aspects of CSci 555 fall under the provisions of the Honor Code of the School of Engineering at the University of Mississippi. Violations of the Honor Code will be handled by the School's Honor Code committee.

The Honor Code shall apply to all students, both undergraduate and graduate, registered in and/or seeking degrees through the School of Engineering. The Honor Code shall be understood to apply to all academic areas of the School such as examinations, quizzes, laboratory reports, themes, computer programs, homework, and other possible assignments. Only that work explicitly identified by the class instructor not to be under the Honor Code is excluded. The intent of the Honor Code is to recognize professional conduct and, thus, it shall be deemed a violation of the Honor Code to knowingly deceive, copy, paraphrase, or otherwise misrepresent your work in a manner inconsistent with professional conduct.


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, and induction) should contact the instructor before enrolling in the course. Successful completion of CSci 112 and 112 and Math 301 should give sufficient background.


Source Materials

Textbook: (new book for the Spring 1997 offering of CSci 555)
Simon Thompson. Haskell: The Craft of Functional Programming. Addison Wesley, 1996. ISBN: 0-201-40357-9.

Notes: (a revised version of these notes may be available later)
H. Conrad Cunningham. Notes on Functional Programming with Gofer. Technical Report UMCIS-1995-01.

This report is available via anonymous FTP as Postscript or LaTeX dvi-file formats. (Retrieve Postscript? dvi?) Students should not print this document on the Department's laserprinters!

Software: (new software for the Spring 1997 offering of CSci 555)
Mark Jones' Hugs interpreter for a dialect of the language Haskell. Versions of the Hugs interpreter are available for Unix systems and PCs via anonymous FTP. (Retrieve Hugs?)

This software will be installed on one or more of the Department's "Unix" systems and IBM-compatible PCs. The instructor will also make a diskette available that has this software for PCs.

Manual:
Mark P. Jones. The Haskell User's Gofer System: User Manual. (Retrieve manual?)

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

Course Outline

Note: The outline may be updated to take advantage of features of the new textbook.

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


Grading

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

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


Assignments


Examinations


UP to CSCI 555 root document?


Copyright © 1997, H. Conrad Cunningham
Last modified: 15 January 1997.