Semestrální práce
Zadání semestrální práce si student může vyzvednout kdykoli
v průběhu semestru vybráním jednoho ze tří níže uvedených zadání – o vybrané
semestrální práci nemusíte vyučujícího informovat. Práci je třeba
odevzdat nejpozději v neděli 4. 1. 2026 ve 23:59:59 – uploadem na
server. Za práci odevzdanou po tomto datu získá její autor pouze 50 % bodů oproti
odevzdání téže práce včas. To platí do neděle 11. 1. 2026, opět do 23:59:59. Po tomto
mezním termínu již není možné práci odevzdat, resp. její případné odevzdání
již nezakládá nárok na zápočet.
Pokud odevzdaná práce nesplňuje požadavky zadání, může vyučující nařídit její
přepracování. O případném přepracování však vždy rozhoduje vyučující –
nespoléhejte tedy na to, že odevzdáte včas pouze polotovar, a když za něj obdržíte
málo bodů, přinesete vylepšenou verzi (to nebude fungovat – vyučující v takovém
případě práci odmítne).
Pokud student nemůže ze závažných (např. rodinných nebo zdravotních) důvodů
práci včas odevzdat, měl by o této skutečnosti co nejdříve informovat vyučujícího
(e-mailem, telefonicky, zanecháním vzkazu na sekretariátu katedry, apod.), který
následně stanoví odklad odevzdání nebo navrhne náhradní postup. Pokud však student
vyučujícího o důvodech prodlení neinformoval (ačkoli mohl), nemůže být k důvodům přihlédnuto.
Zadání semestrální práce na ZS 2025/2026
Vyberte si, prosím, z níže uvedených témat to, které vás zajímá nebo se vám nejvíce
zamlouvá. Úlohy jsou rámcově stejně složité a přibližně stejně časově náročné.
-
Assembler procesoru architektury MISC
Podrobné zadání úlohy č. 1 – dokument PDF – 641 KB
Testovací kód – zazipovaný kód v assembleru a binární kód v KMX – 2 KB
Emulátor K's Machine – archiv ZIP se spustitelnými soubory pro 64-bitové OS Win/Linux/MacOS – 210 KB
-
Interpret podmnožiny jazyka Lisp
Podrobné zadání úlohy č. 2 – dokument PDF – 489 KB
-
Celočíselná kalkulačka s neomezenou přesností
Podrobné zadání úlohy č. 3 – dokument PDF – 350 KB
V záhlaví každého zadání semestrální práce je vpravo uvedena zkratka označující vyučujícího,
který toto zadání připravil (zkratka je stejná jako v seznamu výsledků a rozvrhu předmětu).
Najdete-li v zadání nějaké nejasnosti nebo budete-li se chtít zeptat na nějaké detaily,
kontaktujte, prosím, právě tohoto vyučujícího.
Individuální zadání semestrální práce je možné v případě, že student pracuje na
nějakém vlastním zajímavém projektu, který může (nebo jeho část) vypracovat v jazyce
C. Je třeba, aby vyučující schválil, že má vaše vlastní zadání odpovídající
rozsah a náročnost (jde zejména o to, aby kód obsahoval některé specifické konstrukce
jazyka C, např. pointery, dynamické alokace paměti atp.). V případě, že chcete pracovat na individuálním zadání, kontaktujte vyučujícího a dohodněte si podrobnosti. Semestrálka
z jiného předmětu (zejména např. z KIV/UPS) není individuálním zadáním.
Odevzdání semestrální práce
Upozornění: Po kliknutí na níže uvedený odkaz budete z bezpečnostních důvodů
přesměrováni na stránku jednotného přihlašování (SSO) do portálu ZČU. Budete vyzváni
k zadání svého uživatelského jména a hesla. Jde o stejné jméno a heslo, jakým se
přihlašujete ve veřejných učebnách či k serveru eryx.zcu.cz.
Elektronické
odevzdání práce
Počet pokusů odevzdání práce není nijak omezen. Uvědomte si ale, že čím více
se bude blížit mezní termín odevzdání, tím více lidí se bude pokoušet práci odevzdat
a zatížení validačního serveru se nutně podstatně zvýší, takže validace může trvat
i několik minut (nebo se také nemusí provést vůbec, bude-li server extrémně přetížen).
Nenechávejte proto odevzdání na poslední chvíli.
Obecné pokyny k semestrální práci
Semestrální práce se skládá ze dvou částí: (i) samotné aplikace se zdrojovými
kódy a (ii) dokumentace. Obě tyto části musí být v odevzdaném archivu typu ZIP:
Archiv může obsahovat adresáře, ale Makefile musí být v kořenovém adresáři archivu
– tzn. že když např. vypíšeme obsah archivu, musí být "vidět hned", nesmí být
uvnitř jakéhokoliv adresáře, který je v archivu uložen. Totéž platí pro soubor PDF
s dokumentací (kvůli automatické kontrole). Pokud si nejste organizací archivu
jisti, podívejte se, jak je to udělané u vzorové semestrální práce.
Do odevzdávaného archivu, prosím, nepřibalujte testovací data – validační
systém používá vlastní sadu testovacích dat pro každou úlohu. Ta, která případně
odevzdáte v archivu spolu s programem, se stejně nepoužijou, takže se tím jen plýtvá
místem na disku serveru.
Obecné pokyny k aplikaci
Programové vybavení (aplikaci), které řeší zadanou úlohu, vytvořte v jazyce ANSI C
nebo C99 (nestanovil-li vyučující jinak) a zajistěte, aby bylo možné je přeložit pomocí běžných
překladačů (určitě aspoň gcc a Microsoft
Visual C/C++), které byly zmíněny v první přednášce. Aplikace by měla být
přenositelná (multiplatformní) – tj. přeložitelná a spustitelná jak
v prostředí Win32/64, tak UNIX/Linux (či Mac OS X).
Součástí odevzdaného ZIP archivu musí být Makefile a všechny zdrojové a jiné
potřebné soubory – nepůjde-li práce přeložit voláním nástroje
make v kořenovém adresáři projektu, nebude přijata
k hodnocení.
V první fázi odevzdání, poté co provedete upload vaší práce na server, se práce
automaticky kontroluje shellovým skriptem, který ověří, že archiv lze rozbalit a
že obsahuje vše potřebné. Poté zavolá program make. Pokud
překlad skončí chybou, zobrazí se vám protokol s chybovým hlášením a práce bude
odmítnuta. Pokud se překlad podaří, provede se kontrolní běh programu na testovacích
datech a jeho výsledek se porovná s ověřeným výsledkem. Pokud bude vše v pořádku,
budete informováni o úspěšném přijetí práce. Aby to tak bylo, je ovšem nezbytně
nutné dodržet všechny pokyny v zadání – zejména formáty souborů a parametrů
na příkazové řádce. Pročtěte si důkladně podrobné zadání!
Uvolňujte veškerou alokovanou paměť. Pomocí vlastních funkcí pro správu paměti
se přesvědčte, že jste uvolnili všechnu alokovanou paměť (alespoň počítáním alokovaných
a uvolněných bloků). Přítomnost těchto funkcí s alespoň minimálním kontrolním mechanismem
se také hodnotí. Prvotní ověření korektní práce s pamětí zajišťuje program
splint již v kontrolním skriptu při uploadu. Detailní analýza
práce s pamětí se provádí také automaticky nástrojem valgrind
– tímto užitečným programem byste měli svojí práci určitě zkontrolovat před odevzdáním.
Neprojde-li bez chyby testem valgrindem, nemá smysl pokoušet se
jí odevzdávat.
Používejte dostatek komentářů: Není třeba komentovat samozřejmé úseky kódu.
Je-li ve zdrojovém kódu funkce printf(), je vyučujícímu jasné,
že se píše do konzole. Naopak komentujte zdrojový kód tam, kde jste se uchýlili ke
zkratkovitému zápisu, kde jste použili méně obvyklou konstrukci, případně tam, kde je
v kódu konstrukce, která se nemá používat (nekonečná smyčka, goto,
atp.). Hlavičky funkcí a definice konstant a struktur je nutné aspoň minimálně
okomentovat pomocí tzv. dokumentačních komentářů (viz např.
Doxygen).
Snažte s psát zdrojový kód co nejčitelněji. Odsazujte bloky (o tabulátor nebo
2 mezery vpravo). Aritmetické výrazy pište bezpečným, řídkým způsobem (operátor je
obklopen mezerami). Úvodní příkaz a uzavírací závorka bloku (složeného příkazu) musí
být pod sebou. Kvalita a čitelnost zdrojového kódu a dodržování kultury zápisu jazyka C
je významnou součástí hodnocení. Prostudujte si vzorovou semestrální
práci, kde je tento tzv. coding style, tj. jednotný a systematický způsob
zápisu zdrojového kódu, velmi pečlivě dodržován.
Obecné pokyny k dokumentaci
Dokumentace semestrální práce z předmětu PC se odevzdává pouze elektronicky
– jako soubor ve formátu PostScript nebo Portable Document Format
(PDF), který je součástí ZIP archivu nahraného na server.
S ohledem na katastrofální obsahovou, jazykovou i estetickou úroveň celé řady
studentských prací odevzdaných v posledních letech jsme se po zralé úvaze
rozhodli přistoupit k nepopulárnímu – poněkud diktátorskému – kroku a
stanovit, že dokumentace semestrální práce musí být vytvořena v sázecím systému
LaTeX, aby aspoň
základní estetická úroveň dokumentu byla zaručena.
Dokumentace může být napsána v českém nebo v anglickém jazyce a by měla mít
rozsah alespoň 8 až 10 stránek A4 původního textu (sázeného písmem velikosti
nejvýše 12 pt) a musí obsahovat tyto oddíly (kapitoly):
- Zadání – opsané (možno zestručnit s odkazem na původní dokument
zadání) znění vybraného zadání od vyučujícího nebo formulace vlastního problému,
který si student vymyslel po konzultaci s vyučujícím sám.
- Analýza úlohy – podrobný rozbor problémů, které daná úloha přináší,
nástin jejich řešení (různými postupy), posouzení vhodnosti a zvládnutelnosti
nastíněných řešení a odůvodněná volba některého z nastíněných řešení. Zde je velmi
žádoucí ilustrovat výklad vhodnými obrázky, grafy, apod. Za analýzu nelze považovat
popis naprogramovaného řešení (viz dále)!
- Popis implementace – nebo také tzv. programátorská dokumentace.
Popis implementace řešení, které bylo vybráno ve fázi analýzy jako vhodné k
implementaci. Popis použitých významných datových struktur, použitých algoritmů
(pokud to nejsou standardní algoritmy – např. Bubble Sort není třeba popisovat).
Popis jednotlivých modulů programu a mechanismu jejich součinnosti (např. sdílení
datových struktur, apod.). Popis případného řešení pro zajištení přenositelnosti
mezi platformami (např. podmíněné připojení knihoven pro dané platformy, apod.).
Podle této programátorské dokumentace by měl být jiný programátor schopen vaše
dílo např. upravit nebo doplnit o nové funkce.
- Uživatelská příručka – Důkladný popis programu pro jeho uživatele.
Postup přeložení a sestavení programu na různých platformách (pokud se liší),
popis ovládání všech funkcí programu a popis formátu datových souborů (pokud jsou
a pokud jejich formát není zřejmý). Ukázky běhu programu pro různá vstupní data.
Měla by být doplněna screenshoty nebo jinými vhodnými obrázky.
- Závěr – shrnutí dosažených výsledků (např. časů běhu), zhodnocení
splnění zadání, naznačení možných a žádoucích vylepšení, stručné shrnutí problémů,
které se v semestrální práci vyskytly.
Stanoveným nástrojem na přípravu a úpravu dokumentu je LaTeX – vypracování
dokumentace k semestrální práci může tedy být vhodnou příležitostí se tento vynikající
nástroj naučit používat. Při psaní bakalářské či diplomové práce jeho přednosti v plné
míře oceníte. K rychlému a snadnému uvedení do problematiky psaní dokumentace v LaTeXu
můžete použít materiály v sekci LaTeX.
Estetická kvalita dokumentu je také součástí hodnocení – nemělo by tedy chybět
číslování stránek, vhodné použití fontů, zarovnávání (to vše za vás udělá LaTeX, pokud
mu v tom výslovně nezabráníte), znak univerzity na titulní stránce, kvalitní –
nejlépe vektorové – obrázky, atd. Technický dokument bez obrázků či schémat
je podezřelý!
Za dokumentaci lze získat až 20 bodů z celkového počtu 70 za semestrální práci.
Věnujte tedy přípravě dokumentace také odpovídající pozornost! Ztráta bodů za dokumentaci
může vést i ke snížení výsledné známky.
Při přípravě dokumentace se mohou hodit informace uvedené v prezentaci
Jak psát (a nepsat) technickou dokumentaci,
která je každoročně promítána studentům prvního ročníku v rámci předmětu Úvod do
studia informatiky.
Hodnocení semestrální práce
Pokud práce projde automatickou kontrolou při uploadu na server (tou se zjistí,
zda práce obsahuje všechny potřebné soubory, lze bez chyby přeložit a spustit, dodržuje
stanovený formát vstupních/výstupních dat, atp.), pokračuje v jejím hodnocení vyučující.
Každá práce, která projde automatickou kontrolou, má na počátku hodnocení plný počet
bodů, tj. 70. Body se odečítají od maxima v případě nalezení chyb podle předem pevně
stanoveného chybovníku.
Vzorová semestrální práce
Vzorovou práci naprogramoval přednášející podle tohoto
zadání (jedná se o jedno ze zadání semestrální práce pro studenty z roku 2007).
Program byl napsán částečně v editoru Cream (for Vim) a částečně
ve vývojovém prostředí wxDev-C++ 6.10.2 a přeložen překladačem
gcc. Testován byl i překlad pomocí Microsoft
Visual C/C++. K dispozici je Makefile pro gcc (stejný
pro UNIX/Linux i Win32/64) a Makefile.win pro Microsoft
Visual C/C++. Zdrojový kód odpovídá normě ANSI C, a proto by měl jít přeložit libovolným
překladačem ANSI C na libovolné platformě. Formát vstupu a výstupu (soubory a přepínače)
je naprosto stejný na všech platformách.
Boole: vyhodnocování logických formulí – archiv ZIP – 24 KB
Algoritmické řešení úlohy, její dekompozice, zvolené techniky i zápis zdrojového kódu
odpovídají představám vyučujícího o kvalitní práci – takhle nějak by mělo vypadat
i vaše dílo.
Pokud si chcete prohlédnout rozkladový strom analyzované formule, potřebujete ještě
program GraphViz. Generování
stromu bylo naprogramováno nad rámec zadání zejména proto, aby bylo vidět, jakým způsobem
probíhá syntaktická analýza formule technikou rekurzivního sestupu.