Python in Applied Science (FSI-T0P)

Academic year 2020/2021
Supervisor: Ing. Matěj Týč, Ph.D.  
Supervising institute: ÚFI all courses guaranted by this institute
Teaching language: Czech
Aims of the course unit:
The main goal of the course is to introduce students to the Python programming language and its thriving free-software ecosystem. Students will gain abilities allowing them to write software while employing up-to-date best practices, such as conscious use of design patterns, test-driven development and automated documentation generation. Students will become ready to solve wide scale of typical engineering problems that involve data processing and visualization.
Learning outcomes and competences:
Students will solve simplified representative cases of problems typical to the field of physical engineering that involve data processing. They will also polish their skills by working on a bigger-scale final project. As a result, students will become able to solve real-world challenges using the free software ecosystem around the Python language.
Prerequisites:
Basic concepts of procedural programming - variables, functions (parameters, return value, passing by value vs passing by reference), types, basic concepts of working with files (opening, writing to, encoding), familiarity of format strings.
Course contents:
Students will solve model problems that demonstrate how best practices of software engineering can assist in solving them. Students will be introduced into test-driven development, code review and they will become familiar with best practices in structuring and documenting one's code in order to increase maintainability and accessibility. The Enthought Canopy Python distribution (available for MS Windows, Mac OSX and Linux) wil be available for students to use.
Teaching methods and criteria:
The course is taught through lectures explaining the basic principles and theory of the discipline. Exercises are focused on practical topics presented in lectures.
Assesment methods and criteria linked to learning outcomes:
To graduate, students have to work-out either an individual project, or a distinct part of a group project. The theme of the project is assigned during the term according to the mutual agreement. The form of the submission of the project is specified in the project assignment.
Controlled participation in lessons:
A teacher checks the attendance on seminars stated in the timetable. The form and the date of the compensation of missed lessons are specified by the teacher.
Type of course unit:
    Lecture  13 × 1 hrs. optionally                  
    Computer-assisted exercise  13 × 1 hrs. compulsory                  
Course curriculum:
    Lecture Getting familiar with basic Python concepts, Python ecosystem.
Python software project structure, structure of modules and packages.
Variables, basic types, functions, passing by value / reference.
Introduction to object-oriented programming (OOP)
Introduction to design patterns, the "strategy" pattern.
Introduction to testing and data visualization.
Going deeper to OOP, "factory" and "decorator" patterns.
Documentation generation, "facade" and "adapter" patterns.
How to deal with third-party modules.
Creating GUI applications, "observer" and MVC patterns.
More on GUI applications, the "state" pattern.
On Python pitfalls.
    Computer-assisted exercise Hello world project
Crteating a standard-compliant Python project
"Dice" project
Dice project and OOP
Dice project - creating loaded dice
Dice project - testing, revealing loaded dice
Dice project - further generalization, refactoring
Tabletop game simulation
Using Google Deep Dream
GUI project
GUI project
Practical pitfall demonstration
Literature - fundamental:
1. Summerfield, M.: Python 3 - Výukový kurz, COMPUTER PRESS, 2012
2. Burris, E.: Programming in the Large with Design Patterns, Pretty Print Press, 2012
3. Scipy lecture notes: http://www.scipy-lectures.org/
The study programmes with the given course:
Programme Study form Branch Spec. Final classification   Course-unit credits     Obligation     Level     Year     Semester  
B3A-P full-time study B-FIN Physical Engineering and Nanotechnology -- Cr 2 Elective 1 3 S