
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
This lecture explains how to use the Udemy Code Exercise feature to get the most out of your training experience.
Note - See the next lecture - Lab Alternatives for a better option for labs. Rather than using the built-in Udemy code exercise mechanism, the Local labs are set up for use on a local Visual Studio environment. I strongly recommend local labs rather than the Udemy Code Exercise feature.
Even if you don't think you need this review section, do it anyway! The lab that follows sets up the starting code for the rest of the labs throughout the course!
Use this if you prefer implementing the code exercises locally, rather than on Udemy.
At the end of this lecture and lab, you will have a firm grasp of exceptions.
An interface is a lightweight type. The design of an interface is driven by the caller, which is very different from the drivers of inheritance design.
At the end of this section, you will have a new understanding of interfaces.
Generics let us write typesafe code in a way that doesn't create a lot of dependency. At the conclusion of this topic, you will be able to create and use generics.
Whether it's tuples or tulips, this is a fun topic that will explain how a lot of syntax that you will see in C# really works!
A good citizen of C#land will implement some operators. At the end of this topic, you will know how to make your classes robust with operators.
Object is the root of all classes. A robust class in C#land will override some methods from Object. At the end of this topic, you will know how to make your classes great!
Collections are great. This topic will familiarize you with collections.
Does anyone really know what time it is? Does anyone really care? After this you will know how to use localized dates and times!
Extension methods let you add methods to existing classes. Find out how by watching this lecture and completing the code exercise!
No, you cannot delegate this topic to someone else!
A paranormal event is when your instructor pops out of thin air. A C# event is a multicast delegate. Learn about the power of events with this lecture and lab.
This lesson provides the solution for the Events lab.
I love lambas. You will too after this lecture! Note, I attached a solution to the event code exercise to this lecture.
Language Integrated Query is one of the most powerful tools in .Net. After this lecture, you will have a practical knowledge of LINQ. Check out the PDF in the downloads. It covers some of the most common delegates used by LINQ.
This intermediate‑level course is designed for developers who already understand the basics of C# or have completed your introductory course. It teaches the real‑world skills needed to become a professional C# developer, with a strong focus on object‑oriented design, clean architecture, and modern .NET development practices.
You’ll learn how to design and implement classes, handle exceptions correctly, apply inheritance and polymorphism, work with interfaces, and build reusable components using generics. The course also covers delegates, events, lambda expressions, LINQ, reflection, metadata, threading, tasks, and essential features of the .NET library.
Chuck’s courses have been used by Microsoft to train their own developers and have been delivered to thousands of engineers across corporations, government agencies, and the military. His teaching style emphasizes clarity, best practices, and hands‑on learning through interactive labs and assignments with instant feedback.
By the end of this course, you’ll have the confidence and skills to build robust, maintainable, object‑oriented applications using modern C# and .NET.
What You’ll Learn
Design and implement classes with constructors, inheritance, and polymorphism
Handle exceptions correctly and build robust error‑handling strategies
Apply interfaces and dependency inversion for clean architecture
Use generics to build reusable, type‑safe components
Work with tuples, operator overloading, and extension methods
Apply delegates, events, and lambda expressions for functional programming
Query and transform data using LINQ
Use reflection and metadata for dynamic behavior
Work with threads and tasks for asynchronous programming
Strengthen your skills with hands‑on labs and real‑world exercises
Software Engineering Foundations
Object‑oriented programming
Exception handling
Interfaces and abstraction
Modern .NET Development
Generics
LINQ
Delegates, events, lambdas
Software Architecture & Design
Dependency inversion
Clean code
Reusable component design