Skip to content

delta-cs/lectures

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DELTA SŠIE - TopGun

Talentový program DELTA TopGun jsme založili pro žáky, kteří se chtějí věnovat programování a informatice do (velké) hloubky.

Je nutné míti základní znalosti programování a být ochoten se učit novým věcem.

DELTA TopGun poster

Forma výuky

V rámci programu jsou vyučovány dva kurzy, které jsou pro žáky povinné

a žáci také musí pracovat na individuálním projektu.

Výuka se koná prezenčně v režimu 2:1. Dva po sobě jdoucí týdny jsou přednášky či cvičení z teoretické informatiky následované jednou hodinou praktického semináře.

Rozvrh výuky

Rozvrh prezenční výuky a přednášek je dostupný v kalendáři.

Teoretická informatika

Zaměření

Kurz teoretické informatiky obsahuje některé vybrané oblasti teoretické informatiky a snaží se žákům přiblížit základní principy a algoritmy, které jsou v informatice důležité a využívané.

Kurz je zaměřen na základní znalosti nízkoúrovňového programování a na principy řešení algoritmicky zajímavých problémů a úloh. Důraz je kladen na budování intuice při řešení algoritmických problémů a uchopení základních principú počítačové vědy.

Po dokončení jednotlivých témat teoretické informatiky dostávají žáci programovací úkol na platformě DOMJudge, do které dostanou přístup na začátku programu.

Tyto úlohy jsou zaměřeny na procvičení daného tématu a na získání praktických dovedností s programováním v jazyce C.

Systém automaticky kontroluje správnost řešení a v případě neúspěšného řešení může žák kontaktovat přednášejícího a konzultovat své řešení.

Přednášky

# Téma
0 Představení programu Delta TopGun, kurzu teoretické informatiky a kurzu praktického semináře
1 Překlad programu v C, datové typy, zpracování vstupu a výstupu, kontrola validity vstupu a formátování výstupu
2 Reprezentace čísel v počítači, kódování čísel se znaménkem a bitové operace
3 Pole a jeho reprezentace v paměti, řetězce a segmentace paměti
4 Reprezentace datových struktur v paměti, asymptotická složitost, ukázky algoritmů a jejich složitostí
5 Spojový seznam, operace se spojovým seznamem, obousměrně a kruhově zřetězený seznam
6 Rekurze, rodíl mezi koncovou a nekoncovou rekurzí a algoritmy rozděl a panuj
7 Stromové struktury
8 Vyhledávací strom a binární vyhledávací strom
9 Vyvážený vyhledávací strom a automatické vyvažování
10 Teorie grafů
11 Základní datové struktury pro průchod grafu
12 Binární minimová halda a heapsort algoritmus
13 Hledání nejkratší cesty v grafu, BFS, Dijkstrův a Bellman-Fordův algoritmus
14 NP-těžké úlohy a jejich exponenciální algoritmy
15 Dynamické programování
16 Objektově orientované programování a další programovací paradigmata
17 Paralelní programování, deadlocky a řešení maticového násobení
18 Distibuované paralelní programování
19 Formální gramatiky a souvislost s návrhem programovacích jazyků
20 Deterministické konečné automaty a návaznost na návrhové vzory
21 Regulární výrazy a vzájemná převoditelnost regulárních jazyků
22 Práce s velkými daty, Jupyter notebooky a základy strojového účení
23 Automatické testování softwaru

Praktický seminář

Zaměření

Kurz praktického semináře je zaměřen na praktické využití znalostí programování a informatiky, které si žáci osvojují v rámci vedených hodin ve škole a následně také na vlastním projektu.

Hodiny ve škole jsou věnovány workshopům k aktuálním tématům a technologiím z oblasti vývoje softwaru a praktickému využití těchto znalostí v rámci připravených úkolů a nebo vlastního projektu.

Každý žák pracuje na vlastním projektu, který si může sám zvolit, nebo může využít nabízená témata pro rozvoj školního ekosystému a nebo modelové projekty.

Individuální projekt

Párování žák × lektor

Párování žáka s lektorem je vyhodnoceno na základě průniku zaměření žákova projektu a oblasti odbornosti lektora. Párování proběhne na tzv. Pitch Day, kdy žáci 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 různé a bude komunikováno s dostatečným předstihem.

Náležitosti projektu

Žák si volí jednu z těchto kategorií pro svůj individuální projekt:

Dale je nutné vytvořit projektový záměr, který bude obashovat:

  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 žák plánuje v rámci programu TopGun dokončit?
  4. Technologický stack

Jednu z prvních věcí, které přidělený lektor po žákovi bude chtít zpracovat, je rámcová analýza:

  1. Stručná verze projektového záměru
  2. Rozsah 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
  • Do kdy to má stihnout

Korektnost rámcové analýzy je vyhodnocena lektorem a bez validní ramcové analýzy nelze začít projekt realizovat.

Každodenní zápis do on-line journalu

Zápisy do on-line journalu probíhají na platformě Discord, kam je každý žák na začátku programu přizván.

Žák má povinnost každý školní den zapsat, čemu se daný den v rámci svého praktického projektu věnoval. Je naprosto v pořádku, když se žák v daném dnu praktickému projektu nevěnoval, tuto skutečnsot však rovněž musí zapsat.

Zápisy do on-line journalu poskytují lektorům nástroj, jakým dodatečně vyhodnotit aktivitu žáků.

Status update

Během status update žák odprezentuje aktuální stav svého softwarového projektu. Následně stručně odpoví na otázky lektora a ostatních žáků.

Prezentace by měla obsahovat následující body:

  • Splnil jsem cíl, který jsem si na uplynulé období 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ím období? Jaká je jeho hlavní náplň a jak budu postupovat k jeho dosažení?

Vlastní projekt

Každý žák by měl zvážit realizaci vlastního projektu. Je to ideální způsob, jak v rámci kurzu pracovat na něčem, co žáka opravdu zajímá a baví. Za předpokladu splnění veškerých náležitostí projektu je žákovi realizace vlastního tématu 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. Projekt pohléhá stejným podmínkám jako individuální projekt, ale je nutné zajistit a udržet rozumné rozdělení zodpovědností a práce v týmu.

Projekt pro rozvoj školního ekosystému

Žáci mohou pracovat na projektech, které podpoří rozvoj školního ekosystému. Tyto projekty mají předem definované zadání a cíl, který je nutné splnit.

Pro žáky realizující tento typ projektu platí stejné podmínky a povinnosti jako pro vlastní projekt, a to včetně zpracování a přednesení projektového záměru při Pitch Day dle náležitostí.

Podpořena je rovněž realizace projektu v týmu. Projekt pohléhá stejným podmínkám jako individuální projekt, ale je nutné zajistit a udržet rozumné rozdělení zodpovědností a práce v týmu.

Škola si vymezuje právo na výběr žáka, či týmu žáků, kterým bude projekt přidělen.

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

Modelový projekt

Žákům je také umožněno pracovat na projektu v rámci jedné z modelových osnov.

Pro žáky realizující tento typ projektu platí stejné podmínky a povinnosti jako pro vlastní projekt, a to včetně zpracování a přednesení projektového záměru při Pitch Day dle náležitostí.

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 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)

Povinnosti zapsaných žáků

  1. Odevzdávat domácí úlohy v řádném termínu na platformě DOMJudge
  2. Odprezentovat svůj projektový záměr na Pitch Day
  3. Absolvovat úvodní schůzku s přiděleným lektorem
  4. Každý školní den zapisovat svou aktivitu do on-line journalu
  5. Vypracovat rámcovou analýzu softwarového projektu
  6. Vypracovat projektovou roadmapu
  7. Průběžně, minimálně však jednou za dva týdny, s lektorem konzultovat:
    • Aktuální stav projektu
    • Řešené problémy
    • Plán dalšího postupu
  8. Prezentovat svůj status update ve škole na hodině praktického semináře (přibližně 3x za pololetí)
  9. Pravidelně lektorovi odesílat pull requesty ke code-review
  10. Pravidelně kód projektu verzovat dle lektorem doporučené verzovací strategie

Neplnění povinností

Při opakovaném neplnění povinností zapsaných žáků může být přistoupeno k vyřazení žáka z programu DELTA TopGun.

A to zejména v následujích případech:

  • Žák, bez předchozí omluvy, během školního roku neodevzdal 2 domácí úlohy na platformě DOMJudge
  • Žák, bez předchozí omluvy, během školního roku 10x nezapsal aktivitu do on-line journalu
  • Žák, bez předchozí omluvy, během školního roku 2x neodprezentoval status update
  • Žák, bez předchozí omluvy, během školního roku 2x nereaguje na výzvu lektora ohledně nenaplnění cíle, který si žák sám stanovil během status update
  • Žák, bez předchozí omluvy, chyběl na 2 hodinách teoretické informatiky nebo praktického semináře

Computers are good at following instructions, but not at reading your mind.

-- Donald Knuth

Any fool can write code that a computer can understand. Good programmers write code that humans can understand.

-- Martin Fowler

Code is like humor. When you have to explain it, it’s bad.

-- Cory House

About

No description or website provided.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •