CSci 555: Functional Programming
Spring Semester 2007
Syllabus


Locations

The spring semester 2007 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 AT cs DOT olemiss DOT 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 Thursday, May 10, 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 Objectives

Upon completion of the course, the students should (1) know the concepts and terminology of the functional programming paradigm, (2) be able to solve problems by writing programs in the purely functional, lazily evaluated programming language Haskell, and (3) be able to reason about and manipulate Haskell programs mathematically.


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 Haskell. Technical Report UMCIS-1995-01.
Note: Gofer is an earlier name for the Hugs interpreter used this semester. This document may be partially revised during the semester.

Software:
Most or all of the examples or assignments will use the 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.

Hugs is available on the Windows-based Adler Lab systems and on the Linux-based server Turing.

Some of the assignments may also use the Glasgow Haskell Compiler GHC. GHC is available on the Linux server Turing.

Documentation:
See the the Hugs website http://www.haskell.org/hugs and Haskell website http://www.haskell.org for users' manuals, tutorials, and other documentation on Hugs and Haskell.

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. Monads and 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 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 © 2007, H. Conrad Cunningham
Last modified: Mon 15 Jan 2007.