AI_MAS Lab

Faculty of Automatic Control and Computers

University Politehnica of Bucharest

Department of Engineering Science
English Stream

Functional Programming
Spring 2009

 

Course Information

Instructor: Professor Adina Magda Florea

Email: adina@cs.pub.ro

Teaching Assistant: Andrei Mogos

 

Course Description

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Syllabus

· Introduction, programming paradigms, basic concepts

· Expressions, types, and functions

· Lists

· Name binding, recursion, iterations, and continuations

· OOP in Scheme

· Introduction to Haskell

· Problem solving paradigms in FP

 

 

Slides
Lect 1   Lect_2   Lect_3   Lect_4_5   Lect_6   Lect_7  Lect_8_9

Lect_10_11   Lect_12  Lect_13

Grading
Laboratory assignments and homeworks 50%

Final exam 50%

Note: You are required to have at least 6 class attendance to laboratory. No grades will be considered if you are bellow this limit!!

Resources

Scheme resources

Almost all you want to know and find about Scheme

http://www.schemers.org/

Development and execution environment

http://www.drscheme.org/

 

Haskell resources

http://www.haskell.org/

 

 

Functional programming provides a strong  bridge between mathematics and software design. Functional programming languages, such as Haskell,  have features which make them attractive  for rapid software prototyping,  mathematical manipulations, program transformation and parallel processing. In functional programming, programs are mathematical equations. This allows clear and concise programs to be written very quickly for a wide range of applications. Equally important, it allows desired properties of these programs to be formally established using straightforward proof methods. The same methods can also be used to improve their efficiency.

Experience shows that once functional programming techniques have been learned, they can be used to improve the design of programs in imperative languages as well.

The course provides an introduction to the principles of functional programming. It introduces fundamental concepts and associated techniques for constructing clear and concise programs. It also introduces methods for transforming them to more efficient programs. The course will provide hands on experience in the use of the modern  functional programming languages such as Scheme and Haskell.