Charles Explorer logo
🇬🇧

Advanced C# Programming

Class at Faculty of Mathematics and Physics |
NPRG038

Syllabus

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#.

Annotation

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".