Production-level coding in Python

Data is displayed for academic year: 2023./2024.

Course Description

Skill introduces production and large project intepreter use. First part is focused on architectural topics and challenges, including maintaining large codebase, reactive programing, and model tracking. Second part covers for interpreter architecture, and pragmatic use of its limitations and advantages. Third part covers extending the interpreter with low'level modules. The skill is finalized with a project task covering most of lecture domains.

Study Programmes

University graduate
[FER3-HR] Computing - study
Skills (1. semester) (3. semester)
[FER3-HR] Electrical Engineering and Information Technology - study
Skills (1. semester) (3. semester)
[FER3-HR] Information and Communication Technology - study
Skills (1. semester) (3. semester)

Learning Outcomes

  1. describe a separation of responsibilities
  2. describe an organization of large projects
  3. apply asychronous programming
  4. describe parallel execution within intepreter runtime
  5. demonstrate extending the interpreted with low-level modules
  6. demonstrate inheritance model and metaprogramming
  7. describe event-driven reactive programming

Forms of Teaching

Lectures

Lectures and guest lectures

Grading Method

Continuous Assessment Exam
Type Threshold Percent of Grade Threshold Percent of Grade
Seminar/Project 50 % 100 % 0 % 0 %

Week by Week Schedule

  1. Architecture: event-driven development, "stochastic" UI actions
  2. Architecture: MVC, undo/redo
  3. Architecture: maintaining large codebase, pytest, type hinting, static checkers
  4. In-depth Python: AST, compile, bytecode & main interpreter loop, GC
  5. In-depth Python: MRO, metaprogramming
  6. In-depth Python: GIL, multi-threading, multi-processing, async
  7. Extending Python - C, ctypes, ref count, C++
  8. Midterm
  9. Midterm
  10. Extending Python - numpy, scipy, efficient computational pipeline
  11. Extending Python - Rust, PyO3
  12. 10. Practical project - Phase 1
  13. 10. Practical project - Phase 2
  14. 10. Practical project - Phase 3
  15. Final exam

Literature

Luciano Ramalho (2021.), Fluent Python,
Robert Nystrom (2021.), Crafting Interpreters,
Michał Jaworski, Tarek Ziadé (2021.), Expert Python Programming, Packt Publishing Ltd

For students

General

ID 252446
  Winter semester
3 ECTS
L0 English Level
L1 e-Learning
24 Lectures
0 Seminar
0 Exercises
2 Laboratory exercises
0 Project laboratory
0 Physical education excercises

Grading System

Excellent
Very Good
Good
Sufficient