NPRG035 Jazyk C# a platforma .NET (ZS 2018/2019)

Informace o předmětu

Semestrzimní 2018/2019
PřednášejícíPavel Ježek
CvičícíJan Pacovský
Informace v SISuSIS/Předměty/NSWI035
Informace k přednášceWeb Přednášky
Rozvrh přednáškySt 15:40 v S3
Rozvrh cvičeníPo 17:20 v SU2
Můj mailpacovsky <zav.> d3s.mff.cuni.cz

Zásadní informace ke cvičení

Tykejte mi

Informace o zápočtu

Bodové úrovně pro získání zápočtu a bonusovýc bodů ke zkoušce:
Získání, resp. překročení určitého počtu bodů v CodExu implikuje zisk určité výhody (za více bodů můžete získat více výhod) - bodové hranice se liší pro studenty s dostatečnou a nedostatečnou docházkou na cvičeních:
  • 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í).

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: 12. 7. 2019
  • Předvedení finální plně funkční verze (včetně uživatelské a programátorské dokumentace):
    • 1. deadline: 2. 8. 2019
    • 2. deadline: 13. 9. 2019
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.

Doporučená literatura

  • Mark Michaelis with Eric Lippert: Essential C# 5.0, Addison-Wesley, 2013 (lze koupit např. na Amazon UK)
  • Jeffrey Richter: CLR via C# (4th Edition), Microsoft Press, December 2012 (lze koupit např. na Amazon UK)
  • Jon Skeet: C# in Depth (3rd Edition), Manning Publications, September 2013 (lze koupit např. na Amazon UK)
  • blog Erica Lipperta (bývalý člen C# týmu v Microsoftu): Fabulous Adventures In Coding
  • C# Language Specification 5.0
případně
  • Christian Nagel, Evjen, Jay Glynn, Karli Watson, Morgan Skinner: Professional C# 4.0 and .NET 4, Wrox, John Wiley & Sons, March 2010 (lze koupit např. na Amazon UK)

Náplň cvičení

  • Všechny domácí úkoly postupně najdete v ReCodExu pro NPRG035 (recodex.mff.cuni.cz). Tam je také řešte a odevzdávejte. Vaše řešení se v CodExu překládá s implicitním nastavením Mono C# překladače verze 2.6.1 (= plná optimalizace IL kódu) a spouští na 32-bitové Mono VM s implicitním nastavením (= zapnuté všechny univerzální optimalizace JITu). POZOR: Na úkoly zadané na cvičení je standardní deadline 7 dní (tj. do začátku příštího cvičení)!

  • 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 NPRG035 v tomto akademickém roce a přicházejí o možnost uznání splněných povinností v roce příštím; případně bude disciplinární komisi UK MFF doporučeno jejich vyloučení ze studia!

  • 1. cvičení
    Stručný obsah:
    Podmínky na zápočet ♦ struktury projektu a solution (soubory .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>
  • 2. cvičení
    Stručný obsah:
    Oprava úkolů, zadání nové úlohy
    Materiály:
      Link na rozcestník Microsoftu s návodem, jak psát kód hezky: Guidelines

  • 3. cvičení
    Stručný obsah:
    Nástroje k porovnání změn: diff, KDiff, V TotalCMD - Files Compare by content. UnitTesty MSTest (součástí VS) nebo nUnit / xUnit. Zadání nové úlohy: zarovnání více souborů, pro její řešení by se mohl hodit design pattern: Factory.
    Postup na zprovoznění MSTestu
    • Do resources v projektu testů přidat původní projekt
    • Do zdrojového kódu přidat řádek [assembly: System.Runtime.CompilerServices.InternalsVisibleTo("")], doplnit assably name pro projekt testů
    • V testech lze používat using s původním namespacem
    • V testech používat Assert ( Microsoft.VisualStudio.TestTools.UnitTesting.Assert )
    Materiály:
  • 4. cvičení
    Stručný obsah:
    Unit testy, TDD - test driven development, programming guidelines, design patterny - Wrapper, Adapter, Factory. MVC - Model-view-controller
  • 5. cvičení
    Stručný obsah:
    Unit testy, TDD - test driven development, debugging, Huffman, Návrhový vzor Singleton.
  • 6. cvičení
    Stručný obsah:
    Cvičení 5.11.2018 odpadlo. Optimalizace kódu, mikrooptimalizace, zamyslet se co nastává, jak často. Uvažovat nad designem aplikace, kdy se vyplatí použít polymorfizums a kdy ne. Přemýšlet před tím než začnete programovat.
  • 7. cvičení
    Stručný obsah:
    Cvičení 12.11.2018
  • 8. cvičení
    Stručný obsah:
    Cvičení 19.11.2018 br>
  • 9. cvičení
    Stručný obsah:
    Cvičení 26.11.2018
  • 10. cvičení
    Stručný obsah:
    Cvičení 3.12.2018
  • 11. cvičení
    Stručný obsah:
    Cvičení 10.12.2018 Visitor patern, 1. pro lehké přidání nové operace (bez modifikace dll); 2. v codexu zmíněná - visitor pattern
  • 12. cvičení
    Stručný obsah:
    Cvičení 17.12.2018
  • 13. cvičení
    Stručný obsah:
    Cvičení 24.12.2018 odpadlo.
  • 14. cvičení
    Stručný obsah:
    Cvičení 31.12.2018 odpadlo.
  • x. cvičení
    Stručný obsah:
    Cvičení 7.1.2019 příprava na test.
Logo of Faculty of Mathematics and Physics
  • Phone: +420 951 554 267, +420 951 554 236
  • Email: info<at-sign>d3s.mff.cuni.cz
  •  
  • How to find us?
Modified on 2018-10-12