Semestrální práce

Tento úkol se odevzdává do BRUTE a budeme ho bodovat manuálně.

Přehled studentů a vybraných témat

Pro náhled do tabulky vybraných témat je nutné použít účet FEL (xxxxxxxx@fel.cvut.cz). Soukromý Gmail účet není akceptován!

Zadání

Zadání je stanoveno na základě domluvy studenta s cvičícím. Součástí zadání jsou i stručné požadavky na funkcionalitu programu.

Zadání je nutné domluvit s cvičícím co nejdřív, nejpozději do konce sedmého výukového týdne semestru. V případě odevzdání neschválené práce nemusí být tato akceptována, případně může být ohodnocena pouze minimem bodů.

Pro semestrální práci si lze vybrat jednu ze dvou možností:

Odevzdání, termín a hodnocení

Semestrální práce se odevzdává přes BRUTE a email cvičícímu. Program a dokumentace, které odevzdáváte, by měly být všechny v BRUTE, email pak slouží k notifikaci učitele, že jste připraveni semestrálku odevzdat. Doporučujeme semestrální práci průběžně ukládat na fakultní GitLab, do emailu pak přidejte i odkaz na něj včetně verze (commit hash nebo tag) semestrálky, kterou odevzdáváte. Předpokládá se, že s prací odevzdáte také testovací vstupy. Vzhledem k jejich velikosti je předpoklad je ponechat na GitLabu a do BRUTE odevzdat pouze zdrojový kód a dokumentaci.

Termín odevzdání je konec výukového období, tj. neděle 11. ledna 2026. Odevzdání je možné i později, ale již bude aplikována penalizace ve výšce poloviny bodů z možného bodového zisku.

Semestrální práce musí být odevzdána minimálně týden před termínem zkoušky, kterého se budete chtít účastnit.
Pokud máte zájem o předtermín, je nutné semestrální práci odevzdat do 14. prosince 2025. Nezapomeňte o svém záměru informovat cvičícího.

Za semestrální práci je možné získat až 20 bodů. Požadované minimum k zápočtu je 10 bodů.

Obecné požadavky na semestrální práci

Semestrální práce se skládá ze dvou částí - programu a dokumentace. Obe části jsou hodnoceny stejným počtem 10 bodů (dohromady 20 bodů).

Program (10 bodů) musí zahrnovat následující položky:

  • minimálně 3 soubory se zdrojovými kódy:
    • main.cpp - pro celkové řízení výpočtu
    • dvojice souborů *.cpp, *.hpp obsahující alespoň jednu třídu, která zabezpečuje výpočet
    • preferováno je využití většího počtu tříd
  • CMakeLists.txt, dle kterého se dá semestrálka postavit (zkompilovat)
  • vzorová vstupní data

Komunikace s programem probíhá zásadně přes terminál. Pro výpisy lze využít základní sadu znaků ASCII a případně základní barvy.

Semestrální práce prezentuje vaše znalosti a dovednosti, které jste získali v průběhu semestru. Proto lze využívat pouze takové externí knihovny, které jsou v rámci semestru probírány - viz následující seznam. Využít lze také odpovídající knihovny jazyka C (místo <cstdio> odpovídající knihovnu stdio.h apod.). Pokud budete vytvářet jednotkové testy, můžete použít knihovnu “catch.hpp”.

<algorithm>           <array>               <atomic>              <chrono>
<condition_variable>  <climits>             <cmath>               <csignal>
<cstdarg>             <cstddef>             <cstdio>              <cstdlib>
<cstring>             <ctime>               <deque>               <exception>
<forward_list>        <fstream>             <functional>          <future>
<iomanip>             <iostream>            <iterator>            <list>
<map>                 <memory>              <mutex>               <queue>
<random>              <set>                 <stdexcept>           <string>
<sstream>             <thread>              <tuple>               <type_info>
<utility>             <vector>          

Semestrální práce, která bude obsahovat jiné než povolené knihovny nebude akceptována a je automaticky hodnocena 0 body.

Dokumentace (10 bodů) k semestrální práci má pevně danou strukturu:

  • popis řešených algoritmů,
  • popis postupu řešení práce včetně implementovaných tříd a popisu jednotlivých metod,
  • popis postupu kompilace programu a jeho spuštění,
  • popis přepínačů (argumentů), které program dokáže zpracovat, implementace přepínače --help je povinná
  • popis ovládání aplikace,
  • testování programu - alespoň 7 testovacích vstupů nebo generátor vstupů (generuje více než 7 vstupů), pro hry musí být uvedeny herní strategie pro výhru, prohru, remízu apod.,
  • při implementaci algoritmů jejich srovnání - minimálně na dodaných vstupech.

Povolené formáty pro dokumentaci k semestrálce jsou: textový dokument (formát TXT), Markdown (README.md) nebo rozumné PDF.

Dokumentaci ponechte kvůli přehlednosti v základním adresáři vedle souboru main.cpp.

Poznámky k dokumentaci:

  • Pokud píšete komentáře do programu, bude to kladně hodnoceno. Základní popis tříd a metod musí přesto být i součástí dokumentace. Komentáře v programu nestačí!!!
  • Program je nutné doplnit o nápovědu. Základní způsob ovládání programu je důležité sepsat také v dokumentaci a případně ilustrovat kopiemi obrazovky, pro lepší srozumitelnost.
  • Testování přikládáme velkou váhu, a proto vyžadujeme popis, jak byl program testován, na jakých vstupech, jak jste se přesvědčili, že správně funguje. To lze doložit vstupy pro testování a očekávanými výstupy. Doporučujeme provádět jednoduché testy, zaměřené na detaily a jednotlivosti fungování programu.
  • Testování lze provést také způsobem, jakým jsou prováděny testy domácích úkolů. Tento způsob testování programu je vítaný a bude jistě kladně hodnocen.
courses/b6b36pcc/ukoly/sem_prace.txt · Last modified: 2025/09/24 19:46 by nagyoing