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)
Good rapport, Łukasz had time for everyone's questions and was able to help anyone who had any issue
Kelly Morris - Titian Software Poland Sp. z o.o.
Course - Selenium WebDriver in C#
Class was informative and easy to follow.
Najeeda Motala - Multichoice
Course - Advanced C# for Automation Test Engineers
Tailored to our needs
Rafal - Haleon
Course - C#.Net
Everything. Again considering the amount of concepts Fulvio covered, including detailed explanation in three days was really good. I liked that he covered a lot of concepts we as Data Engineers would require.
Florim - Jisc
Course - Programming in C# with Visual Studio
Comprehensive - covered everything we were interested in. Able to work through examples.