====== Závěrečný projekt ====== ==== Téma projektu ==== Téma závěrečného projektu si student vybírá sám. Projekt musí být schválen do deadlinu uvedeného na hlavní stránce předmětu. Doporučujeme jednou z dvou následujících typů: * //Vlastní projekt//: Vyberte si svůj vlastní projekt a pracujte na něm. Projekt lze propojit s vaší bakalářskou nebo diplomovou prací. * //Kaggle projekt//: [[https://www.kaggle.com/|Kaggle]] je oblíbený web s veřejně dostupnými datasety a [[https://www.kaggle.com/competitions|soutěžemi]]. Vyberte si jednu soutěž a zúčastněte se jí. Ačkoli si můžete vybrat libovolnou soutěž, doporučujeme jednu z následujících: * [[https://www.kaggle.com/c/facial-keypoints-detection|Facial Keypoints Detection]] předpovídá pozice klíčových bodů na obrázcích obličeje o velikosti 96x96 pixelů. * [[https://www.kaggle.com/c/titanic|Titanic]] na základě osobních údajů předpovídá, zda cestující přežil potopení Titanicu. * [[https://www.kaggle.com/competitions/happy-whale-and-dolphin|HappyWhale]] je náročná velká datová sada k rozpoznání jednotlivých velryb a delfínů z obrázků. Pro Kaggle projekt doporučujeme první dvě datové sady. Neexistují žádná omezení, jak postupovat. Vyzkoušet můžete jak tradiční techniky, tak neuronové sítě. Pokud si nevíte rady, zkontrolujte vysoce hodnocená řešení. Poslední datová sada je určeny pro ty, kteří se chtějí poprat s výzvou. Vytvořte skupinu až tří studentů a ohromte nás svými dovednostmi. ==== Schválení projektu ==== Projekt musí být schválen po osobní diskuzi s vyučujícím (optimálně po skončení jakékoli hodiny nebo na poslední přednášce vyhrazené projektům). Rozmyslete si téma a krátký popis (do minuty) toho, co chcete dělat. Při diskuzi nám prosím sdělte váš Github účet. Po schválení tématu vás pozveme do [[https://github.com/B0B36JUL-FinalProjects-2023|Github organizace]], kde si vytvořte složku ''Projekt_{prijmeni}'', pripadne ''Projekt_{CVUT username}''. ==== Vypracování projektu ==== Struktura závěrečného projektu musí přibližně odpovídat struktuře [[https://juliateachingctu.github.io/Julia-for-Optimization-and-Learning/stable/lecture_07/develop/|ImageInspector]] z přednášky. Pro lepší orientaci jsme vytvořili [[https://github.com/JuliaTeachingCTU/ImageInspector.jl|ukázkový příspěvek]] pro tento balík. Projekt musí splňovat následující **strukturální požadavky**: * Projekt musí být verzován pomocí Gitu a nahrán na [[https://github.com/|Github]] nebo podobnou službu. * Root složka balíčku musí obsahovat ''LICENSE'', ''Project.toml'' a ''README.md'' se stručným popisem napsaným v [[https://www.markdownguide.org/getting-started/|Markdownu]]. Popis by měl ideálně v několika bodech specifikovat zadání a dále obsahovat užitečné informace o balíčku jako takovém (cíl, použití, obrázky, atd.). Zahrnutí ''.gitignore'' je doporučeno. * Složka ''examples'' by měla obsahovat skripty nebo notebooky s příklady pro spuštění balíčku. * Složka ''src'' by měla obsahovat veškerý zdrojový kód. Jednotlivé funkce by měly být seskupeny do souborů. * Složka ''tests'' by měla obsahovat jednotkové testy. Jednotkové testy by neměly používat externí data. * Lze přidat další složky. * Nejdůležitější funkce musí obsahovat alespoň krátkou dokumentaci. Pro **obsahové požadavky** nejsou striktní pokyny. Jediný požadavek je to, že obsah balíku musí být netriviální. Například pro Kaggle soutěže nestačí použít balíček ke zpracování dat a spuštění klasifikátoru. Projekt by měl snažit využít silných stránek Julie jako multiple dispatch, broadcasting nebo faktorizace kódu na jednoduché funkce. ==== Obhajoba projektu ==== Na obhajobu projektu se přihlašuje v KOSu. Obhajoba probíhá osobní konzultací s jedním z vyučujících. Student si může přinést vlastní notebook, případně bude obhajoba probíhat na fakultním počítači. Obhajoba bude probíhat následujícím zůsobem: * Krátké vysvětlení problému, jeho problematiky a důležitosti. * Ukázání základních výsledků. Je doporučeno prezentovat kombinaci pouštění funkcí a ukazování předpřipravených výsledků. * Ukázání a spuštění jednotkových testů. Tato část bude vždy probíhat na fakultním počítači, aby se ukázala přenositelnost. * Ukázání historie Git commitů. Projekt by neměl obsahovat pouze jeden commit. * Stručný popis struktury balíčku. * Ukázání vybrané funkce a popis jejího obsahu.