Functional Programming

Fundamental class offered by: dr. Giuseppe Maggiore

Whom is this fundamental class for

You have good experience with imperative programming languages, either through work or as a hobby. You have heard of functional programming, and from what you see it looks like a powerful paradigm that makes it possible to tackle hard problems with elegance and correctness. You are slightly overwhelmed by the apparent complexity of functional programming, but you want to learn all its secrets: from basic flow of control to recursion and inductive data types. Beyond the lectures you are also planning to build software on your own to reach a good level in manipulating the language.

What will you learn

After this class is done, you will be able to use the following language facilities at a professional level:

Some practical things

Please bring a laptop with Microsoft Visual Studio Community Edition or a superior version installed. As an alternative you might choose to use Xamarin Studio. Make sure that everything is installed and functions properly before the first lecture. Experience suggests that not doing so will result in a significant waste of time.

We will be learning how to program, "line by line". Please do not expect to learn how to use wizards or "click-and-generate" code. We will also make absolutely no use of code copied and pasted from the Internet.

The course location depends on the number of participants. We will aim towards always remaining within a distance of 5km from the center of Rotterdam.

In conclusion

Functional programming is an ever-growing, highly promising programming paradigm. Functional programming languages seem complex at first, but then deliver the experience of programs that are short, elegant, readable, and "just work". Most experienced functional programmers find that large classes of bugs simply disappear when using a modern functional language, together with a lot of verbosity. F# is chosen as a mature, well crafted functional language which can be used pragmatically and which focuses on solidity and usability. The language possesses a clean design, is uniform, predictable, and in general much appreciated in professional circles. The language can interoperate perfectly with .Net, and as such it can run on a multeplicity of platforms and can make use of any existing C# library. Anywhere there are C# applications, F# makes an excellent complementary language to use in combination.

Moreover, learning F# can be an excellent stepping stone towards learning other modern functional programming languages such as Haskell, Scala, or Closure. Functional extensions of C# and Java, such as async, LINQ, lambdas, streams, etc. will become perfectly clear after studying functional programming.

Given the high coupling of the language to the popular .Net framework, there is a large number of people using F# as a backend language in .Net projects. Moreover, functional programming is often a preferred skill in interviews, as it often signals knowledge of powerful and reliable software design principles. Moreover, F# is one of the most loved and highest paying programming languages in the world.