Instructor: Professor Adina Magda Florea
Teaching Assistant: Andrei Tartareanu (firstname.lastname@example.org)
· Introduction, programming paradigms, basic concepts
· Expressions, types, and functions
· Name binding, recursion, iterations, and continuations
· OOP in Scheme
· Introduction to Haskell
· Problem solving paradigms in FP
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!!
Almost all you want to know and find about Scheme
Development and execution environment
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.