CS 321H: Functional and Symbolic Programming
Last updated 01/22/07 for Spring Semester 2007.
Instructor: Dr. Greg Lavender
Email: lavender@cs
Office: PAI 5.72B
Office Hours: Mon/Wed 2:00-3:30. Or by Appointment.
Tel: +1 512 471 9577
TA: Mr. Vishwas Srinivasan
Email: vishwasm@cs
Office: ESB 229, Desk #5
Office Hours: TTH 11:15-12:15.
When/Where: MW 4:00-5:30 pm. Room BUR 212
Mid-Term Exam Date & Room: Wednesday 7 March, 7-10 pm. GEO 2.102
Final Exam Date & Room: Friday, May 11, 7-10 pm. Room WEL 3.402
Syllabus: Spring 07
Other:
Prerequisites
The following courses, or their equivalents, with a grade of C or better are
required prerequisites: CS337/CS337H with a C or better, or co-registration.
Textbooks
There are no required textbooks for this course. We will read papers and online documents. Here are some useful
websites that will be used in this course:
Course Description
This is a course on programming using the functional/applicative style. Functional programming is sometimes
considered esoteric by mainstream software engineers, but there are important insights and advanced programming
techniques to be learned from functional programming that will make you a better software engineer, even if you
never program in a functional language after this course. This course brings together many of the concepts and
technical skills that you have learned in your other courses up to this point in your studies. The emphasis will
be on using powerful higher-order programming constructs and some advanced control structures to do "power programming."
You will also learn how to design and implement Read-Eval-Print-Loop interpreters. Relevant functional programming
languages include: Haskell (a pure functional language) and Scheme (a dialect of LISP).