Warning
This page is located in archive. Go to the latest version of this course pages. Go the latest version of this page.

Domácí úkoly

Harmonogram

Pro získání zápočtu je potřeba úspěšně odevzdat všechny povinné úlohy do 20.05.2022 23:59 CEST!

Domácí úkoly HW1-HW7 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ínů 20.5.2022@23:59 CEST.

Číslo úkolu a název Povinné zadání Volitelné zadání Bonusové zadání Kontrola psaní čitelného kódu Termín odevzdání Počet uploadů
HW 0 Upload do BRUTE 0b - - - - 100
HW 1 - Kreslení (ASCII art) 3b - - so 12.03. 1030
HW 2 - Prvočíselný rozklad 3b - 5b so 26.03.
Bonus 20.05.
20
HW 3 - Caesarova šifra 3b - 5b so 02.04.
Bonus 20.05.
20
HW 4 - Hledání textu v souborech 3b 3b - - so 09.04. 20
HW 5 - Maticové počty 3b 4b 5b - so 16.04.
Bonus 20.05.
20
HW 6 - Kruhová fronta v poli 3b 4b - so 23.04. 20
HW 7 - Fronta spojovým seznamem s řazením 3b 4b - so 30.04. 20
HW 8 - Interaktivní aplikace s meziprocesovou komunikací 4b9b - - celková kontrola cvičícím so 0714.05. bez omezení
HW 9 - Vícevláknová aplikace s meziprocesovou komunikací 5b0b 5b - celková kontrola cvičícím so 14.05. bez omezení
Celkem bodů za úlohy 30b 1520b 15b

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.

  1. 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í1). Případné použítí cizího kódu je obvykle explicitně v zadání úlohy povoleno.
  2. 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.
  3. 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í.
  4. V případě opakovaného2) 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.
  5. 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.
  6. 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 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

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ě. 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.

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:

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 HW4, kdy povinné i volitelné zadání je za 3 body:

Bonusová zadání není možné odevzdávat po termínu.

Bodová penalizace za nedodržení kódovacího stylu (Coding Style)

U HW2, HW3, HW7, HW8 a HW9 je manuálně hodnoceno dodržení kódovacího stylu popsané pravidly §1 až §7 popsaných v Pravidla pro 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í. Penále může být exponenciálně zvyšované za opakované porušení kodóvacích pravidel.

Příklady hodnocení:

  1. Nepřehledný kód bez odřádkování, mezer atd., nekonzistentní formátování: až -20%.
  2. Nepřehledná logika (např. není hned jasné, zda cyklus skončí), přílišné zanoření (např. 4 cykly v sobě): až -20% bodu.
  3. Použití “kouzelných” proměnných: až -40%.
  4. Opakování kódu: až -40 bodů.
  5. Chybějící dokumentace u funkcí: až -40% bodů.
  6. Nevhodně pojmenované proměnné a funkce, např. zkratkou (q, nc), nicneříkajícím slovem (cislo, promenna_1): až -40% bodů.
  7. Nejsou použité žádné funkce: -40% bodů.
  8. Používání jiných ne-ASCII znaků, používání jiného jazyka než angličtina a čeština, nebo kombinace několika jazyků: až -20% bodů.
  9. Neošetřené načítání ze vstupu: až -40% bodů.
  10. Neošetřená práce s pamětí (např. chybějící kontrola na NULL u funkce malloc,…): až -40% bodů.
  11. Nevhodná práce s vlákny: až -80% bodů.
  12. Nevhodné použití mutexu: až -80% bodů.
  13. Nevyužití podmíněnných proměnných tak, kde se vyložené hodí: až -80% bodů.

Úlohy HW8 a HW9

Úlohy

kombinují Modul aplikaci simulující řídící desku Nucleo s ovládací aplikací. Přičmež úloha HW9 přímo rozšiřuje úlohu HW8. U těchto úloh není prováděna automatická evaluace, neboť jsou cíleny na realizaci funkční aplikace dle zdání a je očekáváno, že si studenti dostatečně osvojili přístup řešení programovacích úloh a odpovídají řešení praktického úkolu. Z hlediska odevzdání úkolu jsou definovány dva následující termíny

  • Časný termín je 1 týden před termínen odevzdání, v rámci kterého cvičící poskytne zpětnou vazbu pro odevzdaný program v případně, že není ohodnocen plným počtem bodů a to do termínu odevzdání. Student pak má možnost úkol opravit podle zpětné vazby a znovu odevzdat.
  • Termín odevzdání odpovídá standardnímu termínu odevzdání, po kterém začíná běžet bodová penalizace za pozdní odevzdání úlohy.

Hlavní motivace úkolů HW8 a HW9 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). Bodové hodnocení za tyto úlohy je tak zamýšleno jako motivace pro včasné řešení úkolů.

Praktické poznámky

Ve většině úloh je potřeba se především vyhnout opisování. Pro zabránění opisování použijte zapomínací test. Pokud narazíte na kód (například od kolegy nebo na webu), který odpovídá zadání, nechte si před tím, než začnete sami kódovat, dvoudenní pauzu. Tak zamezíte přílišné inspiraci cizím dílem.

Kolegové studenti, apelujeme na vaši profesionální čest. Opisování a podvádění jsou závažné přečiny proti akademické etice. Pokud si s úlohou nevíte rady, obraťte se na kolegy cvičící/přednášející. Rádi vám poradí a poskytnete jim cennou zpětnou vazbu k výkladu a tématu.

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

1)
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í.
2)
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.
courses/bab36prga/hw/start.txt · Last modified: 2022/05/18 10:27 by faiglj