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 8.1.2012 ve 23: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 15.1.2012 opět do 23:59. Po tomto mezním termínu už práce nezíská žádný bod, avšak pokud chce její autor úspěšně absolvovat předmět, musí ji stejně dokončit a odevzdat – pak má nárok na známku "dobře", pokud vykoná zkoušku s maximálním možným bodovým ziskem.

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.

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 2011/2012

Vyberte si, prosím, z níže uvedených témat to, které vás zajímá nebo se vám nejvíce zamlouvá. Číslo v závorce za názvem tématu představuje relativní náročnost práce na stupnici od 1 do 5 (přičemž obtížnost algoritmického řešení je obvykle kompenzována časovou náročností, takže ve výsledku by měly být úlohy stejně složité).


  1. Generátor dokumentace zdrojového kódu
    [Uložit] Podrobné zadání úlohy č. 1 – dokument PDF – 74 KB
    [Uložit] Testovací soubory k úloze č. 1 – archiv ZIP – 1,44 KB

  2. Vizualizace grafu matematické funkce
    [Uložit] Podrobné zadání úlohy č. 2 – dokument PDF – 82 KB

  3. Aritmetická komprese a dekomprese dat
    [Uložit] Podrobné zadání úlohy č. 3 – dokument PDF – 55 KB

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. V případě, že chcete pracovat na individuálním zadání, kontaktujte vyučujícího a dohodněte si podrobnosti.

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) v systému Orion. Budete vyzváni k zadání svého uživatelského jména a hesla v systému Orion (tj. stejné, jakým se přihlašujete ve veřejných učebnách či k serveru eryx.zcu.cz).

[Přejít na] Elektronické odevzdání práce

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, stejně jako soubor PDF s dokumentací (kvůli automatické kontrole).

Obecné pokyny k aplikaci

Programové vybavení (aplikaci), které řeší zadanou úlohu, vytvořte v jazyce ANSI C (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řeložitelná a spustitelná jak v prostředí Win32, tak UNIX/Linux. 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, 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.

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 na obrazovku. 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í je nutné aspoň minimálně okomentovat.

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í 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 jazyka se významnou součástí hodnocení.

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í typografickou úroveň celé řady bakalářských a diplomových prací odevzdaných v posledních letech jsme se po zralé úvaze rozhodli přistoupit k nepopulárnímu kroku a stanovit, že dokumentace semestrální práce musí být vytvořena v typografickém systému TeX.

Dokumentace by měla mít rozsah přibližně 8 až 10 stránek A4 původního textu a musí obsahovat tyto oddíly (kapitoly):

  1. 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.
  2. Analýza úlohy – podrobný rozbor problémů, které daná úloha přináší, nástin jejich řešení, 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.
  3. 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.).
  4. 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ý). Měla by být doplněna screenshoty nebo jinými vhodnými obrázky.
  5. 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šní, stručné shrnutí problémů, které se v semestrální práci vyskytly.

Stanoveným nástrojem na přípravu a úpravu dokumentu je TeX – 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 TeXu 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á TeX, 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ž 25 bodů z celkového počtu 70 za semestrální práci.

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, ap.), 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++ 2008. K dispozici je Makefile pro gcc (stejný pro UNIX/Linux i Win32) a Makefile.win pro Microsoft Visual C/C++ 2008. Formát vstupu a výstupu (soubory a přepínače) je naprosto stejný na obou platformách.

[Uložit] 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.

Ukázky semestrálních prací z minulých let

[Uložit] CZConv: konvertor kódování české diakritiky – archiv ZIP – 19 KB
[Uložit] Multi-level Marketing – archiv ZIP – 37 KB
[Uložit] Seznamovací agentura – archiv ZIP – 17 KB
[Uložit] Záchytná stanice – archiv ZIP – 19 KB

V těchto starších pracích byly ještě použity knihovny funkcí pro přístup ke službám textového terminálu (okénka, barvy, atp.). "Okénkové" provedení uživatelského rozhraní se ale už nevyžaduje – právě naopak: Vaše aplikace musí být konzolová (viz jednotlivá podrobná zadání).

[Uložit] Borg Invasion – archiv ZIP – 25 MB

Hru Borg Invasion naprogramovali jako semestrální práci z přemětu PC v zimním semestru 2005/2006 studenti Jan Štefány a Jan Krejčíř. Jedná se o vynikající, mimořádně hodnotnou práci – hra má profesionální úroveň, byla naprogramována v prostředí Open Watcom C/C++ s využitím grafické knihovny OpenGL.