Informace níže se nevztahují k současnému semestru.
Stránka pro aktuální semestr je zde.
Učební výstupy podávají zhuštěný souhrn základních konceptů a dovedností, které byste měli umět vysvětlit a/nebo použít po každém cvičení.
1. cvičení
operátory, proměnné, vstup, výstup, podmínky
- spustit skript v Pythonu (z IDE i z příkazové řádky)
- ovládat základní aritmetické operátory (
+,-,*,/,//,%), chápat rozdíl mezi/a// - chápat proměnnou jako označené místo v paměti pro ukládání hodnot
- rozlišovat základní datové typy (textový řetězec, celé číslo, desetinné číslo)
- uvědomovat si, že aritmetické operátory mohou mít různý význam pro různé datové typy (např.
+pro sčítání čísel a zřetězení textových řetězců) - načíst řádek vstupu (
input()) - vypsat hodnotu proměnné nebo výsledek výpočtu na výstup (
print()) - umět převést textový řetězec (např. načtený pomocí
input()) na číslo - umět vytvořit podmínku (včetně
elseaelif) - uvědomovat si, že napsaný program má být pochopitelný nejen pro počítač, ale i pro člověka, který ho bude číst po nás, a tedy záleží na čitelnosti kódu
2. cvičení
seznamy, textové řetězce, cykly
- umět vytvořit seznam hodnot výčtem (např.
numbers = [1, 2, 3]), přidávat hodnoty do seznamu - umět přistupovat k jednotlivým položkám seznamu (podle indexu)
- použít
lenpro získání počtu položek v seznamu - použít
forpro cyklus pro procházení položek seznamu - použít
forarangepro procházení rozsahu čísel - použít
whilecyklus pro opakování, dokud platí podmínka - chápat význam
while True:a použití klíčového slovabreakpro ukončení cyklu
3. cvičení
funkce
- chápat funkci jako transformaci dat (vstupy -> výstupy)
- umět definovat funkci a její argumenty, umět zavolat funkci s konkrétními hodnotami argumentů
- umět zdokumentovat funkci (co dělá, význam argumentů, ideálně i typy argumentů a návratové hodnoty), zapsat dokumentaci funkce jako dokumentační komentář (docstring)
- chápat, že funkce může mít vedlejší efekty (např. výpis na obrazovku)
- umět spustit program v ladícím režimu (debug) a krokovat ho (nastavit breakpoint)
4. cvičení
DRY (Don’t Repeat Yourself), refaktorování, list comprehensions
- chápat funkci jako nástroj pro pojmenování části výpočtu (dekompozici kódu)
- umět nahradit opakující se části kódu funkci
- umět pracovat s kódem, který napsal někdo jiný (případně umělá inteligence) – spustit ho, ladit ho, hledat v něm chyby
5. cvičení
slovník (dict), práce se soubory
- použít slovník (
dict) pro ukládání hodnot ke klíčům (asociativní pole), chápat rozdíl mezi indexováním do seznamu a do slovníku - číst textové soubory
- zapisovat textové soubory
6. cvičení
knihovny
- vědět o existenci standardní knihovny (můžeme využít kód, který už za nás naprogramoval někdo jiný) a kde najít dokumentaci
- zachytit důležité momenty v běhu programu pomocí logovacích zpráv s různou úrovní detailu (debug, info, warning, error) – modul
logging - použít logovací zprávy pro ladění (bez breakpointů a krokování)
- umět vytvořit a použít výčtový datový typ (modul
enum) - načíst a zpracovat argumenty z příkazové řádky (
sys.argv, modulargparse)
7. cvičení
(spojové seznamy), objekty, linting
- umět definovat třídu s datovými položkami a metodami
- chápat význam metody
__init__ - umět vytvořit novou instanci třídy (objekt)
- vědět, že proměnné jsou ukazatele do paměti a že více proměnných může ukazovat na ten samý objekt v paměti
- používat třídy a objekty pro seskupení souvisejících dat (a operací s nimi)
- používat třídy a objekty pro omezení přístupu k datům a povolení jen vybraných operací – rozlišovat veřejné a privátní (název začíná dvěma podtržítky:
__) datové položky a metody - chápat význam konstrukce
if __name__ == '__main__': - vědět o existenci nástrojů pro automatické hledání chyb v kódu (např.
pylint, inspekce v IDE PyCharm, …) a umět je spustit na svůj kód - dodržovat zvyklosti jazyka (např. velikost písmen ve jménech proměnných), dodržovat doporučený styl (v Pythonu PEP 8)
8. cvičení
Git, dědičnost
- umět použít Git pro správu zdrojového kódu (stačí bez větvení a konfliktů)
- vytvořit projekt na MFF GitLab, procházet soubory v projektu, zobrazit historii verzí (commitů)
- přistupovat ke vzdálenému projektu (např. na MFF GitLabu) ze svého počítače pomocí HTTPS (příkazy
git clone,git push,git pullnebo přes UI editoru) - uložit novou vývojovou verzi projektu (příkaz
git commitnebo přes UI editoru) - používat soubor
.gitignorepro ignorování souborů, které nechceme v projektu verzovat (např. produkty build systému) a vědět, že existují doporučené.gitignoresoubory pro běžně používané jazyky a editory
- v projektu oddělit prostory pro zdrojové kódy, dokumentaci a produkty build systému
- umět použít dědičnost pro definici kontraktu, který potomci musí implementovat – abstraktní třída definuje, jaké metody (včetně parametrů a typu návratové hodnoty) musí potomci implementovat; ideálně i umět použít modul
abcpro zápis abstraktních tříd
9. cvičení
rekurze
- umět definovat rekurzivní funkci, nezapomenout podmínku pro ukončení rekurze
- chápat, že rekurze má omezení (např. velikost volacího zásobníku) a umět hledat alternativní řešení (iterace, použití datové struktury zásobník, …)
10. cvičení
kompozice (dodělávka z 8. cvičení), venv, unit testy
- umět využít kompozici pro tvorbu složitých objektů pomocí skládání (jednoduchých) objektů
- umět vytvořit virtuální prostředí (modul
venv) - umět aktivovat virtuální prostředí, nainstalovat do něj knihovny (pomocí
pip) a spustit v něm svůj program - napsat aspoň základní unit testy pro ověření funkčnosti funkcí a objektů (moduly
unittestnebopytest) - umět spustit existující unit testy a z výstupu poznat, které testy prošly a které ne
11. cvičení
zápočtový test (žádná nová látka)
12. cvičení
grafové algoritmy
- umět reprezentovat graf v programu (seznam sousedů, příp. matice sousednosti a další reprezentace)
- umět implementovat základní grafové algoritmy (BFS, DFS) a použít je pro řešení úloh (hledání nejkratší cesty, komponenty souvislosti, …)