Course detail

Programming in Python

FSI-9PVP Acad. year: 2027/2028 Summer semester

The course focuses on advanced programming in Python, with an emphasis on developing supporting applications for scientific and research purposes. It covers advanced programming techniques, software architecture design, automation of computational tasks, parallel and asynchronous programming, performance optimization, and software testing. Attention is also given to modern approaches to software development, distribution, and diagnostics, as well as ensuring the reproducibility of scientific computations.

All development is done with AI support.

Language of instruction

Czech

Entry knowledge

Basic programming knowledge equivalent to the 1IN (Informatics) course and a basic understanding of Python applications in the student's field of study.

Rules for evaluation and completion of the course

The active participation and mastering the assigned task.
Education runs according to week schedules. Attendance at the seminars is required. The form of compensation of missed seminars is fully in the competence of a tutor.

Aims

The aim of the course is to develop students' advanced Python programming skills, with a focus on the design, implementation, and management of supporting applications for scientific and research purposes. Students will learn to apply advanced programming techniques, design modular and maintainable software, automate computational tasks, optimize application performance, and ensure software reliability, testability, and reproducibility of results, including development with AI.

The study programmes with the given course

Programme D-FIN-P: Physical Engineering and Nanotechnology, Doctoral, compulsory-optional

Programme D-APM-P: Applied Mathematics, Doctoral, compulsory-optional

Type of course unit

 

Lecture

20 hours, optionally

Syllabus

All teaching activities incorporate AI support to varying degrees.




  • Advanced Programming Techniques in Python. Decorators, generators, iterators, context managers, functional programming, type annotations, generic types, and reflection.




  • Software Design and Architecture. Object-oriented design, design patterns, abstract interfaces, modularization, dependency management, development of custom libraries, and code refactoring.




  • Program Automation and Execution Control. Metaprogramming, dynamic module loading, CLI tool development, application parameterization, computational task management, and workflow automation.




  • High-Performance and Reliable Programming. Parallel and asynchronous programming, memory optimization, profiling, exception handling, automated testing, and application debugging.




  • Scientific Software Development and Operations. Version control, application packaging and distribution, automated building and testing, logging, diagnostics, and reproducibility of computational experiments.