Intermediate C#
Description
This course dives deeper into C# and .NET development, with a focus on writing efficient, maintainable, and scalable applications. You’ll expand your grasp of object-oriented programming, implement robust error handling, manage files, and work with collections and delegates — then move into LINQ, asynchronous programming, testing strategies, and package management. Throughout, the emphasis is on best practices and the modern C# capabilities that enterprise-grade development demands.
Audience
Designed for developers who already know C# basics and want to sharpen their skills for production work. Ideal for software engineers, backend developers, and anyone contributing to medium-to-large C# codebases who needs to write cleaner, faster, more testable code.
Objectives
- Apply advanced object-oriented principles including interfaces and polymorphism
- Implement structures exception handling using best practices
- Perform file operations with text and binary data
- Use and choose among generic and non-generic collections
- Create and manage delegates, events, and lambda expressions
- Query and manipulate data using LINQ and its operators
- Write asynchronous code using async and await for improved responsiveness
- Leverage reflection, nullable types, and attributes in advanced scenarios
- Manage external libraries using NuGet and resolve package dependencies
- Design and implement unit tests and test-driven development workflows
Prerequisites
Participants should have a solid grasp of C# fundamentals, including variables, control structures, methods, and basic object-oriented concepts such as classes and inheritance. Prior experience writing and running simple C# applications is expected, as this course builds upon foundational programming skills. Familiarity with using Visual Studio or a similar development environment is also recommended to follow along with practical exercises and examples.
Outline
- Module 1: Object-Oriented Programming
- Inheritance
- Polymorphism
- Interfaces
- Module 2: Exception Handling
- Introduction to Exceptions
- Handling Exceptions
- Throwing Exceptions
- Best Practices
- Module 3: File Input and Output
- Introduction to File I/O
- Reading and Writing Text Files
- Working with Binary Files
- File and Directory Operations
- Module 4: Collections
- Introduction to Collections
- Generic Collections
- Collection Initializers
- Choosing the Right Collection
- Module 5: Delegates, Events, and Lambdas
- Delegates
- Events
- Lambdas
- Module 6: LINQ
- Introduction to LINQ
- LINQ Queries
- LINQ Operators
- Module 7: Asynchronous Programming
- Introduction to Asynchronous Programming
- The async and await Keywords
- Basic Async Operations
- Module 8: Advanced Topics and Best Practices
- Nullable Types
- Attributes and Reflection
- Best Practices
- Module 9: Package Management
- NuGet Package Management
- Vetting NuGet Packages
- Resolving Dependencies
- Module 10: Testing
- Testing Paradigms
- .NET Test Projects
- Test in Isolation
- Test-Driven Development