|
|
|
||
In this course students will explore .NET platform's advanced programming techniques and internals, and
specialized parts of standard .NET libraries. Successful completion of the course should give students a good
knowledge of the wide range of features provided by the .NET platform, and allow them to effectively use the
gained knowledge in real-life projects developed for .NET platform.
Course attendees are expected to have a good knowledge of the C# language and the key .NET platform
principles as covered by the course "NPRG035 Programming in C# Language".
Last update: Hnětynka Petr, doc. RNDr., Ph.D. (30.04.2019)
|
|
||
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 Serge Lidin: Expert .NET 2.0 IL Assembler, Apress, 2006 Mark E. Russinovich, David A. Solomon: Windows Internals 5th Edition, Microsoft Press, 2009 Microsoft Developer Network Library, http://msdn.microsoft.com/library/ Source code of platform libraries for .NET, http://referencesource.microsoft.com/ Last update: Ježek Pavel, Mgr., Ph.D. (04.09.2013)
|
|
||
Strings, basics of the Unicode character set (UTF-8 and UTF-16 encodings, combining characters, etc.), Unicode support in .NET + support for application localization and related challenges. Threads, synchronization primitives (lock, Monitor, WaitHandle subclasses), WinForms (WPF) threading model. .NET memory model, volatile memory operations and memory fences, lock-free and wait-free data structures on .NET platform. Programming with futures/promises, TPL (Task Parallel Library). Basic network APIs (BSD sockets). Asynchronous method calls and non-blocking programming paradigms (async/await). Declarative programming in .NET: LINQ (to Objects), declarative program parallelization (PLINQ). .NET reflection, assembly metadata, CIL code/assembler, dynamic code generation at runtime (lambda functions and Expression Trees, CodeDOM, Mono.Cecil). Data persistence and object serialization: binary serialization, protocol buffers Introduction to aspect oriented programming (AOP). Application domains and principles of sandboxing in managed environment. Advanced network APIs: remote method invocation (.NET Remoting). Support for dynamic programming languages (IronPython, etc.) in .NET, implementing dynamic objects in C#. Last update: Ježek Pavel, Mgr., Ph.D. (04.09.2013)
|