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!

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

Asynchrony

  • 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 code: T320
Duration: 3 days
Price: 25 970 SEK

Share



BOOK NOW

Course schedule

Stockholm
2016
24-Aug
12-Oct
7-Dec

Malmö
2016
26-Sep

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.

Pre-requisites

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

Related Courses

Teachers

Eric Lavesson Eric is an analytical and quality aware consultant with passion for programming and web administration. He has long experience of for instance PHP programming and web application administration. Furthermore, he has experience and knowledge of MySQL databases and application development in .NET/C#. Tore Nestenius Consultant and trainer that helps companies with advanced problem solving and mentoring.

Contact us

Please contact us for details:
Tel: 040-61 70 720
info@edument.se
All prices excluding VAT