Search programme

​Use the search function to search amongst programmes at Chalmers. The study programme and the study programme syllabus relating to your studies are generally from the academic year you began your studies.

Syllabus for

Academic year
DAT280 - Parallel functional programming  
Parallell funktionell programmering
 
Syllabus adopted 2021-02-26 by Head of Programme (or corresponding)
Owner: MPALG
7,5 Credits
Grading: TH - Pass with distinction (5), Pass with credit (4), Pass (3), Fail
Education cycle: Second-cycle
Major subject: Computer Science and Engineering, Software Engineering
Department: 37 - COMPUTER SCIENCE AND ENGINEERING


Teaching language: English
Application code: 02132
Open for exchange students: Yes
Block schedule: C
Status, available places (updated regularly): Yes

Module   Credit distribution   Examination dates
Sp1 Sp2 Sp3 Sp4 Summer course No Sp
0112 Examination 6,0c Grading: TH   6,0c   09 Oct 2021 am J  
0212 Laboratory 1,5c Grading: UG   1,5c    

In programs

MPALG COMPUTER SCIENCE - ALGORITHMS, LANGUAGES AND LOGIC, MSC PROGR, Year 1 (compulsory elective)
MPSOF SOFTWARE ENGINEERING AND TECHNOLOGY, MSC PROGR, Year 1 (compulsory elective)
MPHPC HIGH-PERFORMANCE COMPUTER SYSTEMS, MSC PROGR, Year 1 (elective)

Examiner:

Mary Sheeran

  Go to Course Homepage


Eligibility

General entry requirements for Master's level (second cycle)
Applicants enrolled in a programme at Chalmers where the course is included in the study programme are exempted from fulfilling the requirements above.

Specific entry requirements

English 6 (or by other approved means with the equivalent proficiency level)
Applicants enrolled in a programme at Chalmers where the course is included in the study programme are exempted from fulfilling the requirements above.

Course specific prerequisites

The requirement for the course is to have successfully completed two years within the subject Computer Science or equivalent. Course participants must also have completed an introductory course in Functional programming, preferably using Haskell or Erlang. (Examples at Chalmers are TDA452 and TDA555).

Aim

The aim of the course is to introduce the principles and practice of parallel programming in a functional programming language. By parallel programming, we mean programming using multiple hardware cores or processors in order to gain speed. The course covers approaches to parallel functional programming in both Haskell and Erlang. It covers current research on these topics, and relies heavily on scientific papers as its source materials.

Learning outcomes (after completion of the course the student should be able to)

Knowledge and understanding
1. Distinguish between concurrency and parallelism.
2. Give an overview of approaches to parallelism in functional programming languages in the scientific literature.

Skills and abilities
1. Write, modify and test parallel functional programs, to run on a variety of architectures such as shared memory multiprocessors, networks of commodity servers, and GPUs.
2. Interpret parallelism profiles and address bottlenecks.

Judgement and approach
1. Identify when using a functional language may be appropriate for solving a parallel programming problem.
2. Select an appropriate form of parallel functional programming for a given problem, and expain the choice.

Content

The course covers the principles and practice of parallel programming in both Haskell and Erlang.

Advantages of functional approaches to parallelism: immutability, absence of data races, determinism.

Profiling parallel functional programs: granularity, bottlenecks, locality, data-dependencies.

Parallel functional algorithms: divide-and-conquer.

Approaches to expressing parallelism in Haskell: the Eval monad, the Par monad, parallel strategies, skeletons, data parallelism.

Functional approaches to GPU programming.

Parallelisation and distribution for Erlang. Scalability. Handling errors in a massively parallel system.

Case studies of industrial parallel functional programming, such as map-reduce and scalable no-SQL databases.

Guest lectures by leading researchers and practitioners.

Organisation

The course is given in the form of lectures by Chalmers staff and by external experts. Students complete obligatory laboratory assignments.

Literature

Selected scientific papers. See the course home page.

Examination including compulsory elements

The grade is determined by performance on a written exam. Completion of obligatory laboratory assignments is also necessary for a pass.

The course examiner may assess individual students in other ways than what is stated above if there are special reasons for doing so, for example if a student has a decision from Chalmers on educational support due to disability.


Page manager Published: Mon 28 Nov 2016.