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).