Introduction to Functional Programming

Fall 1999 (Aug 18 - Dec 6)

Lecture: MWF 10:00 - 10:50, SN 014
Jan Prins, SN 355, Tel: 962-1913,
Office hours: Mon 11:00 - 12:00, Thu 3:00 - 4:00 and by appt.

Recitation 15-601:  Mon 2:00 - 2:50, SN 014
Recitation 15-602:  Mon 3:00 - 3:50, SN 014
Kok-Lim Low, SN 024, Tel: 962-1918,
Office hours: Wed 3:00 - 5:00

Secretary:  Madelyn Mann
SN 318, Tel: 962-1922,

@Course Overview

COMP 15 is an introductory computer programming class. The functional programming language Haskell is used to teach problem analysis, algorithm design and programming. The course also provides a rudimentary introduction to imperative programming concepts using the Java programming language.


There are no prerequisites, but students are expected to be thoroughly comfortable with high school mathematics. Basic facility with the use of computers for text editing and information access via the World-wide Web (WWW) is also assumed.

How does COMP 15 compare with other introductory programming courses?

COMP 14 and COMP 15 are completely interchangeable in a student's program of study. Students with little or no previous programming experience should follow one of these courses. COMP 15 is especially appropriate for students of the sciences, including those intending to pursue further studies in computer science. Students with a high-school course in Pascal or Basic may benefit more from COMP 15 than COMP 14 because COMP 15 utilizes a different programming paradigm. Students with more extensive background in problem analysis, algorithm design and programming may be able to proceed directly to COMP 114, the second programming course.


The course emphasizes mathematical modeling and abstraction in problem solving. The elements of the programming language Haskell are developed early, using the text, lectures, and frequent exercises. Increasingly large examples are studied as students develop their programming skills through substantial programming assignments. The last few weeks introduce the use of imperative constructs in programming and make use of the programming language Java in a small programming exercise.


  1. Haskell: The Craft of Functional Programming (2nd ed.) by Simon Thompson,Addison Wesley 1999, ISBN  0-201-34275-8. We will cover most of secns 1-15.
  2. On to Java (2nd ed.) by Patrick Winston and Sundar Narasimhan, Addison Wesley 1998, ISBN  0-201-38598-8. We will cover sections 1-13.

Course web page

The central repository for up-to-date course information is the course web page located at the URL shown at the top of this handout. Reading assignments, written assignments, and programming assignments are on this page, as well as announcements and references.


The course grade is determined approximately as follows Unless specified differently, exams and programming assignments are to be individual efforts and are to be pledged as such, in accordance with the honor code in effect at UNC. An explanation of this code as it pertains to CS courses is provided as a separate handout. You are expected to be familiar with this code and your pledge on programming assignments and exams certifies your compliance with this code.


For Haskell, we will use the hugs interpreter to run our programs. The recommended text editor to prepare Haskell programs is GNU Emacs. Both of these are available under Windows 95/98/NT. For Java, we will use Microsoft Visual J++.

The necessary software is installed on over 400 PCs in ATN computer labs around campus. For those who wish to install the software on their own machine, all of it is available free (for PCs). The Haskell software can be obtained through the COMP 15 course home page.

This page is maintained by Send mail if you find problems.