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 (10)
I mostly liked the trainer knowledge and approach.
Piotr Kucharski
Course - Introducing C# 6.0 with Visual Studio 2015/2017
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
the many examples and demos
David
Course - C# for Automation Test Engineers
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).
Raphael - Markit Valuations Limited
Course - Developing Desktop Applications with Visual Studio 2012, VB.NET and SQL Server 2012
Just the overall exposure. Very helpful.
Travis - Beckman Coulter
Course - Introduction to Blazor
The trainor is knowledgeable about the topic. He is easily to approach if you have questions. Of course, he shared his knowledge to the best he can.
Minette Mirzi Dela Cruz - Electronic Commerce Payments Inc.
Course - Programming in ASP.NET MVC 5
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
Colin approached the subject in a way, and using language in a way that made it easy to understand. He managed to cover a vast amount in a small time without making it seem like "Information Overload". The training was done in a way that ensures you to take in information and use it going forward, rather than detaching each part from the next.
David - Sepura Plc
Course - Programming in C#
Well explained.