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
Supervisor
Department
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.