Algorithms and Programming in Cybernetic (APK)
Credits: | 5 ( Lectures: 2, Practical lessons: 2) |
---|---|
Semester: | ZS |
Ending: | zp; zk |
Guarantor: | Šmídl Luboš |
Lecturer: | Šmídl Luboš |
Practical lesson lecturer: | Šmídl Luboš, Švec Jan |
Annotation
The purpose of the course is introduce students to a basic problems analysis and basic algorithms for problem solving. An introduction to C/C++ language. Data structures optimization. Numerical algorithms for cybernetics and its efficient implementations, parallel programming.
Content
- 1.-4.: Problem analysis, decomposition, algorithmization. Programming language as a tool for problem solving, Python programming language.
- 5.-7.: Standard and advanced data structures (vector, matrix, sparse matrix, graph), data structures optimization - principle of locality, a proper choice of data types.
- 8.-10.: Numerical algorithms and their implementation (notion of numerical algorithm stability, artificial stabilization, convolution, filtration, numerical optimization). Standard libraries of linear algebra (BLAS, LAPACK)
- 11.-13.: Parallel programming (parallelization, vectorization and their differences, compiler specific features, automatic parallelization, automatic vectorization), heterogeneous and distributed systems, multi-core and many-core architectures with shared memory, parallel constructs (parallel for, tasks, pipelines).
Requirements on student
- Credit: term assignment, mastering of the curriculum.
- Exam: Oral and writen examination on the subject is requested.
Syllabus
- 1.-4.: Analýza, dekompozice a algoritmizace. Programování jako nástroj pro řešení problémů, úvod do jazyka Python.
- 5.-7.: Standardní datové struktury (matice, vektor, řídká matice, graf), optimalizace datových struktur s ohledem na specifika architektury počítače - lokalita struktur v paměti, vhodná volba datových typů.
- 8.-10.: Numerické algoritmy a jejich implementace (pojem stabilita numerického algoritmu, umělá stabilizace, konvoluce a filtrace, numerická optimalizace), standardní knihovny lineární algebry (BLAS, LAPACK).
- 11.-13.: Paralelní programování (paralelizace, vektorizace, jejich rozdíly, specifika kompilátorů, automatická vektorizace, paralelizace), heterogenní a distribuované systémy, vícejádrové a mnohojádrové architektury se sdílenou pamětí, paralelní konstrukty (paralelní for, tasky, pipelines).
Requirements
Zápočet: semestrální práce, aktivní zvládnutí probírané látky
Zkouška: písemná/ústní zkouška - odpovídají znalost odpřednesené a procvičené látky.
Literature
- Základní: Racek, Stanislav; Ježek, Karel. Paralelní programování. Plzeň : ZČU, 1994. ISBN 80-7082-128-0.
- Základní: Herout, Pavel. Učebnice jazyka C. 1. díl. České Budějovice : Kopp, 2004. ISBN 80-7232-220-6.
- Základní: Pecinovský, Rudolf; Virius, Miroslav. Učebnice programování - základy algoritmizace : Učebnice s příklady v turbo Pascalu a Borland C++. Praha : Grada, 1997. ISBN 80-7169-577-7.
- Doporučená: Cormen, Thomas H. Introduction to algorithms. Cambridge : MIT Press, 2001. ISBN 0-262-03293-7.
- Doporučená: Knuth, Donald E. The art of computer programming. Vol. 1, fundamental algorithms. Massachusetts : Addison-Wesley, 1973. ISBN 0-201-03809-9.
- Doporučená: Herout, Pavel. Učebnice jazyka C. 2. díl. České Budějovice : Kopp, 2004. ISBN 80-7232-221-4.
- Doporučená: Virius, Miroslav. Základy algoritmizace. Praha : ČVUT, 1995. ISBN 80-01-01346-4.