Vybrané partie z programování 2
Seznam seminářů
- Úvod a základy jazyka Python (opakování)
- Funkce a moduly
- Výjimky a dekorátory
- Objektově orientované programování (OOP)
- Dunder metody a dekorátory tříd
- Iterátory a generátory
- Práce se souborovým systémem
- Rozpoznávání vzorů a regulární výrazy
a bonus Další moduly standardní knihovny - Testování (pytest) a type hinting
- NumPy, Pandas a Matplotlib
- Framework Flask
- Paralelní výpočty
Spoluautorem některých materiálů a úkolů je Mgr. Tomáš Mikula Ph.D.. Celý kurz je inspirován/přejatý z https://tomasmikula.cz/.
Seznam úkolů
- H00: Hello world (pro účely otestování githubu), Náhled, Příjmout úkol
- H01: RPN, Příjmout úkol
- H02: Algebra, Příjmout úkol
- H03: Decorators, Příjmout úkol
- H04: Data 1, Příjmout úkol
- H05: Data 2, Příjmout úkol
- H06: Data 3, Příjmout úkol
- H07: Data 4, Příjmout úkol
- H08: Command Parser, Přijmout úkol
- H09: TicTacToe, Přijmout úkol
- H10: Pokémon Analyzer, Přijmout úkol
- H11: Flask Project, Přijmout úkol
Nevíte si rady? Přečtěte si "Jak pracovat s Github Classroom?".
Co je potřeba na první seminář?
- Vlastní počítač.
- Nainstalovaný jazyk Python 3.12+ ke stažení zde.
- Účet na Github.com.
- Stažený a nainstalovaný git klient (například) GitHub Desktop.
- Stažené a nainstalované vývojářské studio Visual Studio Code (volitelně).
- Osobní číslo studenta ze systému STAG (např. R180055).
Splnění předmětu
Zápočet bude možné získat dvěma způsoby, jako možnost zvolíte nechám na Vás:
- Domácí úkoly: vypracujte všechny úkoly v rozsahu H01 až H06 a minimimálně dva z úkolů H07 až H11. Vyřešné úkoly musí nejdříve projít automatickými testy na github classroom (výjimkou je H11, který nemá testy) a poté mi je odevzdáte na semináři (ještě před začátkem prázdnin!).
- Vlastní projekt: naprogramujete nějakou Vámi navrženou aplikaci v pythonu, kterou mi osobně odprezentujete. Do třetího semináře mi pošlete návrh na svůj projekt, který by měl být v rozsahu nižších tisíců řádků kódu. Důležité bude netriviální zakomponování alespoň 6 probíraných témat a technik ze seminářů (např. dekorátory, OOP, dunder metody, regulární výrazy, flask atd.).
V obou případech bude kladen důraz na pochopení kódů, které budete odevzdávat. V případě neuznání kódu, na základě jeho neporozumnění, bude nutné vypracovat další (jiný) úkol. Opakované neuznání úkolu povede k neudělení zápočtu.
Domácí úkoly
Úkoly budou zadávány na platformě Github Classroom. Pro plnění zápočtu je nutné vytvořit bezplatný účet na Github.com a nainstalovat klienta GitHub Desktop. Demonstrace systému proběhne na prvním semináři.
Lokální testování
U většiny úkolů je možné provést lokální testování bez nutnosti odesílat kód do Github Classroom. Pro jeho funkčnost je nutné nainstalovat knihovny pytest
a pytest-console-scripts
. Pokud je k dispozici v daném úkolu pouze jeden soubor tests.py
, spouští se testy příkazem pytest tests.py
. Pokud je souborů s testy více, jsou uloženy ve složce tests
. V takovém případě je možné testy spustit jen příkazem pytest
z hlavní složky repozitáře s úkolem, nebo ze složky tests
.
Instalace balíčku pytest
na UNIX systému (Linux, Mac OS a další):
$ python3 -m pip install pytest pytest-console-scripts
Instalace balíčku pytest
na Windows systému:
$ py -m pip install pytest pytest-console-scripts
Plagiátorství
Veškeré odevzdané zdrojové kódy jsou automaticky testované na plagiátorství systémem Moss. Při prokázaném plagiátorství ztrácí oba studenti/studentky nárok na získání zápočtu a situaci dále řeší vedoucí katedry, viz. stránky katedry.
Soubor .gitignore
pro Python 3
Při práci na úkolech bude vytvářeno velké množství souborů, které není žádoucí odesílat do repozitáře na Githubu. Základní sadu souborů můžete jednoduše ignorovat umístěním speciálního souboru .gitignore
do hlavní složky s úkolem. Obsah ukázkového .gitignore
souboru naleznete zde.
V případě, že Vaše vývojové prostředí vytváří podpůrné složky (například složka .idea/
) je možné tuto složku přidat do souboru .gitignore
.