CSci 555: Functional Programming
Fall Semester 1995
Syllabus


Locations

The fall semester 1995 class meets in 352 Weir Hall at 9:30 a.m., Tuesday-Thursday.

The class is taught by Prof. Conrad Cunningham, whose office is 312 Weir Hall. The official office hours for this class are 11:00-12:00 noon on Tuesday and Thursday or by appointment.

The final examination for this class is scheduled for 8:00 a.m. on Thursday, 14 December 1995.


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

Catalog: 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 111 and 112 and Math 301 should give sufficient background.


Source Materials

Textbook:
Richard Bird and Philip Wadler. Introduction to Functional Programming. Prentice Hall International, New York, 1988.

Notes:
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:
Mark Jones' Gofer interpreter for a dialect of the language Haskell. Versions of the Gofer interpreter are available for Unix systems and PCs via anonymous FTP. (Retrieve Gofer? Hugs?) A version for the Apple Macintosh is also available from the University of Nottingham.

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. An Introduction to Gofer. Distributed as part of the Gofer distribution. (Retrieve Gofer?)

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

Course Outline

  1. Functional programming concepts.
  2. Introduction to Gofer. 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.

School of Engineering Honor Code Statement

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.


Assignments


Examinations


Grading

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

75% of the semester grade will come from the exam average and 25% from the homework assignment average.


UP to CSCI 555 root document?


Last modified: 19 December 1995.