Pokročilá práce s řetězci, základy znakové sady Unicode (kódování UTF-8, UTF-16, combining characters, atd.), podpora .NET pro Unicode, problémy související s lokalizací aplikací a jejich řešení v .NET
Vlákna, synchronizační primitiva (lock, Monitor, potomci WaitHandle), WinForms (WPF) threading model
.NET memory model, volatile operace a memory fences, lock-free a wait-free datové struktury v .NET
Koncept futures/promises a TPL (Task Parallel Library)
Základní sítová komunikace (BSD sockets).
Asynchronní volání metod a programování neblokujících operací (async/await)
Deklarativní způsoby programování a paralelizace aplikací: LINQ (to Objects), PLINQ.
Reflexe v prostředí .NET, metadata, CIL kód/assembler, generování kódu za běhu aplikace (lambda funkce a Expression Trees, CodeDOM, Mono.Cecil).
Persistence dat a serializace: příklady binární serializace, protocol buffers.
Základy aspektově orientovaného programování (AOP).
Aplikační domény a principy oddělení neznámého kódu v řízeném prostředí.
Pokročilé možnosti síťové komunikace: vzdálené volání objektů (.NET Remoting)
Dynamické programovací jazyky (IronPython, apod.) v prostředí .NET, vytváření dynamických objektů v C#.
Cílem předmětu je posluchače seznámit s pokročilými technikami programování pro platformu .NET a se specializovanými částmi knihoven platformy .NET. Po absolvování předmětu by měli mít studenti široký přehled o funkcích poskytovanými knihovnami .NET a být schopni je efektivně využít v reálných projektech nad platformou
.NET.
Předpokládá se dobrá znalost jazyka C# a základních principů platformy .NET na úrovni předmětu "NPRG035
Programování v jazyce C#".