** 326.516: Functional Programming: Lisp**

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 first lecture will take place

Wed, Mar. 9, 16:15 - 17:45

which will be the usual time and place for the lecture. 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.

The list of received homeworks is linked below - please check it and complain of any mistaken record.

Lectures

Mar. 9, 16:15: Book sections 1.1 - 1.7:

- working with the Lisp interpretor and with emacs

- quote, car, cdr, cons, defun

- the internal representation of lists

Homework 1, due Mar 16: E1.2.1, E1.2.2; E1.3.1, E1.3.2; E1.5.1, E1.5.2, E1.5.3, E1.5.4.

Mar. 16, 16:15: Book sections 1.8 - 1.10, and part of 2.1:

- variables and reference

- predicates

- the conditional form IF

- LENGTH

- APPEND

- Homework 2, due Apr. 6: E1.9.1, E1.9.2; P1.1, P1.2, P1.3, P1.4, P1.5.

No lecture on Mar. 23

No lecture on Mar. 30

Apr. 6, 16:15: Book sections 2.1, 2.2, 2.3.

- APPEND, REVERSE

- tail recursion

- example of correctness proof

Homework 3, due Apr. 13: E2.1.1, E2.1.2; E2.2.1, E2.2.2; E2.3.1, and: Write a tail-recursive function for LENGHT and prove its correctness.

Apr. 13, 16:15:

- discussion of HW 2

- some principles of program verification

Homework 4, due Apr. 20: P2.1, P2.2, P2.3.

Apr. 20, 16:15:

- discussion of HW 3

- program verification for the tail recursive version of Length

- book sections: 2.4, 2.5, 2.6

Homework 5, due Apr. 27: E2.4.1, E2.5.1, E2.6.1

Apr. 27, 16:15:

- discussion on HW4

- sections 2.7, 2.8, 2.9

Homework 6, due May 11: E2.7.1, E2.8.1, E2.8.2, E2.9.1, E2.9.2, P2.4, P2.5.

May 4, 16:15: No lecture ("Tag des Landespatron").

May 11, 16:15:

- sections 2.10, 3.1, 3.2

Homework 7, due May 18: P2.6, E3.1.1, E3.1.2.

May 18, 16:15:

- sections 3.3, 3.4, 3.5

Homework 8, due May 25: E3.3.1, P3.1, P3.2, P3.3

May 25, 16:15:

- section 3.6.

Homework 9, due Jun 1: E3.6.1, E3.6.2, P3.4, P3.5, P3.6

Jun 1, 16:15:

- discussion on HW 8,

- programming the Fibonacci sequence.

- no homework, but study the programs in "brooks-book-chapt-3.el" and "hw-8.el" on the the ftp site.

Jun 8, 16:15:

- Prof. Cornelius Nevrinceanu: Invited lecture on the programming language "scheme".

Jun 15, 16:15:

- Chapter 4.

- sample program: sorting by merging (see file "sort.el")

- sample program: propositional proving (see file "propositional.el")

Homework 10: E4.1.1, E4.2.1, E4.2.2, and optional P4.1, P4.2, P4.3; also study the programs in Section 4.2, study Chapt. 5.

Jun 22, 16:15:

- Chapter 5, 6.

- Final review of material

Jun 29, 16:15 - 17:45

- Written Examination: no additional material will be allowed, but "memo.txt" will be distributed by me.

T. Jebelean