{{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 **23.5.2026@23:59 AoE**!
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 v časové zóně AoE. Bonusové úlohy můžete vypracovat až do konce výukové části semestru do finálního termínu 23.05.2026@23:59 AoE.
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]] | 0b | - | - | - | so 28.02. | 100 |
| [[courses:b3b36prg:hw:hw01|HW 01 - Načítání vstupu, výpočet a výstup]] | 2b | - | - | ✔ | so 14.03. | 10 |
| [[courses:b3b36prg:hw:hw02|HW 02 - První cyklus kontrola]] | 2b | - | - | ✔ | so 21.03. | 10 |
| [[courses:b3b36prg:hw:hw03|HW 03 - Kreslení (ASCII art)]] | 2b | - | - | ✔ | so 28.03. | 10 |
| [[courses:b3b36prg:hw:hw04|HW 04 - Četnost výskytu znaků]] | 2b | - | - | ✔ | so 049.04. | 120 |
| [[courses:b3b36prg:hw:hw05|HW 05 - Prvočíselný rozklad]] | 2b | - | 3b | ✔ | so 11.04. \\ Bonus 23.05. | 20 |
| [[courses:b3b36prg:hw:hw06|HW 06 - Caesarova šifra]] | 2b | 2b | - | ✔ | so 18.04. | 20 |
| [[courses:b3b36prg:hw:hw07|HW 07 - Maticové počty]] | 2b | 1b | 2b | ✔ | so 25.04. \\ Bonus 23.05. | 20 |
| [[courses:b3b36prg:hw:hw08|HW 08 - Hledání textu v souborech]] | 2b | 1b | - | - | so 02.05. | 20 |
| [[courses:b3b36prg:hw:hw09|HW 09 - Kruhová fronta v poli]] | 2b | - | - | - | so 09.05. | 20 |
| [[courses:b3b36prg:hw:hw10|HW 10 - Fronta spojovým seznamem s řazením]] | 2b | 1b | - | - | so 16.05. | 20 |
^ Celkem bodů za úlohy ^ 20b ^ 5b ^ 5b ^ ^ ^
Ke kódování se můžete inspirovat [[courses:b3b36prg:resources:coding|ukázkami a tutoriá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 počet bodů dosažených nad 1 bod (po penalizaci může zbýt pouhý jeden bod). **Kontrola proběhne po uplynutí termínu odevzdání.**
/*-100 %, kde 100 % je dosažený počet bodů za úlohu bez kontroly stylů (tedy za úlohu lze ztratit až všechny body). */
/*
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 (''lsb_release -da''):
Distributor ID: Debian
Description: Debian GNU/Linux 11 (bullseye)
Release: 11
Codename: bullseye
Použitý kompilátor (''clang --version''):
clang --version
Debian clang version 11.0.1-2