AI_MAS Lab

Faculty of Engineering in Foreign Languages

University Politehnica of Bucharest

Department of Engineering Science
English Stream

Functional Programming
Spring 2011

 

Course Information

Instructor: Professor Adina Magda Florea

Email: adina@cs.pub.ro

Teaching Assistant: Andrei Tartareanu (andrei.tartareanu@gmail.com)

 

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.