Programování na SPŠ a VOŠ Kladno

Tato stránka shrnuje informace o předmětu Programování na škole SPŠ a VOŠ Kladno.
Najdete zde informace o náplni předmětu v jednotlivých ročnících a odkazy na studijní materiály a externí stránky využívané ve výuce.

Rozcestník na stránky učitelů:

Samostatný a Skupinový projekt projekt (platí pro aktuální (2023/2024) prváky, druháky a třeťáky)

V průběhu 1.(2.)-3. ročníku pracují studenti na Skupinovém projektu (3 nebo 4 členové).
V prvním ročníku si studenti vymyslí téma a začnou s tvorbou webové prezentace svého (zatím neexistujícícho) programu. Třeťáci EP pokračují v práci na svých projektech z druháku dle aktuálních probíraných témat (webové stránky mají až ve 4. ročníku v předmětu VYT)
V každém ročníku tak doplňují ke své aplikaci další funkce -> samotná aplikace v Pythonu, propojení s databází, případně ve 4. ročníku testy.

Ve 4. ročníku každý student vytvoří svůj vlastní Samostatný projekt. Samostatný projekt se jmenuje samostatný, protože na něm každý student pracuje samostatně. Také se, přirozeně, vypracováním liší od všech skupinových projektů. Téma může být stejné (např. při práci na Skupinovém projektu zjistíte, že by bylo lepší program navrhnout jinak... To se v programování běžně stává. Nebo chcete rozšířit již existujícíc projekt - každý student ale rozšiřuje projekt o svou vlastní funkcionalitu (včetně Pythonu, databáze a webovek) a má svou vlastní kopii projektu).

Samostatný projekt je nutná práce pro připuštění k maturitě (získání hodnocení < 5 ve čtvrtém ročníku) -> bez odevzdání Samostatného projektu se všemi požadovánými částmi je student hodnocen nedostatečně - projekt pak musí dodělat v průběhu prázdnin k reparátu, nebo při opakování ročníku.
Při praktické maturitní zkoušce z Programování bude Váš úkol pracovat s Vaším Samostatným projektem - bez jeho odevzdání tedy ani nemá smysl k maturitní zkoušce chodit...

Projekt pro čtvrťáky

Aktuální čtvrťáci pracují až do konce studia na Skupinovém projektu, který je hodnocen učitelem dle jeho uvážení.
Při práci na Skupinovém projektu studenti trénují práci ve skupině a všechny dovednosti, které se naučili/učí v rámci výuky Programování.

Povinný Samostatný projekt vzhledem k maturitě čtvrťáci obecně nemají (samozřejmě záleží na podmínkách konkrétního učitele)

Specifikace Samostatného a Skupinového projektu

Skupinový projekt je práce 3-4 členné skupinky (tedy ne 2 a méně a ne 5 a více lidí). Samostaný projekt je práce jednoho člověka.

Skupina si zvolí vedoucího (ten se v průběhu studia mění tak, aby každý ze skupiny byl alespoň jedno pololetí vedoucí). A každý člen skupiny má přiřazeny konkrétní body, na kterých pracuje (samozřejmě může např. na webu pracovat více lidí, potom je ale konkrétně rozdělena práce v rámci webu atd.). Množství práce je rozloženo rovnoměrně. Za správu úkolů a jejich evidenci odpovídá vedoucí skupiny.

Každý ve skupině se také seznámí s částmi programu, na kterých nepracoval - do takové úrovně, aby byl schopný principiálně vysvětlit jak fungují a byl v nich schopen provést úpravy/opravy.

Samostatný projekt má stejné minimální požadavky jako Skupinový.

Minimální požadavky (samozřejmě můžete přidat cokoliv navíc):

  1. Projekt je (od druhého ročníku) uložen na Gitu.
  2. Webová prezentace projektu
    1. Stručný popis programu, jeho funkce, ukázky použití
    2. Seznam použitých algoritmů (včetně pseudokódu/vývojového diagramu) a knihoven
    3. Seznam autorů
    4. Odkaz na Git pro stažení.
    5. Možnost přihlášení uživatele + různý obsah pro přihlášeného/nepřihlášeného uživatele.
    6. Zobrazení databázových dat (výsledky programu, žebříček hráčů, seznam registrovaných uživatelů, a pod.)
    7. Po přihlášení na web jako admin lze mazat data z databáze.
  3. Aplikace v Pythonu
    1. Grafické rozhraní - např. v PyQt
    2. Grafické zobrazení - např. Pygame či knihovna pro zobrazení grafů a jejich zpracování a pod.
    3. Ukládá a načítá data z/do databáze - výsledky hry/výpočtu, záznamy o použití a pod.
    4. Ukládá a načítá data z/do souboru - např. uživatelské nastavení, poslední použité hodnoty a pod.
    5. Dokumentace kódu dle konvencí jazyka - minimálně dokumentace funkcí a tříd
  4. Databáze
    1. K databázi je zakreslen ER-diagram
    2. Využívá vztahy typu 1:N i M:N (tedy i JOIN při čtení dat)
    3. Má vytvořené skripty pro tvorbu tabulek (CREATE), vložení několika vzorových dat (INSERT) do každé tabulky (např. 3 záznamy do každé tabulky) a získání vzorových dat z tabulek (SELECT, JOIN) včetně filtrování, řazení, seskupování a vyhledávání
    4. Využívá atributy (datový typ, UNIQUE, NOT NULL, AUTO_INCREMENT, PK, FK, DEFAULT)
    5. Databáze je normalizovaná minimálně po Boyceho-Coddovu normu viz také Normalizace databáze
    6. S databází komunikuje přes webové rozhraní (připravené dotazy), vlastní webové stránky i přes Python

Technologie

Veškeré technologie používané v předmětu programování jsou volně přístupné a můžete si je tedy zdarma bez jakýchkoliv omezení stáhnout domů.

Programovací jazyk Python a jazyk C

Pro Python je ve škole připravené IDE Pycharm - zcela nám stačí Community verze.

Statické stránky v HTML a CSS jsou pouze textové soubory - využijte tedy libovolný textový editor (ve škole např. SublimeText) a libovolný webový prohlížeč

Dynamické stránky budeme ve škole tvořit přes PHP. Samotný kód je, stejně jako u statických, pouze textový soubor. Spustit kód (zobrazit stránku) je potřeba přes php server (viz níže).

Databázový server běží na technologii MariaDB.

V jazyku C budeme zkoušet pouze zcela základní věci a postačí nám libovolný kompilátor - např. https://sourceforge.net/projects/mingw/

Pro jazyk C je ve škole připravené IDE Dev C++ s již přednastaveným kompilátorem

Pro připojení ke Git serveru (např. GitHub nebo GitLab) můžete využít návod na Git

Školní prostor

Disk H://

Ve škole má každý student i učitel vytvořený svůj prostor na disku H://. Tento prostor je přístupný i přes internet z domova.

Pro vzdálené (z domova) připojení k vašemu disku H:// můžete na Windows využít např. WinSCP - host: xeon.spskladno.cz - port: 922 - login a heslo: váš školní login a heslo

Pro vzdálené připojení z Linuxu můžete použít např. sftp://[vas_login]@xeon.spskladno.cz:922/mnt/data2/home/[vas_login] - lze použít i přímo v prohlížeči souborů (záložka "+ Další umístění" a políčko vpravo dole).

Python

Pycharm i Python ve škole naleznete na disku G://win32app/ == Aplikace SPŠ a VOŠ
Ve škole je verze 2017, která (s Pythonem 3.7) bohatě postačuje pro základní věci -> Pokud chcete, můžete si stáhnout i aktuální verzi 2022 Community (školní počítač Vám sice zahlásí potřebu přihlášení jako správce, ale po odkliknutí "Ne" se program bez problému nainstaluje do Vašeho osobního prostoru).
Ve škole je Python 3.7 a v nejbližší době by měl být nainstalován i Python 3.10.

Poznámka: Ve škole volte při vytváření nového projektu v Pythonu "Virtual environment" - zabere sice poměrně dost místa na hard/flash disku, ale umožní vám doinstalovávat libovolné knihovny (což je jedna z podstaty práce v Pythonu). Kombinace PyCharm 2017 a Python 3.10 při vytváření venv nefunguje -> použijte buď starší Python, nebo novější PyCharm.

Návod k PyCharmu a Pythonu

Poznámka 2: Neváhejte si přinést vlastní flash disk, na který si můžete vytvořit školní Virtual environment. I tak ale doporučujeme na konci hodiny zkopírovat projekt (pouze zdrojové kódy, ne venv) na váš školní disk H:

C

Ve škole lze využít IDE Dev C++ x64 pro Win10 -> nezapomeňte případné další vytvářené soubory "Přidávat do projektu".

Doma lze využít např. IDE Netbeans a kompilátor MinGW

Návod k NetBeans a C

Dynamický web - PHP server

Školní PHP server je pro vás přístupný i z domova ( přes váš prostor na disku H://public_html/, ke kterému se můžete z domova připojit ). Spuštění souborů uložených zde potom provedete přes prohlížeč na adrese https://xeon.spskladno.cz/~[vas_login]/ .

Vaše stránky/soubory musí být uloženy na vašem disku H:// ve složce public_html, ty, ve kterých chcete spouštět PHP kód musí mít příponu .php (pozor, Windows často neukazuje přípony a je nutné jejich zobrazování zapnout v prohlížeči souborů) a je potřeba nastavit přístupová práva (například přes WinSCP) - vaše složka (login): 0711 - složka public_html: 0755 - všechny soubory a složky uvnitř: 0755

Při připojení přes WinSCP vyplňujte hostname: xeon.spskladno.cz , port: 922, login a heslo vaše školní. - Práva je třeba nastavit vaší [login] složce (je třeba vyskočit o úroveň výše) a dále složce public_html a všem souborùm uvnitř ní.

Databáze - Databázový server

Databázový server má adresu http://dbs.spskladno.cz. Přístup k serveru přes prohlížeč je na adrese MyAdmin. Přístupové údaje vám sdělí učitel.

Materiály, externí stránky

"Skripta" ke čtení (hledejte .pdf soubory) na GitHubu

Jupyter notebooky ke čtení a vyplňování (kliknutím na modré tlačítko a přihlášením Google účtem lze spouštět i v prohlížeči) na GitHubu, případně offline lze spouštět programem Jupyter

Demo a ukázkové programy na GitHubu

Tutoriály a dokumentace k procházení:

UmímeTo na domácí úkoly, hraní, trénování a procvičování - pro účet se obraťte na svého učitele Programování, případně Jaroslava Holečka

Codingame na hraní, procvičování a odkoukávání

Draw.IO - nástroj pro nákres nejrůznějších diagramů

DrawSQL - příjemné prostředí pro tvorbu ER diagramů a generování SQL kódu pro vytvoření tabulek z nich

Do začátku:

Maturita

Ústní maturita

Při ústní maturitě máte za úkol 15 minut hovořit na téma dle vylosované otázky.

Pokud budete mít jako zkoušejícího Jaroslava Holečka (záleží na třídě a na konkrétní vylosované otázce), bude mít za úkol odpovědět (minimálně) na sadu konkrétních dotazů - dotazy budou vybrány na základě vylosované otázky a jejich celkový přehled (je to přehled pouze pro otázky u kterých je zkoušející Jaroslav Holeček, nikoliv pro celou ústní maturitní zkoušku) je zde

Praktická maturita

Platí pro IT1, IT2, IT3, EP1, EP2, EP3 v roce 2023/2024

Vaším úkolem při praktické maturitní zkoušce bude vytvořit prezentaci/představení/dokumentaci vašeho Samostatného projektu pro vylosovanou cílovou skupinu (uživatel, investor, nový kolega do týmu, ...). Každou z těchto skupin samozřejmě zajímá něco jiného - uživatele zajímá, jak se program používá a co umí; kolegu zajímá, jaká je struktura kódu, jaké technologie a knihovny používáte, jak je spolu vše propojeno atd.
Také budete mít za úkol do programu přidat novou funkci/něco v programu změnit.
V zadání maturitní otázky bude přesně specifikované, co má vaše prezentace obsahovat - nebudou to žádné chytáky a vysvětlit požadované věci bude pro někoho, kdo program vytvářel, velmi jednoduché.
K dispozici budete mít pouze Váš samostatný projekt.
Internet u maturitní zkoušky není k dispozici.

Platí pro IT4, EP4 v roce 2023/2024

U maturitní zkoušky je váš úkol vytvořit funkční program/aplikaci/hru/webové stránky dle zadání.
S sebou si k praktické maturitní zkoušce z Programování můžete přinést libovolné materiály na flash-disku (obzvláště doporučujeme vaši oblíbenou dokumentaci, ve které jste zvyklí hledat, a vaše vypracované soubory z předchozích minimálně 3 let programování).
Internet u maturitní zkoušky není k dispozici.

Náplň předmětu

Náplň předmětu se řídí Školním vzdělávacím programem pro každý obor.
V předmětu Programování se student minimálně naučí vytvářet statické webové stránky pomocí HTML a CSS, dynamické webové stránky pomocí PHP, vytvářet programy ve vyšším programovacím jazyku (aktuálně Python a základy C pro vyzkoušení odlišnosti práce s kompilovaným jazykem) a vytvářet a manipulovat s databází pomocí SQL (přímo, přes webové stránky i přes Python).
V Pythonu se student naučí vytvářet konzolové aplikace, okenní aplikace formulářového typu (vstupní políčka, tlačítka) i "herního typu" (ovládání grafických objektů myší, klávesnicí, počítání bodů, ...) a zobrazování dat v grafech.
V jazyku C se student naučí základní programové konstrukce a datové typy včetně pointerů (dynamická správa paměti je již doplněk navíc pro šikovnější studenty/skupiny).
Zde zapsané body jsou pouze minimální společné požadavky pro všechny třídy/obory - dle zkušeností, zájmu a dohody učitele a studentů se v hodinách budete věnovat i dalším tématům, připadně začnete témata z vyšších ročníků.

IT1, IT2, EP1 a EP2 v roce 2023/2024
Náplň Výstup (minimální)NávaznostMoodle testy (u Holečka a Podrazkého)
(zbytek do 8 bloků zabírá Vlastní projekt, doplňkové činnosti a pod.)
Prvák
(IT 2 t.h.)
(EP 2 t.h.)
  • Algoritmizace - jednoduché alg.
  • Grafické programování (např. UmímeTo, Scratch)
  • Statické web. stránky
  • Umí zakreslit vývojový diagram algoritmu (start/konec, krok, větvení/cyklus)
    Má zakreslené VD a rozumí algoritmům:
    1. Prohození dvou hodnot v proměnných
    2. Nalezení minima/maxima ze tří čísel
    3. Nalezení minima/maxima v poli
    4. Řešení lineární rovnice (zadané koeficienty)
    5. Řešení kvadratické rovnice (zadané koeficienty)
    6. Euklidův algoritmus
    7. Erathosenovo síto
    8. Hornerovo schéma
    9. 3n+1 problém
    10. Faktoriál - iterativně i rekurzivně
    11. Fibbonaciho posloupnost - iterativně i rekurzivně
  • Dokáže v grafickém programování používat větvení, cykly, proměnné
  • Má vytvořené své vlastní webové stránky (na libovolné téma) za použití HTML a samostatného souboru CSS
Algoritmizace I. 2,5 bloku (10 testů)
HTML+CSS 2 bloky (8 testů)
Vlastní projekt+Grafické prog. 3,5 bloku
Pozn.: Při Algoritmizaci "na papír" samozřejmě učitel může ukazovat řešení v kódu, šikovnější studenti ho mohou zkusit psát. Cílem je v dalších letech využívat své připravené materiály -> je tedy nutné, aby každý měl algoritmy zapsané "na papíře"
Druhák
(IT 4 t.h.)
(EP 2 t.h.)
  • Algoritmizace - složitější alg.
  • Dynamické web. stránky
  • Python - strukturované programování
  • C - strukturované programování v kompilovaném jazyku
  • Git
  • Má zakreslené VD a rozumí algoritmům:
    1. Vyhledávání metodou půlení intervalu
    2. Bubble sort
    3. Quick sort
    4. Merge sort
    5. Spojové seznamy (konstrukce, přidání prvku, smazání prvku, vypsání všech hodnot) - lineární, kruhový, obousměrný
    6. Fronta, Zásobník, Binární strom
    7. BFS, DFS v binárním stromu
    8. Převod z desítkové do libovolné soustavy a z libovolné do desítkové
  • Má vytvořené své vlastní webové stránky (na libovolné téma) za použití PHP.
    1. Dokáže zpracovat data z formuláře
    2. Provést výpočet, změnit obsah stránek, změnit strukturu stránek (např. tabulka o zadaném počtu řádků/sloupců)
    3. Přihlásit uživatele + různý obsah stránek pro různé uživatele
    4. Použití session a cookies (přihlášení, uložení nastavené barvy pozadí a pod.)
  • Dokáže vytvořit/má vytvořené funkční konzolové programy pro všechny algoritmy z předchozího ročníku v Pythonu
    1. Používá správně řídící struktury a datové typy - větvení, funkce, cykly, list, tuple, dict
    2. Dokumentuje kód dle konvencí jazyka (minimálně popis účelu, argumentů a navratové hodnoty funkcí)
    3. Načítá data od uživatele + ošetření případných chyb
    4. Načítá a ukládá data ze/do souboru
  • Dokáže vytvořit/má vytvořené funkční konzolové programy pro všechny algoritmy z předchozího ročníku v C
    1. Používá správně řídící struktury a datové typy - větvení, funkce (včetně předávání argumentů hodnotou/odkazem), cykly, pole, pointery, makra, hlavičkové soubory
    2. Dokumentuje kód dle konvencí jazyka (minimálně popis účelu, argumentů a navratové hodnoty funkcí)
    3. Načítá data od uživatele
    4. Formátuje výstup do konzole (dynamické volné místo před hodnotou, počet desetinných míst)
  • Má založený svůj repozitář na Git a aktivně jej využívá (minimálně pro školní úlohy v Programování). Při práci na Skupinovém projektu, má skupina projekt uložený na Git.
Algoritmizace II. 2,5 bloky (10 testů)
PHP 2 bloky (8 testů)
Python strukt. 2 bloky (8 testů)
C 1 blok (4 testy)
Vlastní projekt 0,5 bloku
Pozn.: Např. UmímeTo lze využívat i ve vyšších ročnících -> jsou zde úlohy např. na regulární výrazy, programování v Pythonu, některé úlohy z "her" typu Robotanik jsou opravu obtížné
Třeťák
(IT 3 t.h.)
(EP 2 t.h.)
  • Databáze
  • Python - OOP
  • Python - GUI
  • Má vytvořenou vlastní databázi (na libovolné téma) za použití SQL.
    1. Zakreslený ER diagram databáze
    2. Využívá vztahy typu 1:N i M:N (tedy i JOIN při čtení dat)
    3. Má vytvořené skripty pro tvorbu tabulek, vložení několika vzorových dat do každé tabulky a získání vzorových dat z tabulek
    4. Využívá atributy (datový typ, UNIQUE, NOT NULL, AUTO_INCREMENT, PK, FK, DEFAULT)
    5. Získává z databáze filtrovaná/seskupená/seřazená data
    6. Databáze je normalizovaná minimálně po Boyceho-Coddovu normu viz také Normalizace databáze
    7. S databází komunikuje i přes webové stránky i přes Python
  • Dokáže vytvořit/má vytvořené funkční konzolové programy pro všechny algoritmy z předchozího ročníku - za využití OOP tam, kde to má smysl
    1. Dokumentuje kód dle konvencí jazyka (minimálně popis účelu a atributů tříd
    2. Využívá zapouzdření
    1. Má vytvořenou GUI formulářovou aplikaci - např. pro načítání dat, spuštění a zobrazení výsledku algoritmů výše, komunikaci s databází (ukládání dat, zobrazování filtrovaných/zpracovaných dat)
    2. Má vytvořenou GUI "herní aplikaci" - pohybuje grafickými objekty myší/klávesnicí, detekuje kolize objektů a reaguje na ně, počítá body, životy
    3. Má vytvořený program pro zobrazení dat do grafu (např. matplotlib)
Databáze 3 bloky (12 testů)
Python OOP 1 blok (4 testy)
Python GUI 3 bloky (12 testů) - PyQt, PyGame, MatPlotLib po 1 bloku
Vlastní projekt 1 blok
Pozn.:
ÄŒtvrťák
(IT 3 t.h.)
(EP 2 t.h.)
  • Algoritmizace
  • Python - testování
  • Vlastní projekt
  • Dokáže popsat a (zjednodušeně) odvodit konečnost a časovou složitost algoritmů z předchozích ročníků. Dokáže hovořit o dalších vlastnostech algoritmů.
  • Vytvoří pro své programy z předchozích ročníků automatizované testy
  • Pracuje na vlastním projektu - Webová prezentace + aplikace v Pythonu + komunkace s databází
Algoritmizace III. 1 blok (4 testy)
Python testy 0,5 bloku (2 testy)
Vlastní projekt 6,5 bloku
Pozn.:
IT3, IT4 v roce 2023/2024
Druhák
(4 t.h.)
  • Algoritmizace - jednoduché alg.
  • Grafické programování (např. UmímeTo, Scratch)
  • Statické a dynamické web. stránky
  • Python - strukturované programování
  • Umí zakreslit vývojový diagram algoritmu (start/konec, krok, větvení/cyklus)
    Má zakreslené VD a rozumí algoritmům:
    1. Prohození dvou hodnot v proměnných
    2. Nalezení minima/maxima ze tří čísel
    3. Nalezení minima/maxima v poli
    4. Řešení lineární rovnice (zadané koeficienty)
    5. Řešení kvadratické rovnice (zadané koeficienty)
    6. Euklidův algoritmus
    7. Erathosenovo síto
    8. Hornerovo schéma
    9. 3n+1 problém
    10. Faktoriál - iterativně i rekurzivně
    11. Fibbonaciho posloupnost - iterativně i rekurzivně
  • Dokáže v grafickém programování používat větvení, cykly, proměnné
  • Má vytvořené své vlastní webové stránky (na libovolné téma) za použití HTML, samostatného souboru CSS a PHP.
    1. Dokáže zpracovat data z formuláře
    2. Provést výpočet, změnit obsah stránek, změnit strukturu stránek (např. tabulka o zadaném počtu řádků/sloupců)
    3. Přihlásit uživatele + různý obsah stránek pro různé uživatele
    4. Použití session a cookies (přihlášení, uložení nastavené barvy pozadí a pod.)
  • V Pythonu má zapsané všechny algoritmy z tohoto ročníku
Algoritmizace I. 2,5 bloku (10 testů)
HTML+CSS+PHP 4 bloky (16 testů)
Python strukt. 2 bloky (8 testů)
Vlastní projekt+Grafické prog. -0,5 bloku - musí se využít 2 rezervní týdny i pro předchozí činnosti (pracují na VP a v grafickém prog. v průběhu roku - mají 4 hodiny týdně...)
Pozn.: Při Algoritmizaci "na papír" samozřejmě učitel může ukazovat řešení v kódu, šikovnější studenti ho mohou zkusit psát. Cílem je v dalších letech využívat své připravené materiály -> je tedy nutné, aby každý měl algoritmy zapsané "na papíře"
Třeťák
(2 t.h.)
  • C - strukturované programování v kompilovaném jazyku
  • Algoritmizace - složitější alg.
  • Python - OOP
  • Python - GUI
  • Git
  • Dokáže vytvořit/má vytvořené funkční konzolové programy pro všechny algoritmy z předchozího ročníku v C
    1. Používá správně řídící struktury a datové typy - větvení, funkce (včetně předávání argumentů hodnotou/odkazem), cykly, pole, pointery, makra, hlavičkové soubory
    2. Dokumentuje kód dle konvencí jazyka (minimálně popis účelu, argumentů a navratové hodnoty funkcí)
    3. Načítá data od uživatele
    4. Formátuje výstup do konzole (dynamické volné místo před hodnotou, počet desetinných míst)
  • Má zakreslené VD a rozumí algoritmům:
    1. Bubble sort
    2. Quick sort
    3. Merge sort
    4. Spojové seznamy (konstrukce, přidání prvku, smazání prvku, vypsání všech hodnot) - lineární, kruhový, obousměrný
    5. Fronta, Zásobník, Binární strom
    6. BFS, DFS v binárním stromu
    7. Převod z desítkové do libovolné soustavy a z libovolné do desítkové
    8. Vyhledávání metodou půlení intervalu
  • Dokáže vytvořit/má vytvořené funkční konzolové programy pro všechny algoritmy z tohoto ročníku - za využití OOP tam, kde to má smysl
    1. Dokumentuje kód dle konvencí jazyka (minimálně popis účelu a atributů tříd
    2. Využívá zapouzdření
    1. Má vytvořenou GUI formulářovou aplikaci - např. pro načítání dat, spuštění a zobrazení výsledku algoritmů výše, komunikaci s databází (ukládání dat, zobrazování filtrovaných/zpracovaných dat)
    2. Má vytvořenou GUI "herní aplikaci" - pohybuje grafickými objekty myší/klávesnicí, detekuje kolize objektů a reaguje na ně, počítá body, životy
  • Má založený svůj repozitář na Git a aktivně jej využívá (minimálně pro školní úlohy v Programování). Při práci na Skupinovém projektu, má skupina projekt uložený na Git.
C 1 blok (4 testy)
Algoritmizace II. 2,5 bloku (10 testů)
Python OOP 1 blok (4 testy)
Python GUI 3 bloky (12 testů) - PyQt, PyGame, MatPlotLib po 1 bloku
Vlastní projekt 0,5 bloku
Pozn.: Např. UmímeTo lze využívat i ve vyšších ročnících -> jsou zde úlohy např. na regulární výrazy, programování v Pythonu, některé úlohy z "her" typu Robotanik jsou opravu obtížné
ÄŒtvrťák
(2 t.h.)
  • Algoritmizace
  • Databáze
  • Python - testování
  • Vlastní projekt
  • Dokáže popsat a (zjednodušeně) odvodit konečnost a časovou složitost algoritmů z předchozích ročníků. Dokáže hovořit o dalších vlastnostech algoritmů.
  • Má vytvořenou vlastní databázi (na libovolné téma) za použití SQL.
    1. Zakreslený ER diagram databáze
    2. Využívá vztahy typu 1:N i M:N (tedy i JOIN při čtení dat)
    3. Využívá atributy (datový typ, UNIQUE, NOT NULL, AUTO_INCREMENT, PK, FK, DEFAULT)
    4. Získává z databáze filtrovaná/seskupená/seřazená data
    5. Databáze je normalizovaná minimálně po Boyceho-Coddovu normu
    6. S databází komunikuje i přes webové stránky i přes Python
  • Vytvoří pro své programy z předchozích ročníků automatizované testy
  • Pracuje na vlastním projektu - Webová prezentace + aplikace v Pythonu + komunkace s databází
Algoritmizace III. 1 blok (4 testy)
Databáze 3 bloky (12 testů)
Python testování 0,5 bloku (2 testy)
Vlastní projekt 3,5
Pozn.:
EP3, EP4 v roce 2022/2023
Druhák
(2 t.h.)
  • Algoritmizace - jednoduché alg.
  • Grafické programování (např. UmímeTo, Scratch)
  • Python - strukturované programování
  • Umí zakreslit vývojový diagram algoritmu (start/konec, krok, větvení/cyklus)
    Má zakreslené VD a rozumí algoritmům:
    1. Prohození dvou hodnot v proměnných
    2. Nalezení minima/maxima ze tří čísel
    3. Nalezení minima/maxima v poli
    4. Řešení lineární rovnice (zadané koeficienty)
    5. Řešení kvadratické rovnice (zadané koeficienty)
    6. Euklidův algoritmus
    7. Erathosenovo síto
    8. Hornerovo schéma
    9. 3n+1 problém
    10. Faktoriál - iterativně i rekurzivně
    11. Fibbonaciho posloupnost - iterativně i rekurzivně
  • Dokáže v grafickém programování používat větvení, cykly, proměnné
  • V Pythonu má zapsané všechny algoritmy z tohoto ročníku
Algoritmizace I. 2,5 bloku (10 testů)
Python strukt. 2 bloky (8 testů)
Vlastní projekt 3,5 bloku
Pozn.: Při Algoritmizaci "na papír" samozřejmě učitel může ukazovat řešení v kódu, šikovnější studenti ho mohou zkusit psát. Cílem je v dalších letech využívat své připravené materiály -> je tedy nutné, aby každý měl algoritmy zapsané "na papíře"
Třeťák
(2 t.h.)
  • na začátku roku C - strukturované programování v kompilovaném jazyku
  • Algoritmizace - složitější alg.
  • Python - OOP
  • Python - GUI
  • Git
  • Dokáže vytvořit/má vytvořené funkční konzolové programy pro všechny algoritmy z předchozího ročníku v C
    1. Používá správně řídící struktury a datové typy - větvení, funkce (včetně předávání argumentů hodnotou/odkazem), cykly, pole, pointery, makra, hlavičkové soubory
    2. Dokumentuje kód dle konvencí jazyka (minimálně popis účelu, argumentů a navratové hodnoty funkcí)
    3. Načítá data od uživatele
    4. Formátuje výstup do konzole (dynamické volné místo před hodnotou, počet desetinných míst)
  • Má zakreslené VD a rozumí algoritmům:
    1. Bubble sort
    2. Quick sort
    3. Merge sort
    4. Spojové seznamy (konstrukce, přidání prvku, smazání prvku, vypsání všech hodnot) - lineární, kruhový, obousměrný
    5. Fronta, Zásobník, Binární strom
    6. BFS, DFS v binárním stromu
    7. Převod z desítkové do libovolné soustavy a z libovolné do desítkové
    8. Vyhledávání metodou půlení intervalu
  • Dokáže vytvořit/má vytvořené funkční konzolové programy pro všechny algoritmy z předchozího a tohot ročníku - za využití OOP tam, kde to má smysl
    1. Dokumentuje kód dle konvencí jazyka (minimálně popis účelu a atributů tříd
    2. Využívá zapouzdření
    1. Má vytvořenou GUI formulářovou aplikaci - např. pro načítání dat, spuštění a zobrazení výsledku algoritmů výše, komunikaci s databází (ukládání dat, zobrazování filtrovaných/zpracovaných dat)
    2. Má vytvořenou GUI "herní aplikaci" - pohybuje grafickými objekty myší/klávesnicí, detekuje kolize objektů a reaguje na ně, počítá body, životy
  • Má založený svůj repozitář na Git a aktivně jej využívá (minimálně pro školní úlohy v Programování). Při práci na Skupinovém projektu, má skupina projekt uložený na Git.
C 1 blok (4 testy)
Algoritmizace II. 2,5 bloku (10 testů)
Python OOP 1 blok (4 testy)
Python GUI 3 bloky (12 testů) - PyQt, PyGame, MatPlotLib po 1 bloku
Vlastní projekt 0,5 bloku
Pozn.: Např. UmímeTo lze využívat i ve vyšších ročnících -> jsou zde úlohy např. na regulární výrazy, programování v Pythonu, některé úlohy z "her" typu Robotanik jsou opravu obtížné
ÄŒtvrťák
(2 t.h.)
  • Algoritmizace
  • Databáze
  • Python - testování
  • Vlastní projekt
  • Dokáže popsat a (zjednodušeně) odvodit konečnost a časovou složitost algoritmů z předchozích ročníků. Dokáže hovořit o dalších vlastnostech algoritmů.
  • Má vytvořenou vlastní databázi (na libovolné téma) za použití SQL.
    1. Zakreslený ER diagram databáze
    2. Využívá vztahy typu 1:N i M:N (tedy i JOIN při čtení dat)
    3. Využívá atributy (datový typ, UNIQUE, NOT NULL, AUTO_INCREMENT, PK, FK, DEFAULT)
    4. Získává z databáze filtrovaná/seskupená/seřazená data
    5. Databáze je normalizovaná minimálně po Boyceho-Coddovu normu
    6. S databází komunikuje i přes webové stránky i přes Python
  • Vytvoří pro své programy z předchozích ročníků automatizované testy
  • Pracuje na vlastním projektu - (Webová prezentace - z předmětu VYT) + aplikace v Pythonu + komunkace s databází
Algoritmizace III. 1 blok (4 testy)
Databáze 3 bloky (12 testů)
Python testování 0,5 bloku (2 testy)
Vlastní projekt 3,5
Pozn.: