Parallel and functional programming techniques - opis przedmiotu
Informacje ogólne
Nazwa przedmiotu
Parallel and functional programming techniques
Kod przedmiotu
11.3-WE-INFD-PaFPT-Er
Wydział
Wydział Nauk Inżynieryjno-Technicznych
Kierunek
Informatyka
Profil
ogólnoakademicki
Rodzaj studiów
Program Erasmus drugiego stopnia
Semestr rozpoczęcia
semestr letni 2024/2025
Informacje o przedmiocie
Semestr
3
Liczba punktów ECTS do zdobycia
6
Typ przedmiotu
obieralny
Język nauczania
angielski
Sylabus opracował
dr hab. inż. Marek Sawerwain, prof. UZ
Formy zajęć
Forma zajęć
Liczba godzin w semestrze (stacjonarne)
Liczba godzin w tygodniu (stacjonarne)
Liczba godzin w semestrze (niestacjonarne)
Liczba godzin w tygodniu (niestacjonarne)
Forma zaliczenia
Wykład
15
1
-
-
Zaliczenie na ocenę
Laboratorium
15
1
-
-
Zaliczenie na ocenę
Projekt
15
1
-
-
Zaliczenie na ocenę
Cel przedmiotu
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 (GPU).
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 acquisition of skill to use the method of the lazy computations.
Wymagania wstępne
Methods of Programming, Algorithms and Data Structures, Theoretical Foundations of Computer Science, Logic for Computer Scientists
Zakres tematyczny
Theory of computation models:models of parallel computations and complexity classes.
Programmer tools: available tools for parallel programming for MPI, OpenMP, OpenACC, CUDA, 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 F#.
Basic data types: Data types in functional programming, exceptions and objects.
High-class function: first-class and higher-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.
Metody kształcenia
Lecture: conventional lecture
Laboratory: laboratory exercises, group work
Project: project method, discussions and presentations
Efekty uczenia się i metody weryfikacji osiągania efektów uczenia się
Opis efektu
Symbole efektów
Metody weryfikacji
Forma zajęć
Warunki zaliczenia
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%.
Literatura podstawowa
Gerassimos B.: Multicore and GPU Programming: An Integrated Approach, Elsevier LTD, Oxford, 2nd edition, 2022.
Charpentier M.: Functional and Concurrent Programming: Core Concepts and Features, Addison-Wesley Professional, 2022.
Hwu W-M.W., Kirk D.B., El Hajj I.: Programming Massively Parallel Processors: A Hands-On Approach, Morgan Kaufmann Publishers, 4th edition, 2022.
Mattson G.T., He Y., Koniges E.A.: The OpenMP Common Core: Making OpenMP Simple Again, MIT Press, 2019.
Han J., Sharma B.: Learn CUDA Programming: A beginner's guide to GPU programming and parallel computing with CUDA 10.x and C/C++, Packt Publishing, 2019.
Chandrasekaran S., Juckeland G.: OpenACC for Programmers: Concepts and Strategies, Addison-Wesley Professional, 2017.
Farber R.: Parallel Programming with OpenACC, Morgan Kaufmann, 2016.
Michaelson G.: An Introduction to Functional Programming Through Lambda Calculus, Dover Publications Inc., 2011.
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.
Sanders J., Kandrot E.: CUDA by Example: An Introduction to General-Purpose GPU Programming, Addison-Wesley Professional, 2010, english edition.
Smith C.: Programming F#, O'Reilly Media, Inc., Sebastopol, USA, 2010.
Pickering R.: Foundations of F#, Apress,USA, 2007.
Literatura uzupełniająca
Tran, M.W.: The Art of Functional Programming, Independently published, 2022.
Charpentier, M.: Functional and Concurrent Programming: Core Concepts and Features, Addison-Wesley Professional, 2022.
Syme, D., Granicz, A., Cisternino,A.: Expert F#, Apress, USA, 2015.
Wen-mei, W. Hwu, eds: GPU Computing Gems, Emerald Edition and Jade Edition, Morgan Kaufmann, 2011.
Farber, R.: CUDA Application Design and Development, Morgan Kaufmann, 2011.
Harrop, J.: F# for Scientists, John Wiley & Sons, Inc., Hoboken, New Jersey, USA, 2008.
Thomspon, S.: Haskell - The Craft of Functional Programming, Addison-Wesley Longman Publishing Co., Inc. Boston, MA, USA, 1999.
Uwagi
-- no comments --
Zmodyfikowane przez dr hab. inż. Marek Sawerwain, prof. UZ (ostatnia modyfikacja: 19-04-2024 10:31)
Ta strona używa ciasteczek (cookies), dzięki którym nasz serwis może działać lepiej. Korzystając z niniejszej strony, wyrażasz zgodę na ich używanie. Dowiedz się więcej.