Programování v jazyce C++

Změny od semestru podzim 2018 jsou vyznačeny červeně.

Základní informace

Cílem předmětu je seznámit studenty se základy moderního C++ podle standardu C++14. Absolvent kurzu by měl být schopen ovládat syntax C++, používat prostředky standardní knihovny, rozumět principům správy zdrojů v C++ a principům objektově orientovaného programování s přihlédnutím k jeho implementaci v C++.

Výuka je organizována formou přednášek, demonstračních cvičení a cvičení. Všechny součásti výuky jsou nepovinné; docházka se neeviduje.

Přednášky se konají dle rozvrhu. Sedmý týden semestru se bude v době přednášky konat vnitrosemestrální písemka. Z vnitrosemestrální písemky je možno získat maximálně 20 bodů.

Jako doplnění k přednáškám jsou pořádána demonstrační cvičení (v ISu skupina PB161/Demo). Na demonstračních cvičeních bude přednášející ukazovat a komentovat praktické příklady programování. Program demonstračních cvičení se může přizpůsobovat podle přání studentů, např. věnovat se tématům, která studentům přišla méně pochopitelná.

Cvičení jsou primárním místem řešení problémů, na které student narazí při řešení úkolů. Na každém cvičení jsou k dispozici dva cvičící, kteří se budou individuálně i skupinově studentům věnovat. Na začátku každého cvičení cvičící v rychlosti shrnou hlavní body aktuálně probírané látky.

Náplní cvičení je zejména řešení týdenních miniúkolů. Tyto miniúkoly budou zveřejněny vždy začátkem týdne a odevzdávat se budou koncem následujícího týdne. Úkolů bude celkem 10, hodnoceny budou 3 body za úkol. Za miniúkoly je tedy možno získat maximálně 30 bodů za semestr.

Koncem semestru se v době konání cvičení (případně i v některých dalších časech) bude řešit zápočtový příklad. Studenti budou muset v časovém limitu (cca hodina) vypracovat řešení zadaného příkladu. Tento příklad se neboduje, hodnotí se pouze stylem ANO/NE. Pro neúspěšné bude začátkem zkouškového období vypsán náhradní termín zápočtu.

Kromě miniúkolů studenti v průběhu semestru řeší celkem čtyři domácí úlohy. Tyto úlohy budou mít vždy určený deadline, do nějž musí být odevzdány. Za každou úlohu je možno získat až 15 bodů, celkem tedy 60 bodů. Systém bodování a odevzdávání úloh je podrobněji vysvětlen níže.

Kromě čtyř domácích úloh bude v průběhu semestru zadána ještě pátá bonusová úloha. Smyslem této úlohy je dát možnost doplnění bodů pro účely zápočtu, případně pro zlepšení výsledné známky. Tuto úlohu bude možné odevzdávat celý semestr (od okamžiku zadání zhruba v polovině semestru) včetně zkouškového. Pro účely získání zápočtu je ovšem třeba bonusovou úlohu odevzdat minimálně týden před zkouškovým termínem. Vylepšení známky funguje i zpětně, ovšem kromě známky F, ta se pátou úlohou zpětně vylepšit nedá.

Závěrečná zkouška se koná ve zkouškovém období a je za ni možno získat maximálně 80 bodů. Zkouška probíhá písemnou formou, podobně jako vnitrosemestrální písemka. Nutnou podmínkou k umožnění účasti na zkoušce je úspěšné získání zápočtu.

Kromě výše zmíněných tzv. tvrdých bodů je možno v průběhu semestru získávat i tzv. měkké body za bonusová rozšíření domácích úkolů, upozornění na chyby apod. Tyto měkké body se nepočítají do limitu bodů pro zápočet, resp. pro úspěšné ukončení předmětu, mohou tedy pouze vylepšovat výslednou známku.

Bodové hodnocení

Zápočet je udělen za splnění následujících podmínek:

K úspěšnému složení zkoušky je třeba získat v součtu (miniúkoly + úlohy + vnitro + zkouška) alespoň 95 tvrdých bodů. Hodnocení známkou se pak počítá podle součtu měkkých a tvrdých bodů takto:

Odevzdávání a bodování úkolů

Týdenní miniúkoly i velké domácí úlohy se odevzdávají prostřednictvím systému kontr, přičemž odevzdané soubory musí být uloženy ve studentově repozitáři na fakultním serveru GitLab. Více o použití kontru a fakultního GitLabu se můžete dočíst v sekci Návody.

Pravidla

Bodování

Týdenní miniúkoly jsou kontrem hodnoceny automaticky max. 3 body. Počet odevzdání miniúkolů je omezen na maximálně tři pokusy.

Řešení velkých domácích úloh procházejí nejdříve automatizovanými testy kontru. Studenti mají šest pokusů (poslední dva ovšem s penalizací, viz níže) pro odevzdání řešení. Nově nerozlišujeme odevzdání naostro a odevzdání nanečisto. Existuje pouze jeden druh odevzdání. Pokud se však při odevzdání stane, že se testy vůbec nezkompilují, toto odevzdání se nebude počítat do výše uvedeného limitu. I přesto silně doporučujeme psát si vlastní testy a zkusit si vše nejprve zkompilovat (ideálně na stroji aisa). Nadměrné zatěžování kontru opakovanými odevzdáními kódu, který se s testy nezkompiluje, může být penalizováno ztrátou bodů.

Kromě hodnocení kontrem jsou úkoly hodnoceny opravujícími, a to i v případě, že hodnocení kontrem není za plný počet bodů. V případě, že student nezískal od kontru plný počet bodů, ale přitom mu ještě zbývají nějaká odevzdání, nemusí čekat na kontrolu opravujícím, ale může odevzdat znovu. Opravující má na opravu maximálně týden od posledního odevzdání. Opravující hodnotí zejména kvalitu kódu a dodržování zásad na škále 0 až 3 body. Pokud není kvalita kódu dostatečná (méně než 3 body), ale přitom student od kontru získal plný počet bodů za testy, má student možnost jednou své odevzdání opravit bez ztráty bodů za počet odevzdání, pokud bude řešení funkční.

Pokud student začne odevzdávat řešení dostatečně brzo před finálním deadline, získá další body navíc (viz níže).

Domácí úlohy jsou celkem hodnoceny max. 15 body, které jsou rozděleny takto:

Následující tabulka shrnuje celý systém bodování:

Body od kontru 0–7 podle testů v kontru zapíše kontr automaticky
Body za kvalitu kódu 0–3 podle kvality kódu a dodržení zásad (omezeno shora dle bodů od kontru) zapíše opravující
Body za počet odevzdání 3 | 2,5 | 1,5 | 0 | -50% | -75% podle počtu odevzdání (procentuální položky se počítají ze součtu bodů od kontru a za kvalitu); pro kladné body je třeba mít 7 bodů od kontru a alespoň 2 body za kvalitu kódu zapíše kontr automaticky (po skončení odevzdávání; penalizace za 5. a 6. odevzdání se zapisuje rovnou)
Body za včasné odevzdání p krát (body od kontru + body za kvalitu), kde p je 0,2 | 0,15 | 0,1 | 0,05 | 0 podle toho, kdy bylo provedeno první nenulové odevzdání zapíše kontr automaticky (po skončení odevzdávání)

Jednotlivé domácí úlohy mohou toto bodování upravit ve svém zadání. Toto se bude zejména týkat bonusové domácí úlohy.

poslední změna: 2018-11-12 20:46