Rozdíly mezi prekladem/behem nerízeného (C++) a rízeného kódu (C#/.NET, Java).
Základní principy JIT prekladu, funkce virtuálního stroje CLR, koncept safe/unsafe kódu, prehled jazyku pro .NET (C#, VB.NET, F#, C++/CLI, IronPython), výhody a nevýhody platformy .NET.
Implementace platformy .NET: Microsoft .NET Framework, Mono.
Vývojové nástroje, základy merení výkonu aplikací, dokumentování kódu.
Hodnotové vs. referencní typy (srovnání s jazyky Java a C++).
Alokace pameti na halde, základní principy Garbage Collection.
Trídy a struktury, rozhraní, dedicnost, virtuální metody, (statické) class konstruktory (srovnání s jazyky Java a C++).
Práce s retezci
Mutable vs. immutable datové typy.
Generické typy (srovnání s generickými typy v jazyce Java a se šablonami v C++).
Variance datových typu (kovariance a kontravariance).
Extension metody, pretežování operátoru, anonymní metody a lambda funkce, iteracní metody (srovnání s C++).
Delegáti a události.
Standardní knihovny .NET (soubory, kolekce, atd.).
Finalizace objektu, pokrocilé principy Garbage Collection, princip generacního Garbage Collectoru.
Cílem předmětu je posluchače detailně seznámit s klíčovými principy platformy .NET, s jazykem C# a jeho pokročilejšími konstrukcemi. Po úspěšném absolvov ání předmětu by měli být studenti schopni efektivně využívat výhod platformy .NET.
Předpokládá se znalost objektově orientovaného a událostmi řízeného programování a základních rysů jazyka C# na úrovni předmětu "NPRG031 Programování 2".