Advanced C# Programming - NPRG038
Title: Pokročilé programování v jazyce C#
Guaranteed by: Department of Distributed and Dependable Systems (32-KDSS)
Faculty: Faculty of Mathematics and Physics
Actual: from 2020
Semester: summer
E-Credits: 5
Hours per week, examination: summer s.:2/2, C+Ex [HT]
Capacity: unlimited
Min. number of students: unlimited
4EU+: no
Virtual mobility / capacity: no
State of the course: taught
Language: Czech, English
Teaching methods: full-time
Teaching methods: full-time
Additional information:
Guarantor: Mgr. Pavel Ježek, Ph.D.
Class: Informatika Bc.
Informatika Mgr. - volitelný
Classification: Informatics > Programming
Co-requisite : NPRG035
Incompatibility : NPRX038
Interchangeability : NPRX038
Is co-requisite for: NPRG057
Is incompatible with: NPRX038
Is interchangeable with: NPRX038
Opinion survey results   Examination dates   SS schedule   Noticeboard   
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".
Last update: Hnětynka Petr, doc. RNDr., Ph.D. (30.04.2019)
Literature -

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,

Source code of platform libraries for .NET,

Last update: Ježek Pavel, Mgr., Ph.D. (04.09.2013)
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#.

Last update: Ježek Pavel, Mgr., Ph.D. (04.09.2013)