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".
Poslední úprava: Hnětynka Petr, doc. RNDr., Ph.D. (30.04.2019)
The goal of the course is to give students a detailed knowledge and understanding of key principles of the .NET
platform, the C# programming language and its advanced constructs. Successful completion of the course should
allow students to effectively take advantage of the .NET platform potential.
Course attendees are expected to have knowledge of object oriented and event driven programming and basic
features of C# language as covered by the course "NPRG031 Programming 2".
Poslední úprava: Hnětynka Petr, doc. RNDr., Ph.D. (30.04.2019)
Literatura -
Mark Michaelis, Eric Lippert: Essential C# 5.0, 4th Edition, Addison-Wesley Professional, 2012
Jeffrey Richter: CLR via C#, 4th Edition, Microsoft Press, 2012
Jon Skeet: C# in Depth, 3rd Edition, Manning Publications, 2013
Christian Nagel et al., Professional C# 2008, Wrox, 2008
Microsoft Developer Network Library, http://msdn.microsoft.com/library/
Poslední úprava: Ježek Pavel, Mgr., Ph.D. (04.09.2013)
Sylabus -
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.).
Compilation and execution differences between unmanaged (C++) and managed code (C#/.NET, Java).
Basic principles of JIT compilation, services provided by the CLR virtual machine, concepts of safe and unsafe code, overview of languages for .NET (C#, VB.NET, F#, C++/CLI, IronPython), pros and cons of development under the .NET platform.
Common .NET platform implementations: Microsoft .NET Framework, Mono.
Development tools, basics of performance measuring, code documentation and testing.
Value types vs. reference types (comparison to Java and C++ languages).
Memory allocations on managed heap, basic principles of Garbage Collection.
Classes and structs, interfaces, inheritance, virtual methods, (static) class constructors (comparison to Java and C++ languages).
Strings
Mutable vs. immutable types.
Generic types (comparison to generic types in Java and templates in C++).
Type variance (covariace and contravariance).
Extension methods, operator overloading, anonymous methods and lambda functions, iterator methods (comparison to C++).
Delegates and events.
Standard .NET libraries (streams, file access, collections, etc.).
Object finalization, advanced principles of Garbage Collection, basic principles of generational Garbage Collector.