Intermediate C# and .Net Core
This lab-intensive program enhances your basic knowledge with advanced constructs and industry best practices. This course enables you to refine your skills, using the latest C# features to develop high-quality software solutions. From employing raw literals for cleaner code to applying tuples for improved data structures, and managing resources effectively for globalized applications, the course is designed to strengthen your programming foundation for immediate application in a multitude of projects.
Description
Overview
Intermediate C#/.Net Core Programming is a five-day lab-intensive program that enhances your basic knowledge with advanced constructs and industry best practices. Proficiency in C# is imperative for creating scalable, robust applications. This course enables you to refine your skills, using the latest C# features to develop high-quality software solutions. From employing raw literals for cleaner code to applying tuples for improved data structures, and managing resources effectively for globalized applications, the course is designed to strengthen your programming foundation for immediate application in a multitude of projects.
The curriculum is crafted to ensure a balanced mix of theoretical and practical learning, with 50% of the course dedicated to hands-on labs, mirroring real-world challenges. You will enhance your understanding of design patterns and SOLID principles, creating code that's as resilient as it is reliable. Engage in test-driven development with XUnit, and master generics to optimize your coding efforts. With an industry-expert instructor guiding you through each topic, you’ll gain invaluable insights into effective problem-solving and practical application of your new skills.
You’ll exit the course equipped with a solid understanding of intermediate C# principles, ready to be applied to your role professional work. You'll emerge with the capability to write more maintainable, efficient, and scalable code, seamlessly integrating advanced C# features into your daily development tasks.
Course Objectives
After completing this course working in a hands-on learning environment, guided by our expert team, attendees will learn to:
- Proficient Use of Advanced C# Constructs
- Application of Design Patterns and SOLID Principles
- Development of Robust Classes and Exception Handling
- Test-Driven Development with XUnit
- Effective Implementation of Generics and LINQ
- Concurrency and Asynchronous Programming
Who Should Attend
This is an intermediate-level .Net programming course, designed for experienced C# developers. This course is NOT for new developers, developers new to C#, or those without a programming background.
Course Outline
Module 1: Overview of New Features
- Apply modern C# enhancements to streamline code development and maintainability.
- Type specifiers
- Raw Literals
- Top-level statements
- Records
- Global Usings
- Tuples
- Deconstruction
Module 2: Design Guidelines
- Develop code that adheres to industry-standard design guidelines for clarity, sustainability, and effectiveness.
- Conventions
- Class Design guidelines
- Exception Design guidelines
- Common Design Patterns
Module 3: Robust Classes
- Construct robust classes with advanced property and function implementations for more dynamic and responsive code.
- Properties
- Functions
- Delegates
- Events
Module 4: Unit Testing with XUnit
- Implement test-driven development with XUnit to ensure the creation of reliable, bug-resistant applications.
- Utilizing Test Driven Development (TDD)
- Survey of Unit test frameworks
- Using XUnit
- Mocking with Moq
Module 5: Exceptions
- Master sophisticated exception handling techniques for more robust error management in applications.
- Syntax
- Exceptions vs Return code
- Testing for exceptions
Module 6: Generics
- Utilize generics to create flexible, reusable, and type-safe code structures, reducing redundancy.
- Generic Classes
- Generic Functions
- Understanding invariance
- Survey of Generics in the .Net Library
Module 7: Delegates
- Leverage delegates to design more versatile and modular code with methods as first-class objects.
- Methods as objects
- Generics and Delegates
- Delegates in the library
Module 8: Events
- Efficiently manage and respond to application events through proper event definition and handling.
- Defining
- Register/Deregister
Module 9: Lambda Expressions
- Streamline event handling and delegate instantiation using concise lambda expressions.
- Using lambdas to generate a delegate
Module 10: Inheritance
- Implement inheritance and polymorphism to create extensible and maintainable object-oriented designs.
- Syntax
- Override/Virtual
- Abstract
- Polymorphism
Module 11: SOLID Principles & Design Patterns
- Apply SOLID principles and design patterns to diagnose and refactor code smells for improved software architecture.
- Design Smells
- Single Responsibility
- Open/Close
- Liskov’s Substitution Principle
- Using SOLID to correct design smells
Module 12: Interfaces
- Design and utilize interfaces effectively to decouple code and enhance modularity and testability.
- Interface motivations and SOLID
- Interface Segregation
- Dependency Inversion
- Default interface methods
Module 13: LInQ
- Manipulate collections efficiently using LINQ queries and extension methods for more expressive data operations.
- Extension Methods
- Linq API
- Linq Query
Module 14: Attributes, Reflection & Metadata
- Employ reflection and attributes to manipulate metadata and enhance the functionality of code at runtime.
- Reflections basics
- Attributes
Module 15: Resources & Globalization
- Manage application resources and adapt to different cultures and languages for global software compatibility.
- Resource Bundles
- Specifying Language/Region
Module 16: Threads, Tasks, Async/Await
- Develop efficient, responsive, and scalable applications using advanced concurrency and asynchronous programming techniques.
- Creating Threads
- Coordinating threads
- Tasks
- Async/Await
Module 17: Basics of Entity Framework
- Leverage Entity Framework for streamlined data access and manipulation, utilizing code-first or database-first approaches effectively.
- DbContext
- Code first vs Db first
- Entities
- Mapping
Module 18: Survey of GUI Applications
- Explore and understand the latest trends in GUI application development to create intuitive and modern user experiences.
- MAUI
- Blazor
- Asp.Net
Prerequisites
Students should have development skills at least equivalent to the following course(s) or should have attended one of these as a pre-requisite: