Semestr: letní 2026/27
Stránka v SIS: NPRG038
Zakončení: Zkouška a zápočet

Table of contents


[in English] This page contains information for czech students of the Advanced C# Programming course. For english version, switch the language in the page header.

Náplň přednášek

Doporučená literatura

Případně

Náplň cvičení

Informace o zkoušce

Zkouška probíhá primárně písemnou formou, a v každé zkouškové písemce je kolem 6 až 8 otázek (některé obsahují podotázky). U každé otázky, případně podotázky, je dole uvedeno, jaký maximální počet bodů (=N) lze za správně odpovězenou otázku/podotázku získat: N bodů získáte v případě, že je odpověď na otázku správně; 0,5 * N bodu získáte, pokud odpověď není zcela kompletní, ale jinak je správná (tj. nějaká malá část odpovědi chybí nebo je nepřesná); v ostatních případech získáte 0 bodů (tj. pokud v odpovědi chybí větší část, nebo je odpověď na otázku plně nebo i jen z části nesprávná).

Celkem lze z každé písemky získat maximálně 10 bodů. Mapování získaných bodů na výslednou známku je následující:

Body z písemky Výsledná známka
10 – 8,5 1
8 – 6,5 2
6 – 5 3
4.5 – 0 4

Každá zkoušková písemka trvá 150 minut, tj. ideálně 20 minut na každou otázku + 30 minut bezpečnostní rezerva. Písemka bývá většinou opravena ještě ten den. Ve výjimečných případech můžete být pozváni na dodatečnou ústní část (vysvětlit nějakou z odpovědí nebo odpovědět na doplňující otázky). Tato nepovinná ústní část je většinou online formou, přes platformu Zoom. Základem hodnocení je ale vždy písemná část, tedy u otázky bez odpovědi nebo se zcela špatnou odpovědí nelze ani po ústní části získat více než 0 bodů.

Níže budou pro ilustraci uvedena zadání vybraných písemek z již proběhlých termínů:

Doplňkové informace o zkoušce

Kromě informací uvedených ve slidech z první přednášky navíc pro zkoušky z NPRG035, NPRG038, a NPRG057 platí následující 2 body:

Modelový příklad 1:

Student X získá na 1. termínu známku 2 a odmítne ji. Na 2. termínu získá známku 3 a odmítne ji. Na 3. termínu získá známku 1. Aktuální stav studenta X: 1. termín = propadlý, 2. termín = propadlý, 3. termín = 1, tj. student X zkoušku splnil s hodnocením 1.

Modelový příklad 2:

Student Y získá na 1. termínu známku 3 a odmítne ji. Na 2. termínu získá známku 4. Aktuální stav studenta Y: 1. termín = propadlý, 2. termín = 4, tj. pokud chce zkoušku splnit, musí student Y přijít na 3. termín. Pokud na 3. termínu opět získá známku 4, tak zkoušku nesplnil.

Modelový příklad 3:

Student Z se nedostaví na 1. termín, na 2. termínu získá známku 3 a odmítne ji, na 3. termínu získá známku 4. Aktuální stav studenta Z: 1. termín = propadlý, 2. termín = propadlý, 3. termín = 4, tj. student Z zkoušku nesplnil.

Informace o zápočtu

Pro získání zápočtu je nutné dvě podmínky:

1. Domácí úkoly

Během semestru bude zadáno několik (10-12) domácích úkolů. Náročnost těchto úkolů se může různit. Za správné vypracování úkolu dostane student značku OK. Pokud se v řešení vyskytnou nějaké problémy (např. chybějící implementace nějaké malé části úkolu), dostane student značku OK-. Naopak, pokud bude řešení velmi kvalitní nebo jinak nadstandardní, dostane student značku OK+. Kladné značky umí odmazávat mínuska u negativních značek. Pro splnění této podmínky je nutné získat alespoň 5 značek OK, z nichž alespoň 2 jsou na téma více-vláknového programování; nebo alespoň 1 na více-vláknové programování a alespoň 1 na dobrovolné pokročilé (extended track) koncepty. Domácí úkoly se hodnotí individuálně. Pokud si nejste celkovým hodnocením jistí (např. máte nemálo značek OK-), zeptejte se svého cvičícího.

Každá další značka OK nad 5 přidává +0.25 bodů ke zkoušce. Bonusové body ke zkoušce se počítají pouze pro první pokus zkoušky a pouze v akademickém roce, ve kterém byly získané.

Domácí úkoly nemají formální specifikaci. Je na zodpovědnosti studenta správně úkolu porozumět ptaním se otázek během cvičení. Domácí úkoly se odevzdávají prostřednictvím MFF GitLabu. Je nutné nahrávat celá řešení (samotné .cs soubory nemusí v některých případech stačit, např. pokud zadání vyžaduje připravení NuGetích balíčků). Často dostanou studenti k dispozici kostru řešení (projekt bez implementace), který si můžou z upstream repositáře merge-nout. Součástí připravených GitLab repozitářů je i automatická pipeline, která otestuje základní vlastnosti řešení (ve smyslu, že je řešení odevzdané, že jde přeložit a že vrací nějaký výstup). Na rozdíl od systému ReCodEx se nejedná o potvrzení správnosti implementace. Je na studentech samotných, aby si řešení rigorózně otestovali.

Předchozí odstavec implikuje, že účast na cvičeních je povinná, resp. že je povinností studentů, aby se dostatečně zajímali o to, co se na cvičeních děje.

Upozornění: Domácí úkoly jsou samostatnou prací, jejímž cílem je zhodnotit schopnost studenta samostatně vypracovat složitější program v jazyce C#. Pokud bude zjištěno, že některý student odevzdal cizí řešení (např. několik studentů odevzdalo různé instance stejného řešení některého domácího úkolu, apod.), bude to považováno za pokus o podvod. Všichni takoví studenti nesplní předmět NPRG038 v tomto akademickém roce a případně bude disciplinární komisi UK MFF doporučeno jejich vyloučení ze studia!

Použití externích zdrojů pro řešení domácích úkolů (StackOverflow, ChatGPT, …) je možné pouze stejným způsobem jako tomu bylo v předmětu Programování v jazyce C#, tedy vždy s dodáním odkazu na daný zdroj (StackOverflow odpověď, ChatGPT chat). Neuvedení zdroje, a tedy prezentování cizího kódu za svůj vlastní, se rovněž bere jako pokus o podvod, s výše uvedenými implikacemi.

2. Zápočtový program

Jedná se o větší (v porovnání s domácími úkoly) kus SW, který samostatně vymyslíte, specifikujete, navrhnete, naprogramujete, otestujete, odladíte, zdokumentujete a předvedete. Vzhledem k tomu, že téměř všichni studenti vypracovávají pouze jeden zápočtový program za všechny C# předměty, typicky použijete svůj dedikovaný repositář z NPRG035 na MFF GitLabu. V případě, že chcete pracovat na více nezávislých zápočtových programech, domluvte se individuálně se svým vyučujícím, který Vám vyrobí vhodné repositáře.

Termíny:

Požadavky pro NPRG035 + NPRG038:

Zdrojový kód je kód, který jste (a pouze vy) napsali v jazyce C#. Komentáře a testy jsou do výpočtu zahrnuty, pokud jsou v přiměřeném poměru k celku (pokud definice přiměřenosti není jasná, zeptejte se vyučujícího).

Zápočtový program vyžaduje rozumné a netriviální použití nějakých technologií probíraných na přednáškách a cvičeních (např. vlastní operátory, variantní rozhraní, delegáti, vlákna, WebAPI, LINQ, reflection, generování kódu).

POZOR! Schválení specifikace vyžaduje součinnost vyučujícího. Pokud se v repositáři specifikace objeví 10 minut před deadline, pak nelze předpokládat, že se na to vyučující stihne podívat a stihne jí schválit. Tato situace se pak posuzuje, jakoby student specifikaci neodevzdal a zápočtový program v tomto roce nesplní. Stejné platí i pro předvedení programu. Na předvádění si připravte nějakou formu prezentace, kde ukážete hlavní funkce programu + nástin architektury.

Uznávání povinností z minulých let

Pokud jste tento předmět měli zapsaný loňský akademický rok a splnili jste pouze některé z povinností potřebných pro udělení zápočtu, může vám je po explicitním požádání (např. při předvádění zápočtového programu) uznat váš letošní cvičící (lze uznat domácí úkoly, odevzdaný a schválený zápočtový program). Téma zápočtového programu (pokud ho ještě nemáte dokončený) nemusí být novým cvičícím uznáno. Pokud jste v loňském roce úspěšně složili zkoušku, ale nepodařilo se vám získat zápočet, lze opět po explicitním požádání požádat o uznání zkoušky. Toto je iniciativa vyučujících tohoto předmětu a nelze ji požadovat po studijním oddělení!