Skip to content

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