Course Outline
Session 1: SOLID Principles and Clean Code
- Review of SOLID principles (Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion)
- Applying SOLID principles to C# code
- Clean code principles and best practices
- Refactoring techniques to improve code maintainability and readability
Session 2: Developing Layered Applications
- Understanding the layered architecture pattern
- Implementing separation of concerns in C# applications
- Designing and implementing presentation, business logic, and data access layers
- Dependency Injection (DI) in layered applications
Session 3: Generic Covariance and Contravariance
- Exploring covariance and contravariance in C#
- Using generic interfaces and delegates with covariance and contravariance
- Understanding in and out keywords in generic type parameters
- Practical examples and use cases of covariance and contravariance
Session 4: LINQ and Advanced Querying
- Review of LINQ basics
- Deep dive into LINQ query operators
- LINQ with complex data structures and custom types
- Performance considerations and optimization techniques
Session 5: IDisposable and Managing Resources
- Understanding IDisposable interface and the Dispose pattern
- Implementing proper resource management and cleanup
- Using the using statement and IDisposable pattern in C#
- Dealing with unmanaged resources and finalization
Session 6: Weak Events and Memory Management
- Weak event patterns in C# for event handling
- Preventing memory leaks with weak references
- Understanding memory management in .NET and the garbage collector
- Strategies for optimizing memory usage and minimizing memory leaks
Session 7: Form Philosophy and UI Design Patterns
- Principles of designing and organizing forms in C# applications
- MVVM (Model-View-ViewModel) and other UI design patterns
- Implementing data binding and commanding in WPF applications
- Handling user input and validation in forms
Session 8: Parallel Programming with Threads, Tasks, and Async/Await
- Introduction to parallel programming concepts
- Creating and managing threads in C#
- Working with Task Parallel Library (TPL) for parallel processing
- Asynchronous programming with async and await keywords
Requirements
- Participants are expected to have a fundamental understanding of C# programming concepts, including variables, data types, control flow, and basic object-oriented programming principles
Testimonials (5)
Shane is very experienced, knowledgeable, and willing to help and explain when people have questions. I liked most that Shane creates an atmosphere in which asking questions is safe and encouraged, which is extremely important to learning in my opinion.
Ryan
Course - C# for Automation Test Engineers
Tailored to our needs
Rafał - Haleon
Course - C#.Net
Flexible approach and tailoring exercises to questions and issues raised by training participants.
Maciej - DataConsult S.A.
Course - Advanced Programming in C#
Machine Translated
I mostly liked the trainer knowledge and approach.
Piotr Kucharski
Course - Introducing C# 6.0 with Visual Studio 2015/2017
I appreciated Folio's wide breadth of knowledge. Not only was he familiar with the course content, but he also knew of constructs in languages we were familiar with to make examples more meaningful to us. During intervals he shared his knowledge of technologies and solutions outside the training scope to provide insights into other solutions we could use in future (and future training).