Intermediate C#: Object-Oriented Programming
Classes, objects, interfaces, inheritance, dependency injection, and unit testing introduce professional application design.
Join Skill Foundry
This course includes:
Prerequisites:
Overview
Curriculum
Mentor
FAQs
What we'll cover...
Why Learn Object-Oriented Programming in C#?
Curriculum Outline
Introduction
- Get started with the course and access the samples, exercises, and solutions.
- Welcome!
- Getting the Course Materials from Github
Classes
- Learn the fundamentals of object-oriented programming with classes, methods, properties and constructors.
- Types vs Classes vs Objects
- Overview of Class Members
- Classes, Fields, and Namespaces
- Defining and Using Methods
- Exercise: Area Calculator
- Solution: Area Calculator
- Quiz: Types, Classes, and Objects
- How to Model Classes (for Beginners)
- Defining and Using Properties
- Exercise: Temperature Converter
- Solution: Temperature Converter
- Static Classes and Members
- Exercise: About Me
- Solution: About Me
- Demo: Refactoring Airport Locker Rental
- Exercise: The Guessing Game
- Solution: The Guessing Game
- Exercise: Rock, Paper, Scissors
- Solution: Rock, Paper, Scissors
- Constructor Methods
- Exercise: Slope of a Line
- Solution: Slope of a Line
Enums
- Use enumeration types for better code readabilty and type safety.
- The Enum Type
- Refactoring Rock, Paper, Scissors
- Exercise: Refactoring the Guessing Game
- Solution: Refactoring the Guessing Game
Structs
- Understand value types and how to work with struct data types.
- Value Types vs Reference Types
- The Struct Type
- Exercise: Grid Calculations
- Solution: Grid Calculations
Inheritance
- Understand inheritance concepts, polymorphism, and build hierarchical class structures.
- Introduction to Inheritance
- Modeling the Video Game Inventory
- Demo: Coding the Video Game Inventory
- Exercise: Extending the Video Game Inventory
- Solution: Extending the Video Game Inventory
- Quiz: Inheritance
Unit Testing
- Learn to write and run unit tests to ensure code quality and reliability.
- Class Library Projects
- NuGet Packages
- Introduction to Unit Testing
- Demo: Unit Testing Video Game Inventory
- Exercise: Finish Unit Testing Video Game Inventory
- Solution: Finish Unit Testing Video Game Inventory
- Exercise: TDD with the String Calculator Kata
- Exercise: Unit Testing Airport Locker Rental
- Solution: Unit Testing Airport Locker Rental
Interfaces and Dependency Injection
- Discover professional programming patterns with interfaces and dependency injection.
- Introduction to Interfaces
- Dependency Injection Basics
- Demo: Dependency Injection & Rock, Paper, Scissors
- Demo: Unit Testing Rock, Paper, Scissors with Mocks
- Exercise: DI & The Guessing Game
- Solution: DI & The Guessing Game
- Factory Methods
- Quiz: Interfaces & Dependency Injection
Capstone Projects
- Apply everything you've learned with challenging capstone projects. (These are hard!)
- Disclaimer
- Tic-Tac-Toe
- Solution: Tic-Tac-Toe
- Battleship
- Solution: Battleship
- Next Steps
How We Build Developers
Write your awesome label here.
Written Lessons That Actually Make Sense
Our written content explains complex concepts in plain English, with real examples you can quickly apply. You'll understand not just what to do, but why pros make the decisions we do.
Write your awesome label here.
Hands-On Practice That Builds Confidence
Every concept comes with code samples and exercises. You can't learn to play guitar without putting your fingers on the strings and you can't learn to code without writing a lot of code!
Write your awesome label here.
Videos That Show, Don't Just Tell
You'll see how professional developers think, debug, and refactor code. These aren't just lectures, but applied theory. See concepts actually used together!
Write your awesome label here.
Rigorous Capstone Projects That Prove Your Skills
You'll build substantial applications that demonstrate your ability to architect solutions, handle complexity, and deliver professional-quality code.
Join developers who chose...
depth over speed,
understanding over memorization, and
professional skills over participation certificates.
Frequently asked questions
Who is this course for?
This course is for C# learners who know the basics (variables, loops, simple methods) and are ready to learn how to think like a developer. It’s your bridge from beginner code to professional structure and practices.
You need to have completed the following courses or the equivalent:
You need to have completed the following courses or the equivalent:
What makes this course different from most OOP tutorials?
We don’t just explain theory! You’ll apply it in real exercises and refactor working programs. You’ll learn by doing, not memorizing, and build things that feel like real software.
Will I build projects in this course?
Yes! Object-oriented programming is one of the hardest concepts for beginners to master, because it requires a fundamental change in how you think about and approach code problems. The only way to get good is to get your hands dirty! We use engaging game projects (video game inventory systems, rock paper scissors, tic tac toe, and Battleship) to teach real-world application structure while keeping you motivated through the learning process.
You’ll refactor the capstone from the beginner course, design, build, and unit test a video game inventory model, and take on serious challenges like building a working Battleship game.
You’ll refactor the capstone from the beginner course, design, build, and unit test a video game inventory model, and take on serious challenges like building a working Battleship game.
Do I need to know testing or design patterns before taking this?
Nope! We introduce everything from scratch. The course includes class design, unit testing, dependency injection, and polymorphic design. You’ll learn what these concepts mean, how to use them effectively, and why they're required to create professional grade code that scales.
Is this course only for aspiring backend developers?
Not at all! These concepts are fundamental whether you’re aiming for backend, full stack, or just want to write cleaner, scalable code in C#.
In fact, mastering these concepts makes it much easier to learn other programming languages like Java, JavaScript, C++, Python, and PHP.
In fact, mastering these concepts makes it much easier to learn other programming languages like Java, JavaScript, C++, Python, and PHP.
Is this course part of the Skill Foundry membership?
Yes — full access is included in your membership. You’ll also unlock related content like the Collections & Databases course, ASP.NET Core, and career prep resources.
Will this course help me get a job?
It’s a big step toward that goal. Object-oriented programming, testable design, and clean architecture are core skills for junior developers. The better you understand them, the more confident (and hirable) you become.
How Hard is this Course?
We're not going to BS you. Learning OOP concepts is one of the hardest parts of learning to code because of the required change in your mindset and the way you approach problems. These are the concepts that separate beginners from professionals and are required to learn more advanced concepts.
But don't worry! Our supportive mentors and Discord community will keep you motivated and progressing.
But don't worry! Our supportive mentors and Discord community will keep you motivated and progressing.
About the Author
Eric Wise
Software Architect | Mentor | Entrepreneur
Eric isn't just another online instructor, he's a veteran software architect, multi-time tech entrepreneur, and someone who's been in every corner of the industry from tech start ups, big corporations, and freelancing.