CSci 555: Functional Programming
Spring Semester 1997
Syllabus
Locations
The spring semester 1997 class meets in 352 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 Tuesday mornings or 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
.
The final examination for this class is scheduled for 4 p.m. on
Friday, 6 May 1997.
School of Engineering Honor Code
All aspects of CSci 555 fall under the provisions of the Honor Code of
the School of Engineering at the University of Mississippi.
Violations of the Honor Code will be handled by the School's Honor
Code committee.
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.
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: (new book for the Spring 1997 offering of CSci 555)
- Simon Thompson.
Haskell: The Craft of Functional Programming.
Addison Wesley, 1996. ISBN: 0-201-40357-9.
- Notes: (a revised version of these notes may be available later)
- 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: (new software for the Spring 1997 offering of CSci 555)
- Mark Jones' Hugs interpreter for a dialect of the
language Haskell. Versions of the Hugs interpreter are available for
Unix systems and PCs via anonymous FTP.
(Retrieve
Hugs?)
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. The Haskell User's Gofer System:
User Manual.
(Retrieve
manual?)
- Readings:
- Various journal and conference articles, research reports,
and book excerpts as appropriate.
Course Outline
Note: The outline may be updated to take advantage of features of the
new textbook.
- 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.
Grading
The grading scale for this class is A [90..100], B [80..0), C [70..0),
D [60..0), 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.
- 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.
- 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 examinations; the third examination is
optional.
- The examination portion of the semester grade will be calculated
by averaging the two or three examinations taken, giving each
examination equal weight.
- The first examination will be given a week or two before spring
break.
- The second examination will be given in mid-April.
- 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 notifiy
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 © 1997, H. Conrad Cunningham
Last modified: 15 January 1997.