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
- Functional programming concepts.
- Introduction to Haskell. First-order functions.
- Higher-order functions.
- List comprehensions.
- User-defined data types. Trees.
- Purely functional input/output.
- Programming laws. Program synthesis techniques.
- Interpretation techniques. Program efficiency.
- Infinite data structures.
- 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
- All students are expected to study the relevant portions of the
textbook, notes, and handouts in conjunction with our class
discussions. Explicit reading assignments will not always be given.
- Approximately seven homework assignments are planned for the
semester.
- Unless otherwise stated in the assignment description, an
assignment is to be carried out by each individual student without
inappropriate collaboration with others. The School of Engineering
Honor Code and other appropriate policies apply.
- Several programs will be assigned during the semester. We will
use the functional language Haskell. The Hugs interpreter for Haskell
will be available on the the Department's Unix systems and on
IBM-compatible PCs. Other software may be used as appropriate.
- One or more of the assignments will involve use of mathematical
techniques to prove programming "laws" or "synthesize" a program.
- Other homework exercises will be assigned as appropriate.
- In preparing and submitting assignment papers make sure that:
- The assignments given to students enrolled in the course for
graduate credit will often differ from the ones given to
undergraduates. In particular, the assignments will often include
components that are required for graduate students but optional for
undergraduates.
- All students are expected to complete their homework assignments
by their due dates. If an assignment is submitted late, a
penalty of 10 percent of that assignment's grade will
be assessed for each day it is late. A homework
paper will not be accepted after graded papers have been
returned, after a solution has been distributed, or after the final
examnation.
Examinations
- There will be three examinations; the third examination is
optional for those persons who have a grade of "A" going into the
final examination.
- The examination portion of the semester grade will be calculated
by averaging the two best examination grades.
- The first examination will be given in late September or early
October.
- The second examination will be given in mid-November.
- The third examination will be given during the final examination
period. (Students who opt not to take the final examination may be
given an assignment that is due during finals week.)
- Each exam will cover all topics studied to that point.
- Each exam may consist of a combination of in-class and take-home
components.
- If you cannot take an examination at the scheduled time because
of an illness or other special circumstances, please notify
Prof. Cunningham in advance. Without advance notification, it may not
be possible to give a make-up examination.
- Please do not ask to take the final examination earlier than the
time set for the entire class.
UP to CSCI 555 root document?
Copyright © 1999, H. Conrad Cunningham
Last modified: Wed May 12 13:56:55 CDT