list and define the fundamental concepts of functional programming.
manually execute a given (simple) functional program.
manually infer the type of a given (simple) functional program.
implement (simple) algorithms and data structures as functional programs.
design (large) functional programs that are modular and have reusable components.
explain on a simple problem how functional programming differs from imperative and object-oriented programming.
Fundamental concepts: functions, relations, recursion, tail-recursion, type systems, polymorphism, datatypes, recursive datatypes, introduction to higher-order functions, data abstraction. Programming in a functional programming language, such as SML. Similarities and differences with imperative and object-oriented programming.
Laboratory work, if required complemented by lectures.
Assignments. Voluntary written exam for higher grades.
week 27, 2009
Hansen, Michael R.;
Introduction to programming using SML