User Tools

Site Tools


en:haskell_for_life

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
en:haskell_for_life [2016/01/12 16:01]
sivanov Copy over the contents of the course project.
en:haskell_for_life [2016/12/12 18:56] (current)
sivanov [5. Course Project/Final Exam] Add the text of the pre-test.
Line 3: Line 3:
 ===== Haskell for Life ===== ===== Haskell for Life =====
  
-The goal of this course is to familiarise the students with the+The goal of this **short ​course** is to familiarise the students with the
 computational model behind a mainstream high-abstraction functional computational model behind a mainstream high-abstraction functional
 programming language, with focus on developing practical skills. programming language, with focus on developing practical skills.
Line 12: Line 12:
 The course is intended for a wide audience and only requires basic The course is intended for a wide audience and only requires basic
 programming skills in one of the other mainstream languages (C/C++, programming skills in one of the other mainstream languages (C/C++,
-Java, C\#/.NET, Python, etc.).+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 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.+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 ​(of about 2 hours); in particular, the first part should most probably be spread over two sessions to help students digest the basic concepts.  At the end of the course the students may be required to submit a course project. ​ The students who submit a working course project 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}} 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}}
Line 29: Line 31:
 languages. ​ Basic syntax is described along with the explanations,​ languages. ​ Basic syntax is described along with the explanations,​
 including the syntax for definitions of simple data types. including the syntax for definitions of simple data types.
 +
 +The slides of this part are available {{:​h4life-01.pdf|here}}. ​ {{:​h4life-funcs.hs|This file}} contains the examples.
  
 ==== 2. Typeclasses ==== ==== 2. Typeclasses ====
Line 36: Line 40:
 languages. ​ Subtle differences are pointed out and discussed at languages. ​ Subtle differences are pointed out and discussed at
 length to avoid confusion. length to avoid confusion.
 +
 +The slides of this part are available {{:​h4life-02.pdf|here}}. ​ {{:​h4life-types.hs|This}} and {{:​h4life-typeclasses.hs|this file}} contain the examples. ​ The former file contains Unicode characters, so be sure to choose the correct Unicode encoding (UTF-8) to view it properly.
  
 ==== 3. Monads ==== ==== 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. 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.
 +
 +The slides of this part are available {{:​h4life-03.pdf|here}}. ​ {{:​h4life-monads.hs|This file}} contains the examples.
  
 ==== 4. Parallel and Concurrent Programming ==== ==== 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. 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.
 +
 +The slides of this part are available {{:​h4life-04.pdf|here}}. ​ The sorting example can be found {{:​h4life-sorting.hs|here}}. ​ The source code of the port scanner is available {{:​h4life-scanner.hs|here}}.
 +
 +For further details on parallel and concurrent programming in Haskell, check out [[http://​community.haskell.org/​~simonmar/​par-tutorial.pdf|Simon Marlow'​s tutorial]].
 +==== 5. Course Project/​Final Exam ====
 +
 +The subject for the exam in this course at the Technical University of Moldova can be found {{:​h4life-utm-test.pdf|here}} (in Romanian).
 +
 +Please, send your solutions to the **E-mail address** indicated in the **PDF file**.
 +
 +The questions for the intermediate exam session can be downloaded {{:​h4life-utm-pre-test.pdf|here}}.
 +
 +----
 +
 +I taught this course at the [[http://​www.tucs.fi/​|Turku Center for Computer Science]] (January 2016), at [[https://​www.pentalog.com/​locations/​chisinau-nearshore-delivery-center/​|Pentalog Chișinău]] (December 2016), and at the [[http://​fcim.utm.md/​|Faculty of Computer Science of the Technical University of Moldova]] (December 2016).
 +
 +The exam subject for the version of the course taught at the Turku Center of Computer Science can be found {{:​h4life-exam.pdf|here}}.
 +
en/haskell_for_life.1452610912.txt.gz · Last modified: 2016/01/12 16:01 by sivanov