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
Pickering R.: Foundations of F#, Apress, USA, 2007.
Smith C.: Programming F#.: O'Reilly Media, Inc., Sebastopol, USA, 2010.
Syme D., Granicz A., Cisternino A.: Expert F# , Apress, USA, 2015.
Sanders J., Kandrot E.: CUDA by Example: An Introduction to General-Purpose GPU Programming, Addison-Wesley Professional, 2010.
Gaster B., Howes L., Kaeli D. R., Mistry P., Schaa D.: Heterogeneous Computing with OpenCL, Morgan Kaufmann, 2011.
Pacheco P.: An Introduction to Parallel Programming, Morgan Kaufmann, 2011.
Rauber T., Rünger G.: Parallel Programming for Multicore and Cluster Systems, Springer Berlin Heidelberg, 2013.
Herlihy M., Shavit N.: The Art of Multiprocessor Programming, Morgan Kaufmann, 2012.
Farber R.: Parallel Programming with OpenACC, Elsevier Science & Technology, 2015.
Further reading
Thomspon S.: Haskell - The Craft of Functional Programming, Addison-Wesley Longman Publishing Co., Inc. Boston, MA, USA, 1999.
Harrop J.: F# for Scientists, John Wiley & Sons, Inc., Hoboken, New Jersey, USA, 2008.
Syme D., Granicz A., Cisternino A.: Expert F# 4.0, Apress, 2015.
Farber R.: CUDA Application Design and Development, Morgan Kaufmann, 2011.
Wen-mei W. Hwu, eds: GPU Computing Gems, Emerald Edition and Jade Edition, Morgan Kaufmann, 2011.
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)