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
- Functional programming concepts.
- Introduction to Gofer. 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.
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
- 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.
- Several programs will be assigned during the semester.
We will use the functional language Gofer available on the
the Department's Unix systems and on IBM-compatible PCs.
- 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.
- All students are expected to complete their homework assignments
by their due dates.
(Late homework papers may be accepted for up to at least one week
after the due date, but grade penalties will increase daily.
No homework will be accepted after the final examination period.)
- The School of Engineering Honor Code applies to the assignments
and examinations in this class.
Examinations
- There will be three equally weighted examinations.
- The third examination will be given during final examination
period.
- Each exam will cover all topics studied to that point.
- Each exam may consist of a combination of in-class and take-home
components.
- The final examination for this class is scheduled for
8:00 a.m. on Thursday, 14 December 1995.
Please do not ask to take the final examination earlier than the
time set for the entire class.
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.