The paradigm of functional programming is *the* other approach to computer programming next to imperative object-oriented programming. Functional programming is generally considered to deliver considerably higher productivity in software engineering and to be better suited for parallel execution due to the conceptual absence of state. Assuming no prior knowledge other than general computer programming skills, you will learn about the ins and outs of modern typed functional programming.
The functional paradigm has produced a myriad of different programming languages and features, but we look into two typed functional programming languages, namely the strict language OCaml and the lazy language Haskell. They are the most prominent and popular representatives of the two camps of functional programming: strict and lazy. The more practical parts of the lecture course are complemented by a solid introduction to the underlying theoretical foundations of functional programming, namely the lambda-calculus. You will learn about the fundamental properties that distinguish functional languages from imperative (object-oriented) languages, explaining among others what makes a language strict or lazy and what semantical implications that might have.
Beyond concrete functional programming skills and theoretical knowledge you will gain new insights into programming language concepts and the art of programming in general that will prove beneficial even when programming in imperative object-oriented style.
The material will be in English, the lectures in English or German depending on participants' preferences. |