Academic year 2018/2019 |
Supervisor: | Ing. Matěj Týč, Ph.D. | |||
Supervising institute: | ÚFI | |||
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 | 0 | Elective (voluntary) | 1 | 3 | S |
Faculty of Mechanical Engineering
Brno University of Technology
Technická 2896/2
616 69 Brno
Czech Republic
+420 541 14n nnn
+420 726 81n nnn – GSM Telef. O2
+420 604 07n nnn – GSM T-mobile
Operator: nnnn = 1111