Intermediate Programming with C#

While you can create a C# program with just variables and control flow, C# is an object oriented language (OOP). This means you organize your code into objects which interact with each other. This course will provide the basics of OOP by introducing you to value types and reference types. By Brian Moakley.

Leave a rating/review
Save for later

Learning path

This is part of the Unity for Beginners learning path. View path.

Part 1: Working with Value Types

Toggle description

In Part 1 of this course, you'll learn about the basics of working with value type objects and how to create your own.

Structs 8:48
Toggle description

Let's talk structs: learn how to create a struct and why using them can assist in grouping data together.

Toggle description

In this challenge, you'll create an object that contains data which you'll print to the screen.

Methods 7:55
Toggle description

In this episode you'll be introduced to the concept of methods and how to define them on your objects.

Toggle description

Challenge time! In this episode, you will try writing your very own first method. Give it a shot!

Tuples 10:02
Toggle description

Let's talk tuples: here you'll learn how to use tuples to return multiple values from a single method.

Properties 8:17
Toggle description

This episode introduces you to the concept of properties and how they can save you time while writing code.

Toggle description

Challenge time! Your task in this episode is to write your own custom property to set and get values.

Toggle description

Let's talk about constructors. In this episode, you will be introduced to constructors and find out how they are used.

Toggle description

Challenge time! In this challenge, you'll write your own constructor to set the values of a score object.

Namespaces 8:52
Toggle description

In this episode, you'll be introduced to namespaces and how they are useful to prevent namespace collisions.

Conclusion 2:23
Toggle description

Now that you have an understanding of value type objects, it's time to move on to Part 2, where you'll learn about reference objects.

Part 2: Working with Reference Types

Toggle description

Welcome to Part 2! Here, you'll learn about reference types and how they are managed differently in memory.

Classes 9:12
Toggle description

This episode shows how to create a reference type object by way of the class and shows the difference between value type objects.

Toggle description

Inheritance allows you to inherit code from other objects, which can be quite powerful for avoiding reuse.

Toggle description

Challenge time! Are you ready to create a family of objects? This challenge will get you started.

Toggle description

This episode introduces the concept of overloading - you'll learn how to create two methods with the same name.

Overriding 9:00
Toggle description

Sometimes you need to override your parent method to provide your own. This episode shows you how.

Abstract 5:12
Toggle description

Learn the difference between a normal class and abstract class, and the implications of being abstract.

Toggle description

This episode shows the difference between a class constructor versus a struct constructor, and what it means to have a constructor chain.

Static 9:24
Toggle description

This episode introduces the static keyword and how it can be used to define class level variables.

Interfaces 9:56
Toggle description

Interfaces allow you to define behaviors that classes must implement. Watch this video to find out how!

Polymorphism 10:49
Toggle description

This episode teaches you what it means to be polymorphic and how you can use it to make your code dynamic.

Conclusion 1:45
Toggle description

Course complete! You should now have a good grasp of objects and how to use them to improve your code.

Up next

Game Tech
C# Collections, Lambdas, and LINQ
Looking to have objects contain other objects? Looking to call code on demand? Want to query your collecti... more



Brian Moakley


Christine Sweigart


Adriana Kutenko


Over 300 content creators. Join our team.