{{page>courses:b6b36pjc:styles#common&noheader&nofooter}} {{page>courses:b6b36pjc:styles#ukoly&noheader&nofooter}} ======= Úkoly v semestru ======= Úkoly jsou automaticky testovány systémem [[https://cw.felk.cvut.cz/brute/teacher/course/1762| BRUTE]]. Domácí úkoly jsou povinné (mimo jednohubek) a pro získání zápočtu je potřebujete splnit všechny, což znamená získat z každého alespoň 50% bodů, předtím než se započítá penalizace za pozdní odevzdání((To znamená, že pokud jste dostali 4 body z 10 z testů a penalizace za pozdní odevzdání je v danou chvíli 10 bodů, tak jste stále odevzdali úkol úspěšně.)). Úlohy se kontrolují stejnými testy, jako dostáváte v zadání úkolů, ovšem v odevzdávacím systému testy, resp. vaše úkoly, běží pod [[http://valgrind.org/|Valgrindem]]. Aby byl úkol přijat jako správně odevzdaný, nesmí Valgrind odhalit žádné problémy s pamětí. Úkoly běží také pod sanitizéry -- [[https://github.com/google/sanitizers/wiki/AddressSanitizer|AddressSanitizer]], [[https://github.com/google/sanitizers/wiki/MemorySanitizer|MemorySanitizer]] a [[https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html|UndefinedBehaviorSanitizer]]. Ty společně detekují více chyb než Valgrind, jsou rychlejší a jejich výstup je podrobnější. Abychom vás motivovali k tomu testovat si úkoly na svém počítači((Odevzdávací systém by neměl sloužit jako debugger.)), bude se po překročení počtu 10 odevzdání aplikovat časová penalizace. To znamená, že se vám nestrhnou žádné body, ale na zobrazení výsledků vyhodnocení si budete muset chvíli počkat. Dle aktuálního nastavení budete muset při desátém uploadu čekat 5 minut, při jedenáctém 5.5, při dvanáctém 6 minut a tak dále. Akceptován je pouze úkol, který neobsahuje paměťové ani jiné chyby. Částečné body získané před odhalením paměťových chyb nelze započíst do celkového hodnocení. **Program musí být správný ze všech hledisek!!!** **Termíny odevzdání úkolů jsou závazné**. Termíny jsou dány na začátku semestru, zorganizujte si proto čas tak, abyste úkoly stihli vypracovat. Termíny nelze s ohledem na Vaše spolužáky a návaznou kontrolu nijak posunovat. Drobné zpoždění termínu je penalizováno - zpočátku mírně (1 bod), později více. ====== Plagiátorství a použití nástrojů umělé inteligence ====== Práce na domácích úkolech je samostatná. Studenti, kterým odhalíme duplicitní řešení, musí úkol vypracovat samostatně a ztrácí nárok na bodové hodnocení za daný úkol. Při opakovaném incidentu je přestupek postoupen disciplinární komisi. Samozřejmě je normální (a žádoucí) o domácích úlohách diskutovat s kolegy, nicméně kód si musí každý napsat sám. Pod pojmem //nástroje UI// rozumíme moderní nástroje jako např. ChatGPT, Microsoft Bing Chat, Google Bard, Github Copilot, Code Llama atd. Pravidla pro používání nástrojů UI v kurzu Programování v C%++% jsou následující: * V tomto kurzu obecně používat nástroje UI **nedoporučujeme**. * **Buďte upřímní a otevření**. Pokud tyto nástroje používáte, uveďte ve své práci jasně, které části byly vytvořeny s jejich pomocí (a jak). * **Poučte svého učitele** o jejich použití! Jsme zvědaví a vděční, když se od vás naučíme, jak tyto nástroje efektivně používat. Použití nástrojů UI je dvousečná zbraň. Mohou vám v mnoha ohledech pomoci, ale mohou vám také uškodit. * Naším cílem je vás něco naučit tím, že od vás vyžadujeme řešení domácích úkolů a semestrálních úloh. (Naopak NENÍ naším cílem naučit vás zkopírovat zadání úlohy do chatu nástroje UI, požádat o řešení a zkopírovat zpět odpověď UI.). * Nezapomeňte: Autorem kódu/zprávy/řešení jste vy, i když vám s ním pomohla UI! Jste zodpovědní za všechny chyby, které UI udělá, a za všechna tvrzení, která jsou nesprávná nebo nejsou podložena daty. Jste zodpovědní za všechny neexistující odkazy, které si UI vymyslí. * Pokud necháte UI vygenerovat kód za vás, ujistěte se, že rozumíte každému jeho kousku a že byste jej dokázali napsat i sami. Využijte vygenerovaný kód k tomu, abyste se dozvěděli něco o syntaxi a vlastnostech programovacího jazyka, nebo dokonce o řešení své úlohy, ale pak (např. po 24 hodinách) **řešení implementujete z hlavy znovu, bez pomoci UI**. Můžete být požádáni o jeho vysvětlení nebo úpravu. Můžete dostat úkol, kde pomoc UI nebude k dispozici. * Přímé odevzdání částí textu/kódu vygenerovaných pomocí UI není žádoucí a může být posuzováno a postihováno podobně jako plagiátorství. ===== Úkoly ===== ^ Úkol ^ Téma ^ Max bodů ^ Požadované minimum ^ Termín odevzdání ^ | 1 | [[courses:b6b36pcc:ukoly:HW01 | Webbův dalekohled ]] | 10 | 5 | 19. 10. 2025 | | 2 | [[courses:b6b36pcc:ukoly:HW02 | Robinson Crusoe ]] | 10 | 5 | 16. 11. 2025 | | 3 | [[courses:b6b36pcc:ukoly:HW03 | List ]] | 10 | 5 | 14. 12. 2025 | ===== Jednohubky ===== Jednohubky jsou malé a **nepovinné** úkoly, za které můžete získat 1 bod. K tomu abyste bod získali je musíte odevzdat před začátkem dalšího cvičení. ^ Úkol ^ Téma ^ | 1 | [[courses:b6b36pcc:ukoly:HWjednohubky#formatovany_zapis_do_proudu|Formátovaný zápis do proudu]] | | 2 | [[courses:b6b36pcc:ukoly:HWjednohubky#kopie_a_reference|Kopie a reference]] | | 3 | [[courses:b6b36pcc:ukoly:HWjednohubky#prace_s_dynamicky_alokovanou_pameti|Práce s dynamicky alokovanou pamětí]] | | 4 | [[courses:b6b36pcc:ukoly:HWjednohubky#zivot_objektu|Život objektů]] | | 5 | [[courses:b6b36pcc:ukoly:HWjednohubky#kopie_a_presuny|Kopie a přesuny]] | | 6 | [[courses:b6b36pcc:ukoly:HWjednohubky#operatory|Operátory]] | | 7 | [[courses:b6b36pcc:ukoly:HWjednohubky#nevirtualni_a_virtualni_rozhrani|(Ne)Virtuální rozhraní]] | | 8 | [[courses:b6b36pcc:ukoly:HWjednohubky#simulace_kovariantnich_navratovych_typu_s_chytrymi_ukazateli|Kovariance s chytrými ukazateli]] | | 9 | [[courses:b6b36pcc:ukoly:HWjednohubky#jednoducha_sablonova_funkce|Jednoduchá šablona]] | | 10 | [[courses:b6b36pcc:ukoly:HWjednohubky#jednoduche_metaprogramovani|Jednoduché metaprogramování]] | ===== Semestrálka ===== [[courses:b6b36pcc:ukoly:sem__prace|Semestrálka]] ===== Testovací úlohy ===== V Brute najdete i [[courses:b6b36pcc:ukoly:test_upload|dvě testovací úlohy]], na nichž si můžete vyzkoušet, jestli vám funguje tak, jak má.