[english]
Ročníkový projekt
Studijní informace
-
NPRG045 Ročníkový projekt
- Garant: Filip Zavoral
- Studijní plány
- Upozornění: Předmět je určen pro studenty 2. ročníku a začíná v letním semestru
- Možnost zápisu v zimním semestru je zejména pro ty, kteří během předchozího letního semestru nesplnili předepsané podmínky
- Studenti 2. ročníku si tedy předmět v zimním semestru nezapisují
- Některá z nabízených témat (i pro BP, nejde o vyčerpávající seznam):
KSI
KDSS
KSVI
KTIML
UFAL
KAM & IUUK
Průběh semestru
- Cílem předmětu je vypracování rozsáhlejšího softwarového díla v libovolném běžném programovacím jazyce.
- Úvodní přednášky (předpokládaný harmonogram) v letním semestru:
- 1. týden - úvodní přednáška pro všechny studenty - pravidla, požadavky, doporučení, termíny [Zavoral]
- 2. týden - prezentace kateder - možná témata RP [Ježek]
- 3. týden - představení témat partnerských firem [Ježek] + pokyny a rady pro výběr a vypracování bakalářské práce, vazba RP a BP [Mareš, Brom]
- 4. týden - doporučení pro vypracování bakalářské práce (zejména pro 3. ročníky, ale perspektivně užitečné i pro 2. ročníky) [Mareš, Brom]
- 5. týden - role v komerčním vývoji software, možnosti kariérního rozvoje [Zavoral, ext]
- 7.(!) týden - vývojové nástroje nejen pro ročníkový projekt [Parízek, Škoda] - vhodné pro studenty, kteří neabsolvovali NSWI154 - Nástroje pro vývoj software
- Předmět probíhá formou samostatné práce s průběžnými konzultacemi s vedoucím.
- Domluva s vedoucím a přiřazení - seznam vedoucích s možnými nabídkami témat je zveřejněn v SISu.
- Vedoucí může omezit množinu možných projektů (např. pouze projekty s umělou inteligencí ... nebo bez) anebo použitých jazyků nebo cílových platforem (např. pouze C++ pro Unix/Linux). Toto omezení je uvedeno v poli Poznámka k rozvrhu. Vedoucí může nabídnout vlastní návrhy projektů.
- Skupiny mají nastavenou kapacitu na 0, vlastní přiřazení provede po domluvě se studentem vedoucí.
- Rozmyslete si, co a jak byste chtěli dělat a kontaktujte příslušného vedoucího. Ten vás pak případně po vzájemné domluvě přiřadí do své skupiny.
- Na ročníkový projekt typicky plynule navazuje bakalářský projekt (dle dohody s vedoucím už při předběžné domluvě tématu - je třeba zohlednit). Předpokládá se, že vedoucí RP bude i vedoucím BP.
- Pro teoreticky zaměřené studenty je zavedena možnost absolvovat samostatný projekt v rámci NPRG045 a dále pokračovat teoreticky zaměřenou bakalářskou prací s rozsáhlejší rešerší.
Termíny
- Student si musí zapsat předmět nejpozději do standardního termínu zápisu
- Pro cvičení si zapíše 'sběrnou' paralelku bez vedoucího
- Vedoucího projektu si student může v rámci nabízených možností zvolit (příp. změnit) až do 28.3.
- Po domluvě s vedoucím požádejte vedoucího, aby vás přiřadil do své skupiny
- Přiřazení k vedoucímu včas zkontrolujte! Pokud nebudete do 28.3. k vedoucímu přiřazeni, po tomto datu už to nebude moci udělat ani vedoucí ani garant předmětu a vedoucí vám nebude schopen zapsat zápočet!
- Další konkrétní termíny určuje vedoucí dle svých možností a vlastností projektu, toto jsou běžné termíny:
- Konec března - zadání (předběžně dohodnutého tématu)
- Cca duben - podrobná specifikace
- Do konce semestru - rozpracovaná verze s předem domluvenou funkčností a stupněm dokončení
- Rozsah podrobné specifikace, obsah rozpracované verze a stupeň rozpracovanosti je nutné domluvit předem během zadávání a specifikace projektu.
Obsah projektu
- V zásadě jakýkoliv týkající se návrhu a vývoje softwarového díla.
Téma by mělo být pokud možno zajímavé a netriviální, rozhodně ne implementace už 100x implementovaného, s alespoň částečně vlastní myšlenkou (určitě v případě, že bude projekt rozšířen na bakalářskou práci).
- Jak Ročníkový projekt nelze mít přavážně teoretická témata jako rešerše, návrh algoritmů, formální důkazy apod.
- Jazyk: v zásadě libovolný, preferovány jsou mainstreamové jazyky: C++, Java, C#. Další jazyky (Python, Ruby, Kotlin, Go, Scala, ...) je vhodné nejprve konzultovat s vedoucím. Webové, mobilní nebo cloudové aplikace jsou možné.
- Operační systém: v zásadě libovolný, preferovány běžné systémy Linuxové i Windowsové třídy, mobilní platformy a platformově nezávislé projekty. U netradičních operačních systémů a platforem je povinnost studenta zajistit dostupnost platformy pro vedoucího.
Vývoj - GitLab
- Pro vlastní vývoj projektu je nutné průběžně používat repository / verzovací nástroj. Primárně by měl být používán MFF GitLab, po dohodě s vedoucím lze použít např. veřejný GitHub/GitLab.
- Vedoucí pro vás vytvoří repository v sekci určené pro ročníkové projekty.
- Záznam commitů bude použit pro hodnocení práce studenta, je proto nutné zdrojové a další relevantní soubory commitovat na denní bázi.
- Nahrání pouze výsledné verze projektu je nepřípustné a implikovalo by neudělení zápočtu.
- URL repository musí být uvedena u záznamu studenta v SISu (Záznamník učitele / Evidence studijních povinností).
- Repository musí obsahovat i veškerou dokumentaci včetně schválené specifikace.
Upřesnění součástí projektu
- Zadání - krátký popis dohodnutého programu:
- Název, cca 5-15 řádků popisu tématu, OS, jazyk, knihovny nebo jiné externí komponenty, vývojové prostředí, ...
- Podrobná specifikace - detailní popis problematiky, podle něhož by jiný programátor napsal "tentýž" program:
- Stručná analýza existujících programů, popis všech podstatných zamýšlených funkcí a vlastností programu + zdůraznit čím se bude lišit od existujících (v čem bude lepší, co bude mít jiného, apod.)
- Popis hlavních funkcí
- Návrh struktury programu (moduly, knihovny, příp. framework, vzájemná provázanost)
- OS, jazyk, vývojové prostředí, další využívané zdroje
- Rozpracovaná verze (pro zápočet - viz Zápočty a kredity)
- dostatečně velká uzavřená část aplikace, která v rámci specifikované/domluvené funkčnosti spolehlivě funguje.
- rozsah a funkčnost domluvit předem, nikoli pouze "naklikané" GUI apod.
- Finální verze
- Funkční stabilní softwarový produkt s použitelným uživatelským nebo aplikačním rozhraním.
- Instalační postup obsahujcí vše potřebné pro instalaci a spuštění (knihovny, konfigurace, data, ...) na všech podporovaných platformách.
- Testovací data - v případě, že projekt pro demonstraci své funkčnosti potřebuje nějaká data, musí být tato přiložena tak, aby bylo možné demostrovat plnou funkčnost řešení.
- Dokumentace
Standardní požadavky na dokumentaci
- Instalační příručka = popis instalace, konfigurace a spouštění programu
- Uživatelská příručka = popis ovládání programu (co a jak lze s programem dělat), popis rozhraní
- Vývojová dokumentace = postup překladu a sestavení programu, popis implementace (co, v čem, jak), popis netriviálních algoritmů a datových struktur
- Za vývojovou dokumentaci není považován text automaticky vygenerovaný za zdrojových kódů (Doxygen apod.)
- V dokumentaci musí být zejména to, co ve zdrojových kódech není.
Hodnocení
- Program: celková kvalita díla, stabilita programu, uživatelská přívětivost, kultura zdrojových kódů, rozšiřitelnost, komentáře
- Dokumentace: srozumitelnost, přehlednost, úplnost, kvalita provedení
Zápočty a kredity
- RP a navazující BP se stejným vedoucím
- Zápočet za NPRG045 [4 kr] udělí vedoucí RP po splnění domluvených podmínek (podrobná specifikace, implementace podstatných částí, ...), ašak až poté, co se student přihlásí k jím vypsané navazující BP
- Za kompletně dokončený RP (včetně kompletní dokumentace) dostane student zápočet za NSZZ031 [6 kr]
- Nejběžnější případ
- RP s nenavazující BP
- Za kompletně dokončený RP dostane student zápočet za NPRG045 [4 kr]
- Zápočet za nenavazující NSZZ031 [6 kr] udělí vedoucí BP
- Určeno pro teoreticky zaměřené BP (typicky s rozsáhlejší rešerší) nebo pro případy, kdy během práce na RP se student rozhodne v projektu nepokračovat a zapsat si nesouvisející BP
Zapisování předmětu pro studenty 3. ročníku
- Předmět zapsán letos v zimním semestru (bez ohledu na to, jestli jde o první nebo druhý zápis předmětu) - už se nezapisujte, osobně se domluvte s vedoucím (pokud jste tak už neučinili)
- Předmět zapsán vloni, letos ještě nezapsán - po domluvě s vedoucím se nechte standardně zapsat k vedoucímu, zápočet za předmět musíte získat nejpozději do konce letošního letního semestru
- Předmět doposud nezapsán - standardní postup
- I při zápisu do zimního semestru se přihlašte nejdříve do sběrné skupiny pro nepřiřazené a domluvte se s vaším vedoucím, aby vás přiřadil do své skupiny. Toto musíte stihnout do konce termínu pro zápis předmětů.
Zapisování předmětu pro studenty bez splněné prerekvizity
- Pokud nemáte splněnou prerekvizitu, typicky Programování 2, na předmět se nezapisujte
- Racionální důvod: během LS budete dodělávat zápočtové programy z Prog 2 a dále z Programování v XXX, takže byste stejně na intenzivní práci na RP neměli dostatečnou kapacitu
- RP si můžete zapsat v ZS
- Nic vám ale nebrání se neformálně předběžně domluvit s nějakým vedoucím a začít o vašem RP přemýšlet
- Promíjení prerekvizit není administrativně triviální proces a měl by být maximálně minimalizován