Pravidla KSP-Z

KSP-Z je začátečnickou kategorií Korespondenčního Semináře z Programování spočívající v řešení jednodušších algoritmizačních a programovacích úloh. Jedná se sice o soutěž, jejím hlavním posláním je však naučit řešitele algoritmizaci a programování. Od této myšlenky se odvíjí většina pravidel.

Obecná pravidla a průběh ročníku KSP-Z

  • KSP-Z je určené pro základoškoláky a středoškoláky bez ohledu na ročník. Pro jiné zájemce o řešení jsou úlohy v KSP-Z také otevřené, detaily jsou sepsané na konci pravidel v sekci Účast pro nestředoškoláky.
  • Ročník KSP-Z začíná a končí se školním rokem a skládá se z pěti sérií úloh, z nichž každá je tvořena třemi praktickými a jednou teoretickou úlohou.
  • Řešení úloh by měli řešitelé vymýšlet sami – tím se naučí výrazně více, než když řešení úloh od někoho opíší.
  • Pro každou sérii je stanoven nejzazší termín na odevzdávání úloh (typicky bývá v noci z neděle na pondělí), do kterého lze za úlohy získat plný počet bodů.
  • Po termínu odevzdání série organizátoři zveřejní slovní popis řešení všech úloh, ale ještě jeden týden po termínu lze řešit praktické úlohy za jednu třetinu bodů. Poté organizátoři zveřejní i zdrojové kódy autorských řešení praktických úloh a odevzdávání dané série je tím uzavřeno.
  • Po termínu odevzdání série organizátoři opraví a obodují odevzdaná řešení teoretické úlohy a zašlou okomentovaná řešení zpět řešitelům (aby se řešitelé mohli ze svých případných chyb poučit).

Úlohy a bodování

  • Úlohy jsou v zadání uspořádány podle obtížnosti od nejjednodušší po nejtěžší a jsou podle své obtížnosti také obodovány.
  • Body za jednotlivé série se sčítají do výsledkové listiny za celý ročník KSP-Z, za každou sérii lze získat až 44 bodů, celkem tedy až 220 bodů za ročník.
  • Všechny úlohy se odevzdávají elektronicky pomocí webového Odevzdávátka, na stejném místě pak řešitelé naleznou i opravená řešení.

Praktické (open-data) úlohy

  • Praktická úloha spočívá v napsání programu, který vyřeší daný úkol.
  • Program může být napsán v libovolném programovacím jazyku, řešitelé si ho spouští u sebe na svých počítačích.
  • Pro otestování slouží několik testovacích vstupů, které si řešitel vygeneruje v Odevzdávátku, svým programem spočítá pro každý vstup výstup a tyto výstupy odevzdá do webového systému.
    • Na vyřešení vstupu je omezený čas, po jeho vypršení je nutné si vygenerovat nový vstup (počet vygenerování nového vstupu je neomezený).
    • Odevzdávátko výstup okamžitě vyhodnotí a zobrazí výsledek.
    • Při neúspěchu lze celý postup opakovat.
  • Vstupních souborů je typicky několik, liší se náročností na zpracování.
    • Za každý správně vyřešený vstupní soubor lze získat nějaký počet bodů (podle jeho obtížnosti), k získání všech bodů za úlohu je potřeba správně vyřešit všechny vstupní soubory.
    • I pomalejší počítač by měl zvládnout vyřešit nejnáročnější vstupní soubor s dostatečnou časovou rezervou – pokud program nestíhá doběhnout, je pravděpodobně nutné zlepšit algoritmus, výměna počítače za rychlejší typicky nepomůže.

Teoretické úlohy

  • Úkolem řešitelů je zpravidla vymyslet co nejlepší algoritmus, který úlohu vyřeší.
  • Řešitelé vymyšlený algoritmus neprogramují, ale sepíší jeho slovní popis a odevzdají ho přes webové rozhraní (například jako soubor ve formátu PDF). Zdrojový kód mohou řešitelé přiložit, ale nemůže nahradit slovní popis řešení (a ideálně by to neměl být screenshot editoru, ale vložený zdrojový kód).
  • Slovní popis řešení přijímají organizátoři v češtině, slovenštině nebo angličtině.
  • Správné řešení by mělo obsahovat hlavně srozumitelný popis myšlenky algoritmu a pokud to není jasné, tak i zdůvodnění jeho správnosti. Bývá dobré také odhadnout časovou složitost algoritmu (kolik kroků musí algoritmus vykonat pro vstup o velikosti N).
    Jak by mělo řešení vypadat ukazují buď vzorová řešení KSP-Z nebo ukázková úloha MO-P (v KSP-Z postačuje i řešení bez formálního důkazu, typicky stačí jeho náznak).
  • Organizátoři obodují úlohy zejména podle efektivity popsaného řešení, a přehlednosti jeho popisu.

Účast pro nestředoškoláky

  • Zájemci o řešení KSP-Z, kteří již nestudují na střední ani základní škole, jsou také vítáni, nevyplňují ale přihlášku do ročníku a nebudou zobrazeni ve výsledkové listině.
  • Tito zájemci mohou řešit libovolně praktické úlohy, které jsou dostupné skrz Cvičiště.
    • Ve Cvičišti jsou dostupné všechny praktické úlohy ze všech ročníků KSP-H a KSP-Z (včetně aktuálních sérií).
    • Pro přístup ke Cvičišti postačuje registrace na webu, není potřeba vyplňovat žádnou přihlášku.
  • Na opravování teoretických úloh nestředoškoláků bohužel nemají organizátoři kapacitu (je ale možné si s organizátory individuálně dojednat výjimku).

Použití úloh KSP-Z ve výuce

  • Použití starších úloh KSP-Z při výuce informatiky plně podporujeme, vzdělávání je hlavním cílem KSP.
  • Pokud se ale studenti dozví řešení aktuálních úloh během vyučování, nesmí danou úlohu odevzdat (nebylo by to fair-play vůči těm, kteří vymysleli sami).
  • Je možné řešení úloh KSP-Z ocenit bonusově, ale nemělo by být bráno jako primární hodnocení studenta.