User Tools

Site Tools


en:haskell_for_life

This is an old revision of the document!


A PCRE internal error occured. This might be caused by a faulty plugin

~~TRANS~~ ===== Haskell for Life ===== The goal of this course is to familiarise the students with the computational model behind a mainstream high-abstraction functional programming language, with focus on developing practical skills. After having taken this course, the students will be able to solve practical programming problems of medium complexity by writing idiomatic Haskell code and making use of the rich library ecosystem. The course is intended for a wide audience and only requires basic programming skills in one of the other mainstream languages (C/C++, Java, C\#/.NET, Python, etc.). The course relies heavily on showing actual interactive Haskell sessions and should be directly driven by feedback from the students. The course consists of 4 parts, the first 3 of which introduce some essential concepts, and the last one focuses on practical examples of parallel and concurrent programming. The parts of the course may be taught over multiple sessions; in particular, the first part should most probably be spread over two sessions to help students digest the basic concepts. Students successfully completing this course may be awarded 2 ECTS. The course is (somewhat loosely) based on the awesome book [[http://book.realworldhaskell.org/|Real World Haskell]]. The materials of this course are distributed under the [[https://en.wikipedia.org/wiki/Creative_Commons_license|Creative Commons Attribution Alone licence]] {{:ccby.png?60}} ==== 1. Introduction ==== The fundamental ideas behind functional programming are introduced, with particular focus on handling functions as first-class values and on higher order functions. Strict and static typing discipline in Haskell is discussed and compared to typing disciplines in other mainstream programming languages. Basic syntax is described along with the explanations, including the syntax for definitions of simple data types. ==== 2. Typeclasses ==== Typeclasses in Haskell are introduced and compared to classes and types in other mainstream programming languages. Subtle differences are pointed out and discussed at length to avoid confusion. ==== 3. Monads ==== Monads as a way to encapsulate repetitive details of the computation are introduced. The ''Maybe'' and ''List'' monads are described. An overview of the monads ''Reader'', ''Writer'', and ''State'' is provided. ==== 4. Parallel and Concurrent Programming ==== Techniques of parallel and concurrent programming in Haskell are described. Sparks as building blocks for a parallel program are discussed. Spawning threads and synchronising them via thread-safe shared storage is covered. A basic port scanner is presented as a practical example.

en/haskell_for_life.1452615985.txt.gz · Last modified: 2016/01/12 17:26 by sivanov