** 326.054: Functional Programming: Lisp**

Summer Semester 2009.

The course is an introduction to programming in Lisp and it will be based on the book:

Programming in Common Lisp, R. A. Brooks, John Wiley 1985.

The students will be expected to perform practical programming in Lisp. A lisp interpreter and an editor, as well as various source code can be downloaded from the ftp site.

Purpose

Understand the principles of functional programming and aquire the skills for writing Lisp programs.

Organization

The lecture takes place on

Wednesdays from 16:30 to 18:00 in KG 712. If the lecture does not take place in a certain week, this will be announced on this page.

The final grade is 20% based on homeworks. Homeworks will be assigned every week and each one is due the next week. It is preferred to submit the homeworks in electronic form by e-mail, especially the Lisp code. Paper format is also accepted, especially if it contains drawings.

When you submit the homework by e-mail, please send it as attached file and use as name of the file your name and the number of the homework (examples: schreiner-hw-3.txt, mittermayr-hw-2.pdf) and use include the name of the file in the subject field of the e-mail.

Lectures

Lecture 1: Mar 4:

Functional programming in relation to logic and to other programming styles;

Case study: reverse.pdf.

Homework (optional): develop similar programs for the function which computes the lenght of lists.

Lecture 2: Mar 11

Book sections 1.1 - 1.2. Chapt. 1.

Homework 1, due Mar 18: E1.2.1, E1.2.2.

Lecture 3: Mar 18

Book sections 1.3 - 1.8. Chapt. 1.

Homework 2, due Mar 26: E1.3.1, E1.3.2; E1.5.1, E1.5.2, E1.5.3, E1.5.4; E1.7.1, E1.7.2, E1.7.3.

Lecture 4: Mar 25

Book sections 1.9 - 2.2. Chapt. 1. Chapt. 2.

Homework 3, due Apr 1: E1.9.1, E1.9.2; P1.1, P1.2, P1.3, P1.4, P1.5; E2.1.1, E2.1.2; E2.2.1, E2.2.2.

Lecture 5: Apr 1

Design of tail recursive programs reverse.pdf.

Book sections 2.3 - 2.4. Chapt. 2.

Homework 4, due Apr 22: E2.3.1, E2.4.1.

Lecture 6: Apr 22

Book sections 2.5 - 2.6

Loss of portability due to specific builtin types

Programs as logical formulae

Homework 5, due Apr 29: E2.5.1, E2.6.1.

Lecture 7: Apr 29

Book sections 2.7 - 2.9

Homework 6, due May 6: E2.7.1; E2.8.1, E2.8.2, E2.9.1, E2.9.2; and (Attention!) P2.1, P2.2, P2.3. (Attention!)

Lecture 8: May 6

Book section 2.10.

Homework 7, due May 13: P2.4, P2.5, P2.6.

Lecture 9: May 13

Book sections 3.1 to 3.3 (partial, see file Chapt. 3.)

No homework.

Lecture 10: May 20

Book sections: 3.3, 3.4 Chapt. 3.

Homework 9, due Jun 3: E3.3.1.

May 27: no lecture.

Lecture 11: Jun 3

Book sections: 3.5, 3.6 (partial) Chapt. 3.

Homework 10, due Jun 10: E3.6.1, E3.6.2, P3.1, P3.2, P3.3.

Lecture 12: Jun 10

Book sections: 3.6 (end of chapter 3) Chapt. 3.

Homework 11, due Jun 17: P3.4, P3.5, P3.6.

Lecture 13: Jun 17

Review of the material and preparation for the exam.

EXAMINATION: Jun 24

Written examination with exercises similar to homeworks.

Received homeworks: hw-lisp.txt.

T. Jebelean