CSci 555: Functional Programming
Fall Semester 1998
Syllabus


Locations

The fall semester 1998 class meets in 351 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 1:30 to 3:00 p.m. on Mondays and Wednesdays, 1:00 to 2:30 p.m. on Tuesday, and 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/ and the anonymous FTP site is http://ftp.cs.olemiss.edu/pub/cunningham/csci555/98fall/ .

The final examination for this class is scheduled for 8:00 a.m. on Friday, 11 December 1998.


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, 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:
Simon Thompson. Haskell: The Craft of Functional Programming. Addison Wesley, 1996. ISBN: 0-201-40357-9.

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.

This report is available locally via anonymous FTP. This document is over 200 pages in length. Students should not print this document on the Department's laserprinters! (Retrieve Postscript? HP PCL? LaTeX dvi?)

Software:
The HUGS interpreter for the language Haskell (version 1.4). The system was originally developed by Mark P. Jones, now of the University of Nottingham in the UK. The software is now developed jointly by the functional programming groups at Nottingham and at Yale University in the USA.

Versions of the Hugs interpreter are available locally for Unix systems and PCs on the class FTP site. See the resource links Web page for links to the software.

Hugs has been installed on system hal.cs.olemiss.edu. It will be made available on other systems as needed and available.

Manual:
Mark P. Jones and John C. Peterson. Hugs 1.4, The Nottingham and Yale Haskell User's Gofer System: User Manual, Technical Report NOTTCS-TR-97-1, University of Nottingham, Department of Computer Science, April 1997. Also appears as Technical Report YALEU/DCS/RR-1173, Yale University, Department of Computer Science.

The HUGS manual is available locally in several formats: HTML Postscript, HP PCL, and LaTeX dvi (The latter three are on the anonymous FTP site.).

Tutorial:
Paul Hudak, John Peterson, and Joseph Fasel. A Gentle Introduction to Haskell, Version 1.4. Available locally in HTML or Postscript formats.

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

Course Outline

  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.


Professional Conduct

All students in CSCI 555 are expected to conduct themselves 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.

"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."


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 average.


Assignments


Examinations


UP to CSCI 555 root document?


Copyright © 1999, H. Conrad Cunningham
Last modified: Wed May 12 13:56:55 CDT