SylabUZ

Generate PDF for this page

Parallel and functional programming techniques - course description

General information
Course name Parallel and functional programming techniques
Course ID 11.3-WE-INFD-PaFPT-Er
Faculty Faculty of Engineering and Technical Sciences
Field of study WIEiA - oferta ERASMUS / Informatics
Education profile -
Level of studies Second-cycle Erasmus programme
Beginning semester winter term 2018/2019
Course information
Semester 3
ECTS credits to win 6
Course type optional
Teaching language english
Author of syllabus
  • dr hab. inż. Marek Sawerwain, prof. UZ
Classes forms
The class form Hours per semester (full-time) Hours per week (full-time) Hours per semester (part-time) Hours per week (part-time) Form of assignment
Lecture 15 1 - - Credit with grade
Laboratory 15 1 - - Credit with grade
Project 15 1 - - Credit with grade

Aim of the course

  • Familiarize students with basic information about parallel and functional programming techniques.
  • To shape understanding and awareness of the role of parallel programming techniques as well as highlight the increasing role of functional programming.
  • To give basic skills in creating parallel programs for multi-core systems based on traditional processors (CPU) as well as graphics multi-core processors of general use.
  • Learning of the basic skills in the functional programming paradigm, and in particular: the role of functions and recursion, programming without side effect and the use of the lazy computations method.

Prerequisites

Methods of Programming, Algorithms and Data Structures, Theoretical Foundations of Computer Science, Logic for Computer Scientists

Scope

Theory of computation models: models of parallel computations and complexity classes.

Programmer tools: available tools for parallel programming for CUDA and OpenCL technologies.

Basic operations: Parallel primitive operations.

Data Dependency: dependency and division of data, models of execution of parallels environments for CPU and GPU.

Programming paradigm: Functional paradigm and basic constructions in selected functional languages e.g. OCaml, F#, Scala.

Basic data types: Data types in functional programming, exceptions and objects.

High-class function: first-class and high-order functions, functional model of computations (in a form of simplified operational description).

Type system and imperative control flow instructions: type systems, and lazy-computations, imperative features in functional programming languages.

Teaching methods

Lecture: conventional lecture
Laboratory: laboratory exercises, group work
Project: project method, discussions and presentations

Learning outcomes and methods of theirs verification

Outcome description Outcome symbols Methods of verification The class form

Assignment conditions

Lecture - obtaining a positive grade in written exam. 
Laboratory - the main condition to get a pass are sufficient marks for all exercises and tests conducted during the semester.
Project - a condition of pass is to obtain positive marks from all project tasks and preparation written report of project.
Calculation of the final grade: = lecture 40% + laboratory 30% + project 30%.

Recommended reading

  1. Pickering R.: Foundations of F#, Apress, USA, 2007.
  2. Smith C.: Programming F#.: O'Reilly Media, Inc., Sebastopol, USA, 2010.
  3. Syme D., Granicz A., Cisternino  A.: Expert F# , Apress, USA, 2015.
  4. Sanders J., Kandrot E.: CUDA by Example: An Introduction to General-Purpose GPU Programming, Addison-Wesley Professional, 2010.
  5. Gaster B., Howes L., Kaeli D. R., Mistry P., Schaa D.: Heterogeneous Computing with OpenCL, Morgan Kaufmann, 2011.
  6. Pacheco P.: An Introduction to Parallel Programming, Morgan Kaufmann, 2011.
  7. Rauber T., Rünger G.: Parallel Programming for Multicore and Cluster Systems, Springer Berlin Heidelberg, 2013.
  8. Herlihy M., Shavit N.: The Art of Multiprocessor Programming, Morgan Kaufmann, 2012.
  9.  Farber R.: Parallel Programming with OpenACC,  Elsevier Science & Technology, 2015.

Further reading

  1. Thomspon S.: Haskell - The Craft of Functional Programming, Addison-Wesley Longman Publishing Co., Inc. Boston, MA, USA, 1999.
  2. Harrop J.: F# for Scientists, John Wiley & Sons, Inc., Hoboken, New Jersey, USA, 2008.
  3. Syme D., Granicz A., Cisternino A.: Expert F# 4.0, Apress, 2015.
  4. Farber R.: CUDA Application Design and Development, Morgan Kaufmann, 2011.
  5. Wen-mei W. Hwu, eds: GPU Computing Gems, Emerald Edition and Jade Edition, Morgan Kaufmann, 2011.
  6. Norman M.: Parallel Computing for Data Science: With Examples in R, C++ and CUDA, Chapman and Hall/CRC, 2015.

Notes


Modified by dr hab. inż. Marek Sawerwain, prof. UZ (last modification: 29-03-2018 13:00)