Přednáška:
Pondělí 17:20 (česky), online (Pavel Ježek)
Virtualní (anglicky), online (Pavel Ježek)
Cvičení:
Úterý 17:20 (česky), online (Pavel Ježek)
Pondělí 14:00 (česky), online (Radek Zikmund)
Středa 10:40 (česky), online (Filip Kliber)
Pátek 9:00 (česky), online (Jan Pacovský)
Středa 10:40 (anglicky), online (Filip Kliber)
Stránka v SIS: NPRG035
Zakončení: Zkouška a zápočet
Covid-19
Organizace letošní distanční výuky cvičení:
- V průběhu distanční výuky budou mit všechna cvičení společný deadline na odevzdávání DU do ReCodExu — bude to vždy neděle 21:00.
- Plus mínus v tomto čase vám Pavel Ježek vždy pošle mailem loňský videozáznam cvičení na další týden (kde se probírá feedback právě doběhlé úlohy + zadáni nové úlohy na další týden).
- Na toto video se můžete podívat v čase pondělní přednášky — tj. v pondělí od 17:20 do 18:50 (nebo samozřejmě také dříve, pokud by vam to tak vycházelo lépe).
- Na to bude každé pondělí od 18:50 navazovat živá on-line konzultace (na platformě Zoom) s Pavlem Ježkem (pro všechna cvičení!), kde bude prostor na případný další feedback k vaším řešením DU + hlavně na vaše dotazy k videozáznamu cvičení (nejasnosti k řešení DU + nejasnosti k zadání nového DU). Z této konzultace bude videozáznam, který Vám bude k dispozici.
- Jinak samozřejmě můžete kdykoliv během týdne kontaktovat přímo své cvičící ohledně libovolných nejasností — zvláště nejasnosti k zadání, řešení, problémy s ReCodExem, problém s řešením úlohy (neprochází testy, potřebujete poradit, apod.) — s tímto primárně komunikujte opravdu se svým cvičícím, ke kterému jste zapsaní.
Organizace letošní distanční výuky přednášek:
- Každý týden vám Pavel Ježek pošle loňský videozáznam přednášky na následující týden (v neděli večer nebo během pondělí)
- Očekává se, že se na videozáznam podíváte někdy v průběhu následujícího týdne (např. v časovém slotu, kde máte rozvržené cvičení, kde se jinak nic jiného dít nebude).
- Na společné konzultaci v pondělí bude pak možné klást otázky i k videu přednášky, které jste týden předtím dostali ke shlédnutí (případně také ke starším přednáškám). Zkuste si prosím takové dotazy připravit předem při sledování videozáznamu přednášky.
- Ke každé přednášce se pokusíme připravit malou sady přímočarých self-assessment úloh, abyste si sami po shlédnutí videa přednášky mohli ověřit, že jste hlavním konceptům porozuměli správně (tyto úlohy se nebudou nijak odevzdávat ani hodnotit, slouží pouze Vám). Na pondělní konzultaci se tyto úlohy projdou, pokud by jejich řešení nebylo jasné.
- Otázky k přednáškám nebo jejich self-assessment úlohám si nemusíte nechávat až do pondělní on-line konzultace, ale můžete je Pavlu Ježkovi poslat předem mailem. To umožní k otázce připravit případně nějaký větší ilustrativní příklad, pokud by to bylo třeba.
- Pokud by v průběhu semestru došlo k částečnému nebo úplnému přechodu na prezenční výuku (to se neočekává), tak se plánuje celkově připravit nový rozvrh, čili pak bychom provedli korekce i k průběhu tohoto předmětu.
Informace o zápočtu
- Požadavky na zápočet jsou níže a ve slidech z prvního cvičení!
Bodové úrovně pro získání zápočtu a bonusových bodů ke zkoušce
- Studenti s dostatečnou docházkou (≤ 3 absence na cvičení):
- min. 80 bodů = úroveň "I Can Win" → splněn jeden z požadavků na zápočet, konkrétně bod "povinnosti ze cvičení"
- min. 100 bodů → získání 1,25 silných bodů do zkoušky z NPRG035
- min. 120 bodů = úroveň "Hardcore" → získání dalších 0,75 silného bodu do zkoušky z NPRG035
- min. 150 bodů = úroveň "Nightmare!" → získání 0,5 slabého bodu do zkoušky z NPRG035
- min. 200 bodů = úroveň "Mission Impossible" → získání dalšího 0,5 slabého bodu do zkoušky z NPRG035
- min. 228 bodů = "božská úroveň" → na 1 rok propůjčen titul "bohyně veškerého Csharpistva" nebo titul "bůh veškerého Csharpistva"
- Studenti s nedostatečnou docházkou (> 3 absence na cvičení) (např. členové virtuálního cvičení):
- min. 110 bodů = úroveň "I Can Win" → splněn jeden z požadavků na zápočet, konkrétně bod "povinnosti ze cvičení"
- min. 130 bodů → získání 1,25 silných bodů do zkoušky z NPRG035
- min. 150 bodů = úroveň "Hardcore" → získání dalších 0,75 silného bodu do zkoušky z NPRG035
- min. 228 bodů = "božská úroveň" → definice viz výše
Celkem lze tedy získat až 2 silné bonusové body a až 1 slabé bonusové body do zkoušky z NPRG035 (hodnocení zkoušky viz slidy z první přednášky). Pozor — tyto silné bonusové body se budou započítávat pouze při 1. pokusu o složení zkoušky (tj. při svém 2. i 3. pokusu mají všichni 0 silných bonusových bodů). Nerozlišuje se z jakého důvodu student přichází na 2. nebo 3. termín (tj. zda např. odmítl známku na 1. termínu). Slabé bonusové body se budou započítávat při všech pokusech o složení zkoušky, ale pozor: slabé bonusové body nedokáží prorazit bariéru mezi známkou 4 a známkou 3 (tj. pokud po přičtení silných bonusových bodů stále vychází známka 4, tak se slabé bonusové body do výsledku zkoušky nezapočítávají).
Poznámka: Virtuální cvičení je určeno pro studenty, kteří nechtějí chodit na cvičení (např. protože minulý rok nestihli dodělat pouze zápočtový program, splnit zápočtový test, apod.).
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 splněnou docházku, domácí úkoly, zápočtový test, 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, opět po explicitním požádání vám můžu zkoušku uznat já (PJ). Toto je iniciativa vyučujících tohoto předmětu a nelze ji požadovat po studijním oddělení!
Deadlines a limity kódu na zápočtové programy
Termíny NPRG035 (zima) i NPRG038 (léto), NPRG057 (léto), NPRG064 (léto):
- Specifikace: 11. 7. 2021
- Předvedení finální plně funkční verze (včetně uživatelské a programátorské dokumentace):
- 1. deadline: 6. 8. 2021
- 2. deadline: 10. 9. 2021
Požadavky na program z NPRG035, NPRG064 (zdrojového kódu v jazyce C# ⇒ nevygenerovaný (ručně psaný) rozumný kód včetně rozumných komentářů):
- Předvedeno do 1. deadline: minimálně 30 kB zdrojového kódu v jazyce C#
- Předvedeno do 2. deadline: minimálně 45 kB zdrojového kódu v jazyce C#
- Předvedeno po 2. deadline: minimálně 60 kB zdrojového kódu v jazyce C#
Požadavky na program z NPRG038, NPRG057 (zdrojového kódu v jazyce C# ⇒ nevygenerovaný (ručně psaný) rozumný kód včetně rozumných komentářů + netriviální a rozumné použití některé z „technologií“ probíraných v NPRG038, resp. NPRG057 [více viz dané předměty]):
- Předvedeno do 1. deadline: minimálně 45 kB zdrojového kódu v jazyce C#
- Předvedeno do 2. deadline: minimálně 60 kB zdrojového kódu v jazyce C#
- Předvedeno po 2. deadline: minimálně 90 kB zdrojového kódu v jazyce C#
Poznámka: Každý zápočtový program, který splňuje požadavky NPRG038, resp. NPRG057, splňuje i požadavky NPRG035 (tj. lze odevzdat jeden program za oba předměty).
Poznámka: rozumný/rozumné = na požádání posoudí cvičící
POZOR! Osobní předvedení je součástí odevzdání. Na předvádění si připravte několik slidů shrnujících: hlavní funkce programu + hlavní řešené problémy + nástin architektury.
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. Po písemné části následuje ústní část, kde zkoušející se studentem prochází jeho písemku, a případně nepřesností/nejasností u některých odpovědí se ptá na doplňující otázky — na základě toho je určeno finální bodové hodnocení každé otázky. Základem hodnocení je ale vždy písemná část, tedy u otázky bez odpovědi nebo se š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ů (AR 2018/2019):
Níže budou pro ilustraci uvedena zadání vybraných písemek z již proběhlých termínů (AR 2017/2018):
Níže jsou pro ilustraci uvedena zadání vybraných písemek z termínů v AR 2016/2017:
- 25.1.2017 (PDF)
Níže jsou pro ilustraci uvedena zadání vybraných písemek z termínů v AR 2015/2016:
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:
- Pokud někdo bude zapsán na nějakém z termínů zkoušky a na termín se nedostaví, bude mu tento termín v SISu označen jako propadlý (tj. student přijde o jeden pokus). Cílem tohoto opatření je optimalizace vytíženosti jednotlivých termínů, aby všichni studenti měli možnost přijít až na 3 termíny zkoušky.
- Pokud někdo na zkoušce získá známku 2 nebo 3 a bude si chtít svůj výsledek zlepšit, může explicitně na místě během vyhodnocení zkouškové písemky požádat zkoušejícího o nezapsání známky. Zkušební termín mu pak bude v SISu označen jako propadlý. Takový student může pak později
- požádat o dodatečné zapsání získané známky, nebo
- přijít na jiný termín zkoušky (jakýmkoliv výsledkem této "opravné" zkoušky se ovšem anuluje předchozí získaná známka).
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.
Náplň přednášek
- Archivy materiálů a fotek tabulí ze všech přednášek a cvičení (obsahují posbírané materiály ze všech přednášek, viz níže — tyto archivy jsou pouze kopií, a neobsahují nic navíc oproti příkladům a fotkám uvedených u jednotlivých přednášek)
-
1. přednáška
Stručný obsah:Představení předmětu • materiály • příklady na rozehřátí •Materiály:checked
blok • překlad C# programu & assembly & CLR & CIL kód & metadata •ildasm.exe
•ilspy.exe
•mscorlib.dll
- Csharp 2018-19 - 01st Lecture.pptx
- 01-MyAppWithLibrary.zip
-
Kopie tabule na konci přednášky (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
Přednáška
-
2. přednáška
Stručný obsah:- 02-MyAppWithLibrary.zip
- 02-AppWithLibrary-prednaska-IncludingCppCli-2016.zip - BONUS z předloňské přednášky
- 02-NetCoreConsoleApp1.zip
-
Kopie tabule na konci přednášky (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
Přednáška
-
3. přednáška
Stručný obsah:- Csharp 2018-19 - 03rd Lecture.pptx
- 03-NoBaseConstructorHack.zip
- 03-StringConcatAndEquality.zip
-
Kopie tabule na konci přednášky (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
Přednáška
-
4. přednáška
Stručný obsah:- Csharp 2018-19 - 04th Lecture.pptx
- 02-ModifiedStringHack.zip
- 04-StringConcatVsStringBuilder_WithoutCondComp.zip
- 04-StringConcatVsStringBuilder.zip - BONUS
- 04-StringFormatVsToString.zip
- 04-StringFormatVsStringConcat.zip
- 04-OperatorNameof.zip
-
Kopie tabule na konci přednášky (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
Přednáška
-
5. přednáška
Stručný obsah:- Csharp 2018-19 - 05th Lecture.pptx
- 05-ThrowInExpression-AntiPattern.zip
- 05-InnerException_Prednaska.zip
-
Kopie tabule na konci přednášky (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
Přednáška
-
6. přednáška
Stručný obsah:- 06-ExceptionChainBlackboardExample.zip
- 06-ExceptionChain_CatchBlocks.zip
- 06-NestedExceptionsAndFinally.zip - BONUS
- 06-ExceptionFiltersAndUnhandledExceptions.zip
- 06-ExceptionChainUnhandledException.zip
-
Kopie tabule na konci přednášky (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
Přednáška
-
7. přednáška
Stručný obsah:- 07-FileStreamAndNoRights.zip
- 07-PropertyVsFieldAccess.zip
- 07-AutoimplementedPropertyInitialization.zip
- 07-ThrowInExpressionInProperties-NicePattern.zip
- 07-GetterOnlyPropertiesInCSharp6.zip
- 07-CtorNameLeakingInExceptions.zip
- 07-HuffmanNode.zip
-
Kopie tabule na konci přednášky (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
Přednáška
-
8. přednáška
Stručný obsah:- Csharp 2018-19 - 08th Lecture.pptx
- 08-PropertiesInCSharp6.zip
- 08-ParametricPropertiesAkaIndexers.zip
- 08-BenchmarkingUnknownMethods-Prednaska.zip
- 08-BenchmarkingUnknownMethod.zip
-
Kopie tabule na konci přednášky (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
Přednáška
-
9. přednáška
Stručný obsah:- Csharp 2018-19 - 09th Lecture.pptx
- 09-MethodInlining.zip
- 09-ClassesVsStructs.zip
-
Kopie tabule na konci přednášky (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
Přednáška
-
10. přednáška
Stručný obsah:- Csharp 2018-19 - 10th Lecture.pptx
- 10-StructInitialization.zip
- 10-StructMethods.zip
- 10-OutVariableDeclaration.zip
- 10-InReferences.zip
- 10-LocalRefsInCSharp7.zip
- 10-StructsInList.zip
-
Kopie tabule na konci přednášky (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
Přednáška
-
11. přednáška
Stručný obsah:- Csharp 2018-19 - 11th Lecture.pptx
- 11-Enum.zip
-
Kopie tabule na konci přednášky (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
Přednáška
-
12. přednáška
Stručný obsah:- Csharp 2018-19 - 12th Lecture.pptx
- 12-TestingGarbageCollectorBehavior.zip
-
Kopie tabule na konci přednášky (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
Přednáška
-
13. přednáška
Stručný obsah:- Csharp 2018-19 - 13th Lecture.pptx
- 13-EqualsImplementations.zip
- 13-BasicInheritance.zip
- 13-InheritanceOfPrivateMembers.zip
- 13-TypeConversions.zip
-
Kopie tabule na konci přednášky (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
Přednáška
-
14. přednáška
Stručný obsah:- Csharp 2018-19 - 14th Lecture.pptx
- 14-DoubleNotANumber.zip
- 14-BoxingBenchmark.zip - antipattern univerzální metody
-
Kopie tabule na konci přednášky (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
Přednáška
-
1. cvičení
Stručný obsah:Podmínky na zápočet ♦ struktury projektu a solution (souboryMateriály:.csproj
a.sln
), Debug vs. Release konfigurace, dokumentační komentáře (a nástroj Sandcastle), základní možnosti ladění ve Visual Studiu, Intellisense ♦ zadání úloh: Počítání slov a Četnosti slov • přehled základních tříd a metod:System.IO.StreamReader
,string.Split
;Array.Sort
, (Sorted
)Dictionary<K, V>
,SortedList<V>
- Cv01 - Csharp 2017-18.pptx
-
Kopie tabule na konci cvičení (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
Cvičení
-
2. cvičení
Stručný obsah:-
Kopie tabule na konci cvičení (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
Cvičení
-
Kopie tabule na konci cvičení (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
-
3. cvičení
Stručný obsah:-
Kopie tabule na konci cvičení (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
Cvičení
-
Kopie tabule na konci cvičení (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
-
4. cvičení
Stručný obsah:-
Kopie tabule na konci cvičení (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
Cvičení
-
Kopie tabule na konci cvičení (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
-
5. cvičení
Stručný obsah:-
Kopie tabule na konci cvičení (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
Cvičení
-
Kopie tabule na konci cvičení (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
-
6. cvičení
Stručný obsah:-
Kopie tabule na konci cvičení (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
Cvičení
-
Kopie tabule na konci cvičení (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
-
7. cvičení
Stručný obsah:-
Kopie tabule na konci cvičení (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
Cvičení
-
Kopie tabule na konci cvičení (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
-
8. cvičení
Stručný obsah:-
Kopie tabule na konci cvičení (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
Cvičení
-
Kopie tabule na konci cvičení (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
-
9. cvičení
Stručný obsah:-
Kopie tabule na konci cvičení (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
Cvičení
-
Kopie tabule na konci cvičení (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
-
10. cvičení
Stručný obsah:-
Kopie tabule na konci cvičení (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
Cvičení
-
Kopie tabule na konci cvičení (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
-
11. cvičení
Stručný obsah:-
Kopie tabule na konci cvičení (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
Cvičení
-
Kopie tabule na konci cvičení (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
-
12. cvičení
Stručný obsah:-
Kopie tabule na konci cvičení (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):
Cvičení
-
Kopie tabule na konci cvičení (pozor: po mazání, připisování a přepisování v průběhu, tj. nemusí dávat bez kontextu smysl):