.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
- III. Jeffrey Richter. CLR via C# Microsoft Press; 4 edition (November 25, 2012)
- IV. Jon Skeet․ C# in Depth․ Manning Publications; 3 edition (September 30, 2013)
Content
- Introduction. Compilation and interpretation. Compiler phases. Static linking and dynamic linking. Virtual machines. (2 hours)
- Overview of the .NET Framework. CIL, CLR, JIT, NGEN, CLS. Compare C ++, C # (.NET) method call performance (3 hours)
- Assemblies. Static linking vs dynamic linking. DLL hell. Anatomy of an Assembly. What is Metadata? Assembly Variations. Signing Assemblies. Global Assembly Cache. (4 hours)
- 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)
- Garbage Collector. Reference counting. Smart Pointers. Mark-Sweep Garbage Collection. .NET GC. Finalization. IDisposable. Resurrection. Weak References. Generations (3 hours)
- Delegates, Events and lambda functions (2 hours)
- Reflection and Attributes. Dynamic Invocation through Reflection. Attributes. Defining Custom Attributes. Use Emit Classes to Produce .NET Assemblies (2 hours)
- XML and JSON Serialization: (2 hours)
- 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)