E1234 Programming in Python

Přírodovědecká fakulta
podzim 2025
Rozsah
0/2. 2 kr. (plus ukončení). Ukončení: k.
Vyučováno kontaktně
Vyučující
Helge Hecht, Ph.D., M.Sc. (přednášející)
Garance
doc. Ing. Vlad Popovici, PhD
RECETOX – Přírodovědecká fakulta
Kontaktní osoba: Helge Hecht, Ph.D., M.Sc.
Dodavatelské pracoviště: RECETOX – Přírodovědecká fakulta
Rozvrh
St 12:00–13:50 D29/347-RCX2
Předpoklady
Experience with Linux and basics of working via a terminal are recommended (C2110 UNIX and Programming). Basic exposure to programming and running scripts is beneficial (E3011 Algorithms and programs, E7527 Data Analysis in R, Bi1121 Data analysis in R for EMB).
Omezení zápisu do předmětu
Předmět je otevřen studentům libovolného oboru.
Předmět si smí zapsat nejvýše 34 stud.
Momentální stav registrace a zápisu: zapsáno: 25/34, pouze zareg.: 0/34, pouze zareg. s předností (mateřské obory): 0/34
Anotace
The course objectives are to introduce the students to key concepts in software engineering through hands-on applications in the Python programming language. The course focuses the concepts required to move from using software in form of interactive sessions, notebooks or very simple scripts to writing larger software applications.
Výstupy z učení
The students will be able to: implement basic control and data structures in python using the language's syntax;
apply the fundamental principles of object oriented programming in the python language;
run python code 1) in an interactive terminal, 2) in jupyter notebooks, 3) as executable scripts and 4) to create a software application;
run reproducible data analysis pipelines using external packages;
apply fundamental concepts of software engineering, including requirements engineering, documentation and testing in python;
Klíčová témata
  • 1. Start with variables, basic types, operators, simple branching, lists, and defining functions.
  • 2. Learn strings, indexing, slicing, loops with control keywords, sets, dicts, and function arguments.
  • 3. Explore comprehensions, nested conditionals, higher-order functions, and basic module imports.
  • 4. Introduce exceptions with try/except/finally/raise and practice file I/O with error handling.
  • 5. Use context managers with with for safer file and resource handling.
  • 6. Add type hints, operator overloading, lambdas, generators, custom collections, and simple classes.
  • 7. Move to pattern matching, async/await coroutines, tree/graph structures, packages, and inheritance.
  • 8. Cover assertions, advanced error handling, introspection, dynamic imports, ABCs, Mixins, and dunder methods.
  • 9. Learn project structure, packaging, async event loops, databases, testing, and large-scale OOP patterns.
  • 10. Apply framework design ideas, plugins, and explore GUI and CLI libraries like Click, Typer, Tkinter, and PyQt.
  • 11. Extend to web apps and dashboards with Streamlit, FastAPI, Django, and distributed workflows with Dask.
  • 12. Finish with a capstone project combining GUIs, web apps, APIs, data pipelines, and visualization dashboards.
Studijní zdroje a literatura
    povinná literatura
  • Learning materials provided throughout the course, including selected parts of • Python All-In-One for Dummies by John C. Shovic The Turing Way by the Turing Way Community
    doporučená literatura
  • Recommended (all available at the library of the Faculty of Informatics, partially also on Campus): • Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin • The Clean Coder: A Code of Conduct for Professional Programmers by Robert
    neurčeno
  • The recommended reading list provides more context around general software development practices and provides a language and domain agnostic perspective onto fundamental concepts covered in the course. The books are easy to understand and written in a li
Přístupy, postupy a metody používané ve výuce
The course is taught as a hands-on seminar. Learning materials regarding the theory required for the hands-on session are provided for self-study prior to the session. Each session starts with a short quizz to be completed in IS. We then conduct a short recap of quizz results and the provided learning materials. The remaining time of the course serves for the practical exercise. The self-study component reflects the expected workload for the ECTS granted by passing the course.
Způsob ověření výstupů z učení a požadavky na ukončení
Attendance in the course is mandatory, with one unexcused absence allowed. Absences have to be uploaded to IS within five working days, usually until the next class. Letters of excuse for absences can be provided by doctors, the court, police, or other institutions. Upon more than one unexcused absence, the course is failed. The assessment depends on the type of completion and is based on two components. One component is the regular quizzes which are based on a pass/fail system. Failing one quiz is free (one unexcused absence). Each additional failure reduces the grade by one. Excused absences don't count towards the number of failed tests. The grading scale works as follows: 0 failures = grade A 1 failure = grade A 2 failures = grade B 3 failures = grade C 4 failures = grade D 5 failures = grade E 6 or more failures = grade F The course is passed upon passing the colloquium. It is a group oral exam where 6 students meet with the examiner(s) for about 1 hour. The focus is on showing that you have reached baseline competence in Python programming and software development. The colloquium has five parts. First, a warm-up of about 5 minutes, where everyone answers a simple, low-stakes question (for example, “Name a Python library you like and why”). Second, an individual technical question lasting 15 minutes in total. Each student draws a short technical question from a pool. These questions are about basic Python concepts such as data types, control flow, functions, object-oriented programming, and debugging. Third, a conceptual case study lasting 15 minutes. As a group, students work on a software design problem in a research context, such as processing a dataset or automating file handling. Each student contributes to part of the solution. Fourth, a coding case study lasting 15 minutes. The group looks at a short piece of Python code with a bug or design issue. Students take turns explaining what it does, spotting problems, and suggesting improvements. Finally, a reflection and wrap-up lasting 10 minutes, where each student gives a short personal reflection (for example, “What’s one challenge you’d expect in developing research software?”). The exam is pass or fail. You pass if you show basic understanding in your individual technical question and contribute at least once in a case study or the reflection. You fail if you cannot answer your individual technical question and do not make any meaningful contribution in group tasks. The exam is not competitive. This is not about ranking students. Everyone can pass if they meet the baseline. The course grants 2 ECTS for completion, which reflects 52 hours of work. In-class attendance covers 24 hours, leaving 28 hours of self-study throughout the course of the semester. The colloquium grants 1 ECTS additionally, so plan about 26 hours (approximately 3 full working days) of preparation for the exam. The written exam grants 2 additional ECTS, so calculate roughly one slightly longer full work week for the preparation, about 52 hours.
Vyučovací jazyk
Angličtina
Další komentáře
Studijní materiály

  • Statistika zápisu (nejnovější)
  • Permalink: https://is.muni.cz/predmet/sci/podzim2025/E1234