Sylaby
Anotácia predmetu
Predmet je zameraný na programovanie v jazyku Python a na praktické pochopenie dátových štruktúr, algoritmov a moderných programovacích prístupov. Študenti si postupne osvoja syntax jazyka, prácu s kolekciami, objektové a funkcionálne programovanie, analýzu zložitosti, základné dátové štruktúry, stromové a grafové štruktúry, dynamické programovanie, spätné prehľadávanie, kompresné algoritmy a asynchrónne aj paralelné spracovanie.
Dôraz je kladený na praktické programátorské zručnosti - výber prostriedkov, návrh a analýza algoritmu, zapísanie čitateľného kódu a odstránenie chýb.
Absolvent predmetu by mal:
- Vedieť samostatne navrhnúť a zapísať algoritmus v jazyku Python na zadaný problém.
- Poznať základné techniky návrhu a analýzy algoritmov a spracovania dát.
- Vedieť posúdiť efektivitu a vhodnosť existujúcich algoritmov na riešenie zadaného problému.
Praktická časť predmetu:
- Praktické problémy riešené na cvičeniach vo forme tutoriálu.
- Písomky - vypracovanie zadaného problému v čase cvičenia bez použitia externých pomôcok.
- Domáce zadania - Samostatné vypracovanie, odovzdanie a obhajoba zadaného problému.
Slovníček
- dictionary: slovník
- list: zoznam
- sequence: postupnosť
- iteration: prechádzanie
- list slices: výber zo zoznamu (výrezy).
- list comprehension: generovanie zoznamu.
- dict comprehension: generovanie slovníka.
- mutable: meniteľný
- slice : výrez
- tuple: n-tica
- closure: uzáver, uzatváracia funkcia.
- raise exception: vyhodiť výnimku.
- yield: výstup hodnôt z funkcie.
Plán semestra
- Prednáška 1: Syntax a údajové typy, Cvičenie 1 - pracovné prostredie a prvá úloha
- Prednáška 2: Funkcionálne programovanie, Cvičenie 2
- Prednáška 3: Pracovná cesta, Cvičenie: Aktivita 1
- Prednáška 4: Objektovo orientované programovanie, Cvičenie 4
- Prednáška 5: Zložitosť algoritmov, Písomka
- Prednáška 6: Kolekcie - Hešovacie tabuľky, Cvičenie 5, Obhajoba
- Prednáška 7: Kolekcie - Stromy, Cvičenie 6
- Prednáška 8: Kompresia - Huffmanov strom, Cvičenie 7, NLP Meeting
- Prednáška 9: Kompresia - Slovníkové algoritmy, Cvičenie 8, 17. november.
- Prednáška 10: Dynamické programovanie, Písomka
- Prednáška 11: Paralelné programovanie, Cvičenie 9 (ku skúške), Obhajoba
- Prednáška 12: Asynchrónne programovanie, Cvičenie 10 (ku skúške), Opravné písomky
- Prednáška 13: Predtermín, Cvičenie: Zápočty, Opravné písomky
- Vianoce - pondelok, utorok, streda ešte nie.
Hodnotenie
Zápočet:
- 2 x obhajoby 20 bodov
- 2 x písomky 16 bodov
- bonusové úlohy 4 body
Záverečná skúška:
Písomka a domáca úloha (60B)
Podmienkou na získanie zápočtu je získať minimálne 21 bodov z hodnotených úloh a mať nie viac ako tri ospravedlnené neúčasti na cvičeniach.
Etický kódex - odporúčania pri využívaní umelej inteligencie a externých zdrojov
Modely dnes vedia prekonať vo svojich schopnostiach veľa začínajúcich programátorov. V tomto predmete toto chceme prekonať a poskytnúť Vášmu budúcemu zamestnávateľovi dôvod, aby investoval radšej do Vášho platu, ako do AI kreditov.
Cieľom predmetu je získanie osobných programátorských zručností, ktoré spočívajú aj v:
- návrhu algoritmu a výbere vhodných nástrojov.
- pochopení zadania.
- osobnom zápise algoritmu použitím klávesnice počítača.
- zapamätaní si názvov funkcií a ovládaní syntaxi programátorskeho jazyka pomocou vlastnej hlavy.
- schopnosti rýchlo identifikovať a vyriešiť problém v kóde bez použitia externých nástrojov.
- práci pod miernym stresom v obmedzenom čase a v obmedzenom prostredí.
- samostatnom štúdiu a porozumení technickej dokumentácie.
- samostatnom zápise technickej dokumentácie.
Neúmerné používanie generatívnych modelov bráni tvorbe týchto zručností.
Generatívne modely majú aj nasledovné nevýhody:
- Kód je ťažko zrozumiteľný
- Kód je príliš dlhý
- Obsahuje chyby, ktoré je ťažko nájsť.
- Kód nemusí presne vyhovovať špecifikácii.
Na druhej strane, schopnosť správne používať generatívne modely je dnes nevyhnutná v programátorskej praxi z dôvodu potenciálu zvýšenej produktivity a širokého nasadenia v programátorskej praxi. Z toho dôvodu nemá zmysel brániť sa použitiu generatívnych modelov.
V tomto predmete je dovolené použitie generatívnych modelov a hotových riešení za podmienok:
- Vygenerované riešenie modifikujete a osobne prepíšete do textového editora.
- Odovzdáte aj nekompletné riešenie problému.
- Použitie modelu priznáte v komentároch v odovzdanom riešení.
Je zakázané:
- používanie generatívnych modelov počas písomiek.
- odovzdávanie kompletných hotových riešení z ľubovoľného zdroja bez modifikácie.
Dôvody pre udelenie nulového hodnotenia:
- Odovzdaná jediná verzia riešenia, kde nie je vidno pracovný postup.
- Úplná zhoda s iným odovzdaným zadaním.
- Použitie Copy-Paste z externých zdrojov počas písomky.
- Neschopnosť slovne vysvetliť odovzdaný kód.
Je silne odporúčané:
- Písať si vlastné komentáre k napísanému kódu.
- Doplniť si programátorskú slovnú zásobu čítaním dokumentácie a rozhovormi s kolegami.