Sergio AntoyDescription
office: FAB 120-24
e-mail: antoy@cs.pdx.edu
homepage: http://www.cs.pdx.edu/~antoy/
office hours: MW 9-10 & by appointment
class time and location: MW 10-11:15, FAB 150
This course will provide a rapid introduction to the basic ideas and implementation techniques for functional logic programming. FLP combines the distinctive features of functional programming (algebraic data types, lazy evaluation, polymorphic typing, first-class functions, monadic I/O) and logic programming (logic variables, non-determinism, search) seamlessly through narrowing and residuation. The course will address three kinds of questions: Why are these features useful? What is their underlying theory? How can they be implemented? Lectures will be augmented with weekly programming assignments in Curry (a leading functional logic language) and Haskell (a leading functional language). Exercises will serve both to illustrate the use of these languages and to illuminate the underlying theory and implementation issues. Prior exposure to functional or logic programming will be useful, but is not required.Format
Regular lectures. Weekly assigned readings. Weekly homework exercises in Curry and/or Haskell, using the PAKCS (Curry) and HUGS (Haskell) programming environments. Comprehensive final exam.Goal
Students will be given considerable latitude in focusing either on the theory or the practice and/or in exploring research opportunities in this area. Students are expected to learn the main concepts of declarative programming, to understand the key principles on which functional logic programming is based, to know one or more functional logic languages, and to be able to translate problems into programs in these languages.Prerequisites
The expected preparation is a bachelor degree in Computer Science or equivalent background. Willingness to learn a non-traditional computing paradigm and appreciation for clear and rigorous foundations of computing are good assets for this course.Course materials
- Curry Tutorial, an on-line "in progress" document discussing the key features of the Curry programming language.
- PAKCS distribution, a downloadable compiler/interpreter of Curry. It is freely downloadable and usable, but it requires a SICStus Prolog installation which requires a fee.
- Examples of functional logic programs.
- Advanced functional logic programming.
- Rewriting homepage
Contacts: antoy@cs.pdx.edu>
Last updated: Mon Jan 5 09:27:41 PST 2004