Skip to content

matous-volf/lectures

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DELTA SŠIE - TopGun

Talentový program DELTA TopGun jsme založili, abychom dokázali v programátorských dovednostech efektivně posouvat i zkušené programátory.

DELTA TopGun poster

Forma výuky

V rámci programu jsou vyučovány dva kurzy – Praktický projekt) a Teoretická informatika, které jsou pro studenty povinné. Výuka se koná prezenčně každé úterý a to v schématu 2:1 (2 po sobě jdoucí týdny přednáška Teoretické informatiky, 1 týden přednáška Praktického projektu).

Rozvrh výuky

Rozvrh prezenční výuky a přednášek v rámci programu DELTA TopGun je dostupný zde.

Osnova kurzu Praktický projekt

Zaměření kurzu

Kurz Praktický projekt nabízí studentovi příležitost věnovat se realizaci softwarového projektu v konkrétní oblasti vlastního zájmu. Každý student má k dispozici lektora, pod jehož vedením svůj projekt zpracovává. Od každého studenta je očekáván návrh zadání individuálního projektu a jeho následné zpracování. Praktický kurz je rovněž jednou za 3 týdny proložen workshopem (prezenčně ve škole), který je věnován konkrétní problematice z oboru (viz Harmonogram praktických workshopů).

Párování student × lektor – Pitch Day

Párování studenta s lektorem je vyhodnoceno na základě průniku zaměření studentova projektu a oblasti zájmu lektora. Párování proběhne v reakci na tzv. Pitch Day – nultou hodinu kurzu, kdy studenti prezentují své projektové záměry a lektoři poskytují zpětnou vazbu. Datum konání Pitch Day je v každém ročníku individuální a bude komunikováno s dostatečným předstihem.

Povinnosti zapsaných studentů

  1. Odprezentovat svůj projektový záměr (viz Náležitosti projektového záměru)
  2. Absolvovat úvodní schůzku s přiděleným lektorem
  3. Každý pracovní den zapisovat svou aktivitu do on-line journalu (viz Náležitosti každodenního zápisu do on-line journalu)
  4. Vypracovat rámcovou analýzu softwarového projektu (viz Náležitosti rámcové analýzy)
  5. Vypracovat projektovou roadmapu
  6. Průběžně (minimálně však jednou za týden) s lektorem konzultovat aktuální stav projektu, řešené problémy a plán dalšího postupu (periodicita konzultací a jejich forma je v kompetenci lektora)
  7. Před každým praktických workshopem veřejně odprezentovat svůj postup – tzv. status update (viz Náležitosti "status update")
  8. Pravidelně (minimálně však jednou za týden) lektorovi odeslat pull-request ke code-review (periodicita code-review a jejich forma je v kompetenci lektora)
  9. Pravidelně (minimálně však jednou za týden) poskytnout code-review projektu spolužáka (bude přihlédnuto k přidruženosti technologického stacku)
  10. Pravidelně kód praktického projektu verzovat dle lektorem doporučené verzovací strategie

Neplnění povinností kurzu

Při opakovaném neplnění Povinnosti zapsaných studentů může být přistoupeno k vyřazení studenta z programu DELTA TopGun. A to zejména v následujích případech:

  • Student, bez předchozí omluvy, během školního roku 5x nezapsal aktivitu do on-line journalu (viz Náležitosti každodenního zápisu do on-line journalu)
  • Student, bez předchozí omluvy, během školního roku 2x neodprezentoval status update dle náležitostí (viz Náležitosti "status update")
  • Student, bez předchozí omluvy, běhěm školního roku 2x neodeslal lektorovi pull-request ke code-review
  • Student, bez předchozí omluvy, během školního roku 2x neposkytnul code-review přidruženému projektu
  • Student, bez předchozí omluvy, během školního roku 2x nereaguje na výzvu lektora ohledně nenaplnění cíle, který si student sám stanovil během status update

Náležitosti projektového záměru

Student volí kategorii realizace svého individuálního projektu a jeho zadání – a to konkrétně jedno z: Realizace vlastního projektu, Realizace projektu pro rozvoj školního ekosystému, Realizace modelového projektu.

Každý projektový záměr musí obsahovat:

  1. Představení projektu, jeho myšlenky, využití a cíle
  2. Zmapování konkurenčních projektů: Existují již podobné projekty? V jaké fázi jsou? V čem bude můj jiný?
  3. Plánovaný rozsah projektu: Co student plánuje v rámci programu TopGun dokončit?
  4. Technologický stack pro realizaci projektu

Náležitosti rámcové analýzy

V každé rámcové analýze musí být obsaženy následující náležitosti pro zpracování zadání softwarovéh projektu:

  1. Stručná verze projektového záměru
  2. Rozsah realizace projektu
  3. Technologický stack a zdůvodnění výběru daných technologí
  4. Hrubá časová osa zpracování projektu (milestones)
  5. Component diagram systému dle notace UML (případně alespoň obdobný diagaram, který zachytí klíčové komponenty analyzovaného systému)

Z rámcové analýzy musí být jinému vývojáří zřejmé "co má vyrábět", "jak to má vyrábět" a "do kdy to má stihnout". Korektnost rámcové analýzy je vyhodnocena lektorem a bez validní ramcové analýzy nelze začít projekt realizovat.

Náležitosti každodenního zápisu do on-line journalu

Student každý pracovní den do on-line journalu zapíše, čemu se daný den v rámci svého praktického projektu věnoval. Je naprosto v pořádku, když se student v daném dnu praktickému projektu nevěnoval vůbec, tuto skutečnsot však rovněž musí do on-line journalu zapsat. Zápisy do on-line journalu poskytují lektorům nástroj, jakým dodatečně vyhodnotit aktivitu studentů. Zápisy do on-line journalu probíhají na platformě Discord, kam je každý student před začátku programu přizván.

Náležitosti "status update"

Během status update student nejprve živě odprezentuje dosavadní výsledek svého softwarového projektu a ukáže jeho historii verzování. Následně stručně odpoví a vyhodnotí následující otázky:

  • Splnil jsem cíl, který jsem si na uplynulé 3 týdny stanovil?
  • Cíl jsem nesplnil. Jaké chyby jsem udělal? Jak se z nich příště poučím?
  • Cíl jsem splnil. Co se mi povedlo a budu v tom nadále pokračovat?
  • Jaký cíl plánuji splnit v následujících 3 týdnech? Jaká je jeho hlavní náplň a jak budu postupovat k jeho dosažení?

Realizace vlastního projektu

Každému studentovi je důrazně doporučena realizace vlastního projektu. Student může přijít s libovolným projektovým záměrem z oblasti svého zájmu – je to ideální způsob, jak v rámci kurzu pracovat na něčem, co studenta opravdu zajímá a baví. Za předpokladu splnění veškerých náležitosti projektového záměru je studentovi realizace vlastního tématu vždy umožněna a je podpořena přidělením vhodného lektora. Podpořena je rovněž realizace vlastního projektu v týmu. A to za stejných podmínek, a za dodatečného předpokladu rozumného rozdělení zodpovědností v rámci týmu, které je posouzeno lektorem.

Realizace projektu pro rozvoj školního ekosystému

Pro studenty, kteří chtějí pracovat na projektech, které podpoří rozvoj školního ekosystému jsou připravena předem definovaná reálná zadání. Pro studenty realizující projekt pro rozvoj školního ekosystému platí stejné podmínky zpracování projektu (viz Povinnosti zapsaných studentů), a to včetně zpracování a přednesení projektového záměru při Pitch Day dle náležitostí (viz Náležitosti projektového záměru). Podpořena je rovněž realizace vlastního projektu v týmu. A to za stejných podmínek, a za dodatečného předpokladu rozumného rozdělení zodpovědností v rámci týmu, které je posouzeno lektorem. Zde si škola vymezuje právo na výběr studenta, či týmu studentů, kterým bude projekt přidělen.

Aktuálně nabízené projekty pro rozvoj školního ekosystému:

  • Motivační informační systém DELTA
  • Informační systém „Pardubický IT Draft“
  • Systém pro pořádání multioborových soutěží
  • Soutěž v programování pro žáky ZŠ "Pardubický Trigger"

Realizace modelového projektu

V krajních případech je studentům umožněno realizovat projekt v rámci jedné z modelových osnov. Pro studenty realizující projekt dle modelového zadání platí stejné podmínky zpracování projektu (viz Povinnosti zapsaných studentů), a to včetně zpracování a přednesení projektového záměru při Pitch Day dle náležitostí (viz Náležitosti projektového záměru).

Osnovy pro modelová zadání projektů

Fullstack webová aplikace

# Fullstack webová aplikace
1 Rámcový návrh a analýza aplikace
2 Databázový model a nastavení databáze
3 Realizace REST/GraphQL API (Java/PHP/Node.js)
4 Realizace webového frontend rozhraní (JavaScript (vanilla)/React.js/Vue.js) (případně možnost realizovat hybridní mobilní aplikaci)
5 Automatizované otestování aplikace (unit, e2e)
6 Optimalizace výkonnosti webové aplikace
7 Deployment aplikace

Praktické programování v jazyce Java

# Praktické programování v jazyce Java
1 Základní syntaxe
2 Objektově orientovaná analýza a návrh - charakteristika UML, přehled diagramů
3 Build a správa závislostí - Maven
4 Objektově orientované programování (polymorfismus, rozhraní)
5 Datové struktury
6 Automatizované unit testy, ladění aplikací (debugging)
7 Práce s relační databází, mapování objektů do relačních databází
8 Návrhové vzory a principy
9 Praktický projekt - REST API/CLI aplikace

Praktické programování v PHP

# Praktické programování v PHP
1 Základní syntaxe a Xdebug
2 Objektově orientované programování v PHP
3 Správa externích závislostí – composer
4 Persistence dat
5 Automatické testování aplikace – unit testy
6 Tvorba jednoduchého webu – PHP+HTML+CSS
7 Tvorba REST API
8 Tvorba modulů a pluginů do existujících projektů

Devops

# Devops
1 Containerizace, co to je a k čemu se dá využít
2 Docker, docker-compose
3 CI
4 Clusters, Docker swarm (monitoring, logging)
5 Cloud - AWS (alerts, budgets)
6 Deployment webové aplikace

Hands-on metody kryptografie

# Hands-on metody kryptografie
1 Historické kryprografické systémy
2 Zřízení společného klíče
3 Hašovací funkce
4 Blokové šifrování a operační módy blokových šifer
5 Asymetrická kryptografie - kryptografie s veřejným klíčem

Hands-on metody strojového učení

# Hands-on metody strojového učení
1 Systémy strojového učení
2 Úvod do jazyka Python - práce s realnými daty (předzpracování, vizualizace)
3 Vybrané metody strojového učení: Rozhodovací stromy, náhodné lesy
4 Evaluace modelů
5 Vybrané metody strojového učení: Shlukování
6 Vybrané metody strojového učení: Lineární regrese, logistická regrese, metoda největšího spádu
7 Vybrané metody strojového učení: Umělé neuronové sítě a jejich architektury
8 Recenze vědeckého článku
9 End-to-end machine-learning projekt (analýza a předpoklady problému, získání dat, předzpracování dat a vizualizace, selekce modelu, trénování modelu, fine-tuning, deployment)

Harmonogram praktických workshopů

# Datum Téma Lektor
1 18. 10. 2022 Úvod do verzovacího systému git Michal Havelka
2 08. 11. 2022 Úvod do verzovacího systému git - pokračování Michal Havelka

Osnova kurzu Teoretická informatika

Zaměření kurzu

Kurz Teoretická informatiky nabízí kompilaci vybraných oblastí teoretické informatiky. Důraz je kladen na vybudování intuice při řešení algoritmických problémů a uchopení základních principú počítačové vědy.

Osnova přednášek

# Téma
0 Úvod do programu Delta TopGun, úvod do kurzu Teoretická informatika, úvod do kurzu Praktický seminář
1 První kód v C, kompilace, datové typy, zpracování vstupu a výstupu (scanf, printf), kontrola validity vstupu, formátování výstupu, debugging
2 Reprezentace čísel v počítači (celočíselné, s plovoucí čárkou), problematika čísel se znaménkem (doplňkový/aditivní/přímý kód), bitwise
3 Pole a paměť, segmentace paměti, základní alokace paměti, průchody polem, segmentation fault, řetězce znaků (null character), kopírování řetězců
4 Reprezentace datových struktur v paměti. Asymptotická složitost, rozdíly mezi omikron, omega, theta, ukázky algoritmů a jejich složitostí
5 Sorting algoritmy - insertion, selection, bubble, quick sort
6 Paměť - Stack vs Heap, referenční a hodnotové předávání parametrů (pointery), garbage collector, manuální správa paměti, efektivita programu z pohledu cache pamětí
7 Dynamické pole, asymptotická vs amortizovaná složitost
8 Spojový seznam - základní operace (vkládání, mazání, průchod seznamem), obousměrně zřetězené a kruhově zřetězené seznamy a jejich aplikace
9 Rekurze - koncová vs nekoncová rekurze, rozděl a panuj
10 Stromové struktury
11 Vyhledávaci stromy - BVS (binární vyhledávací strom)
12 AVL stromy - definice, algoritmus na vyvažování
13 Grafy - zobecnění předchozích témat
14 Zásobník, Fronta - využití, fifo, lifo
15 Průchody grafem - in/out/pre order průchod stromem, BFS, DFS
16 Datová struktura binární minimová halda, heapsort algoritmus
17 Hledání nejkratší cesty v grafu - BFS, Dijkstrův algoritmus, Bellman-Ford algoritmus

Povinnosti zapsaných studentů

  1. Prezenčně navštěvovat přednášky kurzu Teoretická informatika
  2. Odevzdávat domácí úlohy v řádném termínu na platformě DOMJudge

Neplnění povinností kurzu

Při opakovaném neplnění Povinnosti zapsaných studentů může být přistoupeno k vyřazení studenta z programu DELTA TopGun. A to zejména v následujích případech:

  • Student, bez předchozí omluvy, během školního roku 1x prezenčně nenavštívil přednášku kurzu Teoretická informatika
  • Student, bez předchozí omluvy, během školního roku 1x v řádném termínu neodevzdal domácí úlohu na platformě DOMJudge

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 90.2%
  • CMake 6.0%
  • Shell 3.8%