O'Reilly logo
live online training icon Live Online training

Mastering C# 8.0 and .NET Core 3.0

A first step to becoming a .NET expert

Onur Gumus

This course will be your one-stop guide to master C# 8 and .NET Core 3. After this course, you will be able to fully leverage the language and tools to build cross-platform applications for Windows, Linux and Mac operating systems.

The course begins with an introduction to the new features of C# 8 and .NET Core 3, describing how they help in improving the performance of your application. Then you'll learn about managing and tuning the memory efficiently and understand memory-related concepts. Further, you'll learn concepts related to advanced data structures and get familiar with parallel programming patterns. Next, you will learn to how to apply GOF patterns and SOLID principles. Further, you will learn concepts from Domain Driven design and functional programming with C#. Lastly, you will learn to how to troubleshoot production problems with various tools.

What you'll learn-and how you can apply it

  • Memory management, domain driven design, and functional programming.
  • How to tackle parallelism problems efficiently and easily diagnose production site problems.

This training course is for you because...

C# and .NET Core developers who are looking to take their skills to the next level. You believe you want to further sharpen your skills for .net and C# and you want to be comfortable while tackling the problems during professional application design.

Prerequisites

  • .NET Core 2.1+ with VS Code or Visual Studio 2017 Community edition

Recommended preparation:

Materials, downloads, or supplemental content needed in advance:

Hardware: For successful completion of this course, students will require the computer systems with the following: - Processor: 1.8 GHz or higher Pentium 4 (or equivalent) - Memory: Minimum: 2 GB RAM - Recommended: 4GB - Hard disk: 10 GB

Software: - Operating system: Windows 10 (Latest Version), Mac OS or Linux. - Visual Studio 2017 Community Edition or better, with .NET Framework 4.7.2 installed or Visual Studio Code - .NET Core 2.1 installed

About your instructor

  • Onur Gumus is a lead software engineer based in Dubai. He has diverse interests in software development, architecture, Wing Chun, and chess. He spends most of his time building .NET applications. His previous experience was as a software architect at P.I. Works, where he developed several F# projects and gave internal tutorials to the developers. He is extremely passionate about F# and functional programming and hopes to spend more and more time helping developers in the community to become proficient in functional programming.

Schedule

The timeframes are only estimates and may vary according to how the class is progressing

DAY 1

Lesson 1: What’s new on C# 7 & 8 and .NET Core 3.0 ? (40 min)

  • Understanding .NET, .NET Core and .NET Standard.
  • What’s new in C# 7?
  • What’s new in C# 8?
  • What’s new in .NET Core 3?
  • Assessment Questions

Break (5 min)

Lesson 2: Managing the memory (40 min)

  • Reference and Value types in detail
  • The dance of stack and heap
  • Understanding and tuning the garbage collector
  • Using memory effectively, Span and friends.
  • Assessment Questions

Break (5 min)

Lesson 3:Data structures and how to use them (40 min)

  • Review of primitive types and when to use which one
  • Choosing your collection : Array, List, Hashset and Linkedlist
  • Immutable collections
  • Some algorithm examples
  • Assessment Questions

Break (10 min)

Lab 1: Make the algorithm faster (40 min)

Break (5 min)

Lesson 4: Parallelism, Concurrency and Asynchrony (40 min)

  • Understanding tasks and threads
  • Patterns of Parallel programming
  • Async and await
  • Thread safety
  • Programming for concurrency and gotchas.
  • Vectorization and SIMD
  • Assessment Questions

Day 2

Lesson 5: .Applied GOF patterns and SOLID (30 min)

  • Brief overview of GOF and SOLID
  • Understanding the true motivation behind GOF and SOLID
  • Let’s evolve a sample application
  • Introducing TDD and BDD
  • Assessment Questions

Break (5 min)

Lesson 6: Domain Driven Design and CQRS (40 min)

  • Review of DDD concepts
  • Aggregate Boundaries
  • ORMS: Entity Framework and NHibernate
  • Understanding CQRS

Break (5 min)

Lab 1: CRUD with ORM (15 min practice + 10 min solution)

Lesson 7: Functional and Reactive Programming (40 min)

  • Why functional programming?
  • Functional programming in C# with LaYumba
  • Reactive Extensions
  • Utilizing the Actor Model with Akka.NET
  • Reactive Streams

Break (10 min)

Lesson 8: Debugging and Troubleshooting your Production (40 min)

  • What is my application doing ?
  • Debugging and diagnosing without source: DnSpy
  • Debugging and diagnosing without source: WinDBG
  • Your swiss army knife to memory leaks and other issues: Perview
  • Replaying your execution with Intellitrace
  • Diagnosing your http calls via Fiddler
  • Assessment Questions

Break (5 min)

Lab 2: Debugging a Crash Dump (20 min practice + 10 min solution)

Lesson 9: Future Steps

  • What else do you have to learn? (5 min)
  • Q&A (10 min)