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

  1. Prednáška 1: Syntax a údajové typy, Cvičenie 1 - pracovné prostredie a prvá úloha
  2. Prednáška 2: Funkcionálne programovanie, Cvičenie 2
  3. Prednáška 3: Pracovná cesta, Cvičenie: Aktivita 1
  4. Prednáška 4: Objektovo orientované programovanie, Cvičenie 4
  5. Prednáška 5: Zložitosť algoritmov, Písomka
  6. Prednáška 6: Kolekcie - Hešovacie tabuľky, Cvičenie 5, Obhajoba
  7. Prednáška 7: Kolekcie - Stromy, Cvičenie 6
  8. Prednáška 8: Kompresia - Huffmanov strom, Cvičenie 7, NLP Meeting
  9. Prednáška 9: Kompresia - Slovníkové algoritmy, Cvičenie 8, 17. november.
  10. Prednáška 10: Dynamické programovanie, Písomka
  11. Prednáška 11: Paralelné programovanie, Cvičenie 9 (ku skúške), Obhajoba
  12. Prednáška 12: Asynchrónne programovanie, Cvičenie 10 (ku skúške), Opravné písomky
  13. Prednáška 13: Predtermín, Cvičenie: Zápočty, Opravné písomky
  14. 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.

Sylaby