SubjectsSubjects(version: 945)
Course, academic year 2023/2024
   Login via CAS
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
Annotation -
Last update: doc. RNDr. Petr Hnětynka, Ph.D. (30.04.2019)
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".
Literature -
Last update: Mgr. Pavel Ježek, Ph.D. (04.09.2013)

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,

Syllabus -
Last update: Mgr. Pavel Ježek, 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#.

Charles University | Information system of Charles University |