Get in Touch
 Duration 35 hours

Course Outline

From Language Proficiency to Solution Design

  • Advanced C# features and their impact on design.
  • Reconstructing design intent from existing codebases.

Requirements Analysis and Domain Modelling

  • Use cases, user stories and acceptance criteria.
  • Domain models and the use of ubiquitous language.

Software Design Principles

  • Applying SOLID principles to .NET solutions.
  • Managing coupling, cohesion and dependency direction.

Design Patterns for .NET Applications

  • Selecting creational, structural and behavioural patterns.
  • Identifying patterns and anti-patterns in existing code.

Architecture Styles and Technical Decision-Making

  • Comparing layered, hexagonal and clean architecture styles.
  • Creating architecture decision records and analysing trade-offs.

Planning Solution Structure

  • Organising solutions and projects for large-scale codebases.
  • Choosing between modular monoliths and service-oriented boundaries.

Modern C# for Maintainable Code

  • Pattern matching, records and nullable reference types.
  • Utilising generics, LINQ and functional composition.

Exception Handling, Logging and Observability

  • Exception strategies and error contracts.
  • Structured logging, correlation and health checks.

Reflection, Attributes and Metaprogramming

  • Attribute-driven design and reflection use cases.
  • Source generators and compile-time code generation.

ASP.NET Core Fundamentals

  • Hosting models, dependency injection and configuration.
  • The request pipeline, middleware and filters.

Designing REST APIs

  • Resource modelling and HTTP semantics.
  • Versioning, validation and error response handling.
  • Defining API contracts with OpenAPI.

Securing .NET Applications

  • Authentication and authorisation via OpenID Connect.
  • Policy-based authorisation and secrets management.

Threat Modelling and Secure Design

  • STRIDE modelling and defining trust boundaries.
  • Conducting secure design reviews before implementation.

Data Access with Entity Framework Core

  • Modelling entities and their relationships.
  • Managing DbContext lifetimes and migration strategies.

Query Performance and Data Architecture

  • Loading strategies and avoiding eager loading pitfalls.
  • Transactions, concurrency tokens and bypassing EF when necessary.

Concurrency and Asynchronous Programming

  • Tasks, the TPL and common async/await pitfalls.
  • Synchronisation, cancellation and thread safety.

Performance Optimisation

  • Profiling and benchmarking using BenchmarkDotNet.
  • Memory management, allocations and garbage collection.
  • Caching strategies and load testing.

Testing Strategy Across Layers

  • Defining boundaries for unit, integration and end-to-end testing.
  • Designing testable architecture and using test doubles.

Deployment and Operational Readiness

  • Containers, configuration and CI/CD pipelines.
  • Production diagnostics and release safety.

Capstone: Design Review and Implementation

  • Conducting an architecture review of a case application.
  • Implementing and refactoring a feature slice.

Requirements

  • Practical experience in programming with C#
  • Functional understanding of object-oriented programming
  • Foundational knowledge of SQL and relational databases

Target Audience

  • .NET developers
  • Software engineers and technical leads
  • Developers transitioning into application design roles

Number of participants


Price per participant

Testimonials (4)

Provisional Upcoming Courses (Require 5+ participants)

Related Categories