*** Výuka bude probíhat formou nepravidelných seminářů v období říjen - duben. Prosíme všechny zájemce o tento předmět, aby se nejpozději do začátku zimního semestru ozvali garantům předmětu. Termíny seminářů budou se zájemci domluveny následně. ***
Seznámit se základními programovacími technologiemi, datovými strukturami a algoritmy. Naučit se vytvářet přehledné a snadno udržovatelné programy. Důraz bude kladen na programovací jazyk Fortran 90/95 i jeho novější varianty (Fortran 2003/2018). Rámcově se seznámit s charakteristikami a možnostmi použití dalších jazyků (C/C++, Python) a jejich vzájemného propojení. Seznámit se s technikami pro paralelizaci programů (MPI, OpenMP).
Poslední úprava: Grof Zdeněk (08.07.2021)
*** Seminars will be organized during both the winter and summer semesters (October to April). We ask all students who wish to participate in this course to contact the teachers before winter semester starts (middle of September) at the latest. Information about seminars will be send to all who have applied. ***
Become familiar with basic programming technologies, data structures and algorithms. Learn to write clear and easily maintained computer programs. The course will focus on Fortran 90/95 programming language and its latest generations (Fortran 2003/2018). Generally become familiar with the characteristics and possibilities of other computer languages such as C/C++ and Python, for example, and techniques for interoperation of these languages. Become familiar with the concepts of paralelization (MPI and OpenMP).
Poslední úprava: Grof Zdeněk (08.07.2021)
Výstupy studia předmětu -
Student bude umět
orientovat se v nejdůležitějších programovacích technologiích
vytvářet přehledné a snadno udržovatelné programy a používat programátorský rukopis
používat jazyk Fortran v jeho moderní formě
číst programy v jazycích C, C++ a Python
používat a navrhovat složitější datové struktury
teorii a implementaci algoritmů pro různé účely
základy paralelizace programů pomocí MPI
Poslední úprava: Grof Zdeněk (21.06.2022)
The student will be able to
focus on the most important programming technologies
write concise, clear, and easily maintainable computer programs and use the programming handwriting
use modern Fortran programming language
read and understand programs written in C, C++, and Python
design and use complex data structures
analyze and implement algorithms for various purposes
parallelize programs by using the MPI
Poslední úprava: Grof Zdeněk (21.06.2022)
Podmínky zakončení předmětu (Další požadavky na studenta) -
Vypracování průběžně zadávaných projektů.
Závěrečný pohovor nad odevzdanými projekty.
Poslední úprava: Grof Zdeněk (08.07.2021)
Development of programming projects that will be handed out during the seminars.
A final discussion on submitted projects.
Poslední úprava: Grof Zdeněk (08.07.2021)
Literatura -
Curcic M: Modern Fortran - Building efficient parallel applications, Manning, 2020.
Metcalf M, Reid J, Cohen M: Modern Fortran explained: icorporating Fortran 2018, Oxford University Press, 2018.
Clerman N S, Spector W: Modern Fortran: style and usage, Cambridge University Press, 2012.
Ray S, Fortran 2018 with parallel programming, CRC Press, 2020.
Horton I: Ivor Horton's Beginning Visual C++ 2013, Willey, 2014.
Chacon S, Straub B, Pro Git, Apres, 2014. [open source, available from https://git-scm.com/book]
Additional references from Internet (programming languages: manuals, tutorials, etc.)
Poslední úprava: Grof Zdeněk (21.06.2022)
Sylabus -
1. Úvod, reprezentace dat v paměti, základy programováni ve Fortranu I.
2. Základy programování ve Fortranu II.
3. Odvozené datové typy ve Fortranu, ukazatele (pointery), pole a seznamy (linked-lists).
4. Abstraktní datové struktury (queue, stack), základní prvky objektově orientovaného programování.
5. Rekurze, řadící algoritmy.
6. Binární stromy, procházení a hledání cesty v grafech.
7. Čtení a zápis dat ve Fortranu (Fortran I/O).
8. Paralelizace programů pomocí MPI I.
9. Paralelizace programů pomocí MPI II.
10. Programátorský styl. Spolupráce při tvorbě programů a správa verzí (git a github).
11. Programovací jazyk Python (úvod, propojení s programy ve Fortranu).
12. Programovací jazyk C (jak číst programy napsané v C a jejich propojení s Fortranem).
Poslední úprava: Grof Zdeněk (26.04.2023)
1. Introduction, data representation, programming in Fortran I.
2. Programming in Fortran II.
3. Defined data types in Fortran, pointers, arrays and linked-lists.
4. Abstract data structures (queue, stack), basic principles of object-oriented programming.
5. Recursion, sorting algorithms.
6. Binary search trees, graph traversal and path searching.
7. Fortran I/O, formatting.
8. Parallelization with MPI I.
9. Parallelization with MPI II.
10. Programming style, teamwork in software writing, version control systems (git and github).
11. Python (introduction and binding with Fortran programs).
12. C programming language (how understand programs written in C and their binding with Fortran).
Poslední úprava: Grof Zdeněk (26.04.2023)
Studijní prerekvizity -
Základní zkušenosti s programováním (například v jazycích Fortran, C, Matlab, Python) a obecné povědomí o programovacích technologiích a algoritmech budou výhodou, ale ne nezbytnou.
Předpokládáme, že v průběhu kurzu budou mít studenti dostatek času doplnit si připadné mezery samostudiem nebo konzultacemi.
Poslední úprava: Grof Zdeněk (21.06.2022)
Students with basic programming skills (programming in Fortran, C, Matlab, or Python, for example) and general knowledge of programming technologies and algorithms will have an advantage.
However, the course schedule will allow the students to catch up on their missing knowledge by a self-study or consultations.