{{indexmenu_n>4}} ====== Domácí úkoly ====== ===== Harmonogram ===== Pro získání zápočtu je potřeba **úspěšně** odevzdat všechny povinné úlohy do **24.5.2024@23:59 CEST**! Domácí úkoly jsou zadány na přednášce, na které jsou představeny klíčové části nezbytné pro řešení úkolu. Dále je příslušná problematika řešena na následujících cvičení. Úlohu je možné (a doporučené) řešit v předstihu a seznámit se s tím co bude pro její řešení potřeba a využít cvičení na případné dotazy a pochopení principů. Nebojte se případně již nějak fungující program úplně přepsat tak, aby byl nejen funkční, ale také **správný**. Termíny odevzdání úloh jsou kromě bonusů v časové zóně AoE. Bonusové úlohy můžete vypracovat až do konce výukové části semestru do finálního termínu 24.05.2024@23:59 CEST. Součástí hodnocení domácích úkolů je hodnocení kódovacího stylu, které zahrnuje [[courses:b3b36prg:resources:codingstyle:start|čitelný kód]], ale zejména **správnost** a vhodnou **dekompozici** na jednodušší funkce. Cílem je implementovat nejen funkční programy, ale také programy, které jsou implementovány správně. Správný program je připraven na neočekávaný (netypický) vstup a ošetřuje tak výjimečné situace. Vhodná dekompozice na menší funkce umožňuje //izolovat// dílčí části a čitelně ošetřit všechny podstatné (chybové) stavy. ^ Číslo úkolu a název ^ Povinné zadání ^ Volitelné zadání ^ Bonusové zadání ^ [[#Bodová penalizace za nedodržení pravidel psaní čitelného kódu|Kontrola psaní čitelného kódu]] ^ [[#Bodová penalizace za pozdní odevzdání úlohy|Termín odevzdání]] ^ [[#Bodová penalizace za překročení maximálního počtu pokusů odevzdání řešení úlohy|Počet uploadů]] ^ | [[courses:b3b36prg:labs:lab01:start|HW 00 - Upload do BRUTE]] | 1b | - | - | - | so 02.03. | 100 | | [[courses:b3b36prg:hw:hw01|HW 01 - Kreslení (ASCII art)]] | 2b | - | - | ✔ | so 16.03. | 10 | | [[courses:b3b36prg:hw:hw02|HW 02 - Prvočíselný rozklad]] | 2b | - | 4b | ✔ | so 30.03. \\ Bonus 24.05. | 20 | | [[courses:b3b36prg:hw:hw03|HW 03 - Caesarova šifra]] | 2b | - | 2b | ✔ | so 06.04. \\ Bonus 24.05.| 20 | | [[courses:b3b36prg:hw:hw04|HW 04 - Hledání textu v souborech]] | 2b | 3b | - | - | so 13.04. | 20 | | [[courses:b3b36prg:hw:hw05|HW 05 - Maticové počty]] | 2b | 3b | 4b | ✔ | so 20.04. \\ Bonus 24.05. | 20 | | [[courses:b3b36prg:hw:hw06|HW 06 - Kruhová fronta v poli]] | 2b | 2b | - | - | so 27.04. | 20 | | [[courses:b3b36prg:hw:hw07|HW 07 - Fronta spojovým seznamem s řazením]] | 2b | 2b | - | - | čt 23.05. | 20 | ^ Celkem bodů za úlohy ^ 15b ^ 10b ^ 10b ^ ^ ^ /* | [[courses:b3b36prg:hw:hw08|HW 08 - Interaktivní aplikace s meziprocesovou komunikací]] | 3b | - | - | - | so 06.05 | 20 | | [[courses:b3b36prg:hw:hw08|HW 08 - Vícevláknová aplikace s meziprocesovou komunikací]] | 3b | - | - | - | so 13.05 | 20 | | [[courses:b3b36prg:hw:hw08|HW 08 (Nucleo) - LED a tlačítko]] | - | - | - | celková kontrola cvičícím | | bez omezení | | [[courses:b3b36prg:hw:hw09|HW 09 (Nucleo) - Jednobajtová komunikace]] | - | - | - | celková kontrola cvičícím | | bez omezení | | [[courses:b3b36prg:hw:hw10|HW 10 (Nucleo) - Interaktivní aplikace s komunikací s nadřazeným počítačem]] | - | - | - | celková kontrola cvičícím | | bez omezení |*/ Ke kódování se můžete inspirovat [[courses:b3b36prg:resources:coding|ukázkami atutoriály]] a ukázkami [[courses:b3b36prg:resources:hw_coding|kódování k domácím úkolům]]. Pro získání zápočtu je nutné odevzdat řešení všech domácích úkolů (kladně hodnoceny odevzdávacím systémem). Uvedené maximální počty body za úlohy platí pro včasné odevzdání úloh před uplynutím termínu a při maximálním počtu pokusů odevzdat funkční řešení. V případě překročení maximálního počtu se body snižují uměrně počtu dalších pokusů. Za pozdní odevzdání řešení úlohy jsou strhávány body úměrně době prodlení a to včetně záporných hodnot. ===== Pravidla ====== Toto jsou obecná pravidla uplatňovaná v mnoha předmětech, které používají tento CourseWare a UploadSystem. V případě nejasností se obraťte na svého cvičícího. - Kód či text (dále jen kód) každé domácí úlohy musí být vypracován samostatně. Je běžné v programátorské praxi, že autor pro větší efektivitu své práce cizí kód přejímá a/nebo přizpůsobuje. Niceméně, pro studijní účely je takový postup nežádoucí((V případě studia cizího kódu zkuste zapomínací test. Poté, co kódu porozumíte, počkejte minimálně 24, ale raději 48 hodin, než začnete s vlastní implementací.)). Případné použítí cizího kódu je obvykle explicitně v zadání úlohy povoleno. \\ - Odevzdané práce jsou proto kontrolovány na přítomnost plagiátů. Za plagiát je pokládán každý kód, který se doslovně nebo po zřejmé mechanické syntaktické modifikaci shoduje s kódem jiného autora řešícího tutéž úlohu. \\ - V případě prvního odevzdaného plagiátu musí autor vypracovat úlohu znovu a samostatně. Řešení musí být funkční. I přesto bude řešení hodnoceno nulovým bodovým (procentuálním) ziskem. Bodové (procentuální) podmínky zápočtu jakož i termín odevzdání řešení se přitom nemění. \\ - V případě opakovaného((Toto opakování je míněno napříč předměty v celém studiu, nikoli pouze v rámci jednoho předmětu. Prohřešky jsou v databázi zaznamenány.)) odevzdaného plagiátu neudělí cvičící jeho autorovi zápočet a přednášející bez odkladu klasifikuje autora stupněm F - nedostatečně z celého předmětu. \\ - Vyučující nezaručují, že v případě shody více odevzdaných prací dokáží rozlišit původního autora a plagiátora. \\ - Posluchač, který se svým hodnocením nebo klasifikací nesouhlasí, se může obrátit na vedoucího katedry, která předmět zajišťuje, a dále postupovat podle [[https://www.cvut.cz/sites/default/files/content/74c76d2e-7f4d-4cb1-ac28-b0765c7f88f2/cs/20211023-studijni-a-zkusebni-rad-pro-studenty-cvut-v-praze-iv-uplne-zneni-ucinnost-od-20-9-2021.pdf|Studijním a zkušebním řádem ČVUT]], zejména podle článku 10, odstavce 3. nebo článku 10, odstavce 9. ===== Co je plagiát ===== [[http://cs.wikipedia.org/wiki/Plagiát|Plagiátem]] je převzatý text, ilustrace, část počítačového kódu, metoda, i myšlenka (i část téhož) bez uvedení citace pramene. Každý, kdo ve svém řešení použije výsledky jiného autora, musí tyto převzaté výsledky zřetelně označit a odkázat na původního autora. Jinak se dopouští plagiátorství. Z výukových důvodů dále také není možné používat cizí výsledky v konkrétních předmětech a úlohách, kde se výslovně požaduje samostatná práce, a to i v případě, že by byly převzaté výsledky řádně označeny. Tato definice plagiátorství nijak nezužuje obvyklé chápání opisování na této univerzitě. /* | [[courses:bab36prga:hw:hw08|HW 08a - Interaktivní aplikace s meziprocesorou komunikací (PRGA)]] | 3b | - | - | Časný termín 27.04. \\ **so 02.05.** \\ **[[#Úlohy HW08, HW09 a HW10 | Finální termín 9.5.]]** | bez omezení | | [[courses:b3b36prg:hw:hw08|HW 08 (Nucleo) - LED a tlačítko]] \\ [[courses:b3b36prg:hw:hw09|HW 09 (Nucleo) - Jednobajtová komunikace]] \\ [[courses:b3b36prg:hw:hw10|HW 10 (Nucleo) - Interaktivní aplikace s komunikací s nadřazeným počítačem]] | - | 3b | - | Termín 6.5. \\ Finální termín 31.5. || bez omezení */ ===== Bodová penalizace za nedodržení pravidel psaní čitelného kódu ===== U vybraných úloh označených v tabulce výše je manuálně hodnoceno dodržení [[courses:b3b36prg:resources:codingstyle:start|pravidel psaní čitelného kódu]]. Penále se mohou sčítat až do -100 %, kde 100 % je dosažený počet bodů za úlohu bez kontroly stylů (tedy za úlohu lze ztratit až všechny body). **Kontrola proběhne po uplynutí termínu odevzdání.** V případě zásadních nedostatků v čitelnosti a správnosti kódu může být uděleno přímo -100 % bodů s doporučením využití konzultace (ať už v rámci pravidelných pátečních, nebo po domluvě individuální). Na základě konzultace a následné reimplementace je možné odevzdat úlohu znovu. V takovém případě jsou případné dodatečné penalizace za pozdní odevzdání nebo nadměrný počet odevzdání manuálně anulovány. ===== Bodová penalizace za pozdní odevzdání úlohy ===== Penalizace za případné pozdní odevzdání je stanovana na 1 bod za 3 dny (72 h). Body budou odečítány až do úspěšného splnění volitelné části. Může se tedy stát, že bude celkové hodnocení úlohy záporné. Příklad časové penalizace pro úkoly HW03, kdy povinné i volitolné zadání je za 3 body: {{ :courses:b3b36prg:hw:points-date.png }} Bonusová zadání není možné odevzdávat po termínu. ===== Bodová penalizace za překročení maximálního počtu pokusů odevzdání řešení úlohy ===== Maximální počet pokusů $upload_{max}$ je stanoven pro každou úlohu. Při překročení této hranice větším počtem odevzdání $uploads$ vám bude stržena část bodů plného počtu $points _{max}$ podle následujícího vzorce: $$ points = points_{max} \cdot \min\left(1, \dfrac{upload_{max}}{uploads}\right) $$ Příklad hodnocení pro úlohy s 5 a 10 pokusy: {{ :courses:b3b36prg:hw:plot-body.png }} ===== Technické informace o Odevzdávacím systému ===== Operační systém (''cat /etc/os-release''): PRETTY_NAME="Debian GNU/Linux buster/sid" NAME="Debian GNU/Linux" ID=debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/" Použitý kompilátor (''clang --version''): clang version 7.0.1-8 (tags/RELEASE_701/final) Target: x86_64-pc-linux-gnu Thread model: posix /* * V případě HW08-HW10 je však penalizace virtuální a úlohu je možné odevzdat do následujících 72 hodin, které odpovídají penalizaci menší než 2 body. * **Finální termín** odevzdání je termínem, po kterém by bodová penalizace za pozdní odevzdání byla vyšší než body získatelné za úlohu, tj. -2 body. Úloha je ohodnocena podle funkčnosti až plným počtem bodů, ale v případě nefunkční úlohy (či jen prázdného souboru) je ohodnocen úkol 0 body. Odevzdaný (třeba i prázdný soubor) se tak započítá do podmínek zápočtu odevzdaných úkolů, i když s nulovým bodovým ziskem. Hlavní motivace úkolů HW08 až HW10 je se dostatečně včas seznámit s problematikou a případně být připraven a mít dotazy na cvičení (přednášce), neboť tvoří podklad pro přímačarou realizaci semestrální práce. I za cenu nulového bodového zisku je užitečné úlohy realizovat. Jejich implementace přináší zásadní výhodu pro semestrálku pokud jsou realizovány dostatečně dopředu, neboť pouze tak je možné získat čas na hlubší pochopení souvislostí. Bodové hodnocení za tyto úlohy je tak zamýšleno jako motivace pro včasné řešení úkolů. Termíny definují tři časové úseky, ve kterých je možné úlohu odevzdat * Úloha odevzdaná před časným termínem je ohodnocena a pokud není hodnocena plným počtem bodů, cvičící poskytne zpětnou vazbu pro zlepšení úlohy a to před termínem odevzdání. * Úloha odevzdaná po časném termínu, ale do finálního termínu je ohodnocena 0 až 2 body. Pokud to je možné, hodnotitel poskytne zpětnou vazbu. Lze využít kontaktních hodin pro konzultaci řešení a odevzdání opravené až do finálního termínu odevzdání. * Po finálním termínu již nedává z hlediska získatelných bodů úlohu odevzdávat a je ohodnocena 0 body. Nicméně lze využít konzultačních cvičení pro pochopení problematiky a realizaci semestrální práce. */