Search, explore and find the perfect course for you

C# Master Class

So, you know C#. You've learned the syntax, learned how to write classes and interfaces, know your lists from your lambdas, and have some experience using both the C# language and the .Net framework. Perhaps you took our Beginner and Intermediate courses - or you already know what they teach. What next?

The C# Masterclass moves beyond the syntax and semantics. Its focus is on applying C#, along with selected parts of the .Net framework, to build elegant, extensible, multi-paradigm solutions to everyday problems. You'll learn how to apply classes and interfaces to achieve solid OO designs, how to make data time-travel with lambda expressions, how to re-cast traditionally imperative problems as concise Linq queries, how to tame asynchrony with C# 5's async/await keywords - and much more!

  • C# / .Net

Target audience

This course is aimed at those who have a working knowledge of C# and want to learn to apply the language in a more powerful way, taking advantage of all it has to offer.


Participants should be comfortable with programming in C#. Some previous experience with generics, lambda expressions, and Linq queries is strongly suggested.

What you will learn

Day 1

Being Effective with Visual Studio

  • Navigation and editing tips and tricks
  • Using the debugger

Classes: outside-in

  • The nature of object orientation
  • Encapsulation and hiding
  • Dynamic objects vs. class-based OO
  • What comes first: classes, methods, or fields?
  • Responsibility, and the Single Responsibility Principle
  • Invariants
  • Using Visual Studio's stubbing features
  • Command Query Segregation
  • Tell, don't ask

Relating objects

  • Late binding: the power of not knowing
  • Composition and aggregation
  • The Open Closed Principle applied
  • Interfaces, and the Interface Segregation Principle
  • Inheritance, and the Liskov Substitution Principle
  • Some common design patterns and their application

Dependency Inversion

  • The Dependency Inversion Principle
  • Coping with time by following the DIP
  • Coping with persistence by following the DIP
  • A few words on DI containers

Day 2

Generic Programming

  • Creating generic classes
  • Inheriting from generic classes
  • Using generic constraints
  • Generic interfaces
  • Generic methods
  • Using generics to implement a presentation pattern

Higher Order Programming

  • What is Higher Order Programming?
  • Lambdas expressions
  • Closure semantics, and its uses
  • Action and Func generic delegate types
  • Function generators

Reflection and attributes

  • Application domains, assemblies, types, and members
  • Reflection types
  • Walkthrough: dynamic object builder
  • Implementing custom attributes

Putting the pieces together

  • Implementing the event aggregator pattern using generic programming, higher order programming, and reflective programming

Day 3

Text processing

  • Understanding unicode: codepoints, encodings, graphemes and more
  • Regular expressions: concept, syntax, practical examples
  • The Regex + Stack + Action Pattern
  • Walkthrough: a simple wiki markup parser, done right

Advanced Linq

  • Approaching problems from a Linq perspective
  • Method syntax vs. query syntax
  • Lazy evaluation: benefits and dangers
  • Walkthrough: train timetable lookup engine
  • Set operations
  • A quick look at expression trees


  • What is asynchronous programming?
  • CPU-bound vs. IO-bound operations
  • The Task abstraction, and task-based asynchrony
  • Continuation Passing Style and ContinueWith
  • The C# 5 async and await keywords

Parallelism and Concurrency

  • Concurrency vs. parallelism
  • Locks: when you need them, and how to apply them
  • Data parallelism with parallel iteration and PLINQ
  • Task parallelism with Tasks
  • A quick look at the concurrent collections

Course info

Course code: T320
Duration: 3 days
Price: 25 970 SEK

Course schedule

5th - 7th Dec. 2016 Book now
7th - 9th Dec. 2016 Book now



Related courses

Contact us for details

+46 40 61 70 720

All prices excluding VAT