Vybrané partie z programování 2

Seznam seminářů

  1. Úvod a základy jazyka Python (opakování)
  2. Funkce a moduly
  3. Výjimky a dekorátory
  4. Objektově orientované programování (OOP)
  5. Dunder metody a dekorátory tříd
  6. Iterátory a generátory
  7. Práce se souborovým systémem
  8. Rozpoznávání vzorů a regulární výrazy
    a bonus Další moduly standardní knihovny
  9. Testování (pytest) a type hinting
  10. NumPy, Pandas a Matplotlib
  11. Framework Flask
  12. 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ů

Nevíte si rady? Přečtěte si "Jak pracovat s Github Classroom?".

Co je potřeba na první seminář?

  1. Vlastní počítač.
  2. Nainstalovaný jazyk Python 3.12+ ke stažení zde.
  3. Účet na Github.com.
  4. Stažený a nainstalovaný git klient (například) GitHub Desktop.
  5. Stažené a nainstalované vývojářské studio Visual Studio Code (volitelně).
  6. 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:

  1. 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!).
  2. 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.

Užitečné odkazy

Doporučená literatura