.NET Programming

Lecturer: Ashot Vasilyan
Classes: 1 lecture per week

Short description

The course teaches how to build modern and reliable applications using the .NET framework. We look closely at the Common Language Runtime (CLR), the C# language, and the .NET framework. There will be extra emphasis on the .NET architecture, its run-time, and issues relating to parallel programming. The course includes numerous examples in C#.

Knowledge requirements

• Basic knowledge of Operating Systems
• Basic knowledge of C++ (data types, instructions, arrays, pointers, functions, classes, operator overloading)

Textbooks

  1. III. Jeffrey Richter. CLR via C# Microsoft Press; 4 edition (November 25, 2012)
  2. IV. Jon Skeet․ C# in Depth․ Manning Publications; 3 edition (September 30, 2013)

    Content
    1. Introduction. Compilation and interpretation. Compiler phases. Static linking and dynamic linking. Virtual machines. (2 hours)
    2. Overview of the .NET Framework. CIL, CLR, JIT, NGEN, CLS. Compare C ++, C # (.NET) method call performance (3 hours)
    3. Assemblies. Static linking vs dynamic linking. DLL hell. Anatomy of an Assembly. What is Metadata? Assembly Variations. Signing Assemblies. Global Assembly Cache. (4 hours)
    4. Memory management. Program Address Space. Variable attributes (Scope, Life Time, and Allocation). Stack frames and Call Conventions for C++. Pointers and Heap Allocation for C++. C# Case. Value vs. reference types. Boxing and unboxing. Structs vs. classes. ref and out in C# (3 hours)
    5. Garbage Collector. Reference counting. Smart Pointers. Mark-Sweep Garbage Collection. .NET GC. Finalization. IDisposable. Resurrection. Weak References. Generations (3 hours)
    6. Delegates, Events and lambda functions (2 hours)
    7. Reflection and Attributes. Dynamic Invocation through Reflection. Attributes. Defining Custom Attributes. Use Emit Classes to Produce .NET Assemblies (2 hours)
    8. XML and JSON Serialization: (2 hours)
    9. Intro to Multithreads. ։ Asynchronous Programming Model (APM). .Net Timers. Thread Class. Thread Pool. Cooperative cancellation between threads. BackgroundWorker Class, Event-based Asynchronous Pattern (EAP).Interlocked and Monitor Classed, lock() in C#, readwritelock. OS based synchronization, Mutex, Semaphore. Task-based Asynchronous Pattern (TAP) (6 hours)