Learning Path Details

C# Mastercourse from Tim Corey


Description:

Tim Corey's C# Mastercourse is the complete foundational course in learning C#. It assumes no prior programming knowledge, but even if someone already knows C#, it will fill in any gaps in their knowledge. By the end of the course, the student will be qualified to be a professional junior to mid-level developer in C#.

Key Takeaways:

This course covers everything:

  • Mastercourse Introduction
  • Getting Started
  • Our First Application
  • Our Second Application
  • Common Variables
  • Conditionals
  • Conclusion of Variables and Conditionals
  • Mini Project - Student Check
  • Loops and Sets
  • Methods
  • Mini Project - Guest Book
  • Debugging Section Introduction
  • Debugging Basics
  • Advanced Debugging
  • Debugging: Putting It All Together
  • Object-Oriented Programming Part 1: Section Introduction
  • Class Types
  • Class Options
  • Putting It Together
  • Wrapping Up Object-Oriented Programming Part 1
  • Battleship App: Section Introduction
  • Battleship App: Planning
  • Battleship App: Writing the Code
  • Battleship App: Testing
  • Object-Oriented Programming Part 2: Section Introduction
  • Interfaces and Inheritance
  • Modifiers, Abstract, and Overrides
  • Generics and Events
  • Wrapping Up Object-Oriented Programming Part 2
  • Project Types: Section Introduction
  • Class Libraries
  • Unit Tests
  • WinForms
  • WPF Core
  • ASP.NET Core Razor Pages
  • ASP.NET Core MVC
  • ASP.NET Core API
  • Blazor Server
  • Blazor WebAssembly
  • Wrapping Up Project Types Section
  • Data Access: Section Introduction
  • SQL Types
  • NoSQL Types
  • Other Data Access Types
  • Other Access Methods
  • Wrapping Up Data Access Section
  • Hotel Management App: Section Introduction
  • Hotel App: Planning
  • Hotel App: SQL Database Design
  • Hotel App: SQL Data Access Layer
  • Hotel App: ASP.NET Razor Pages Design
  • Hotel App: ASP.NET WPF Core Design
  • Hotel App: SQLite Database Design
  • Hotel App: SQLite Data Access Layer
  • Wrapping Up the Hotel Management App Section
  • Career Development Section Introduction
  • Important Career Development Questions
  • Wrapping Up the Career Development Section

Technologies Learned:

  • .NET;
  • .NET 6.0;
  • .NET Core;
  • .NET Core 3.0;
  • .NET Core 3.1;
  • .NET Framework;
  • .NET Framework 4.7.2;
  • .NET Framework 4.8;
  • .NET Standard;
  • .NET Standard 2.0;
  • Abstract Classes;
  • Access Modifiers;
  • Application Design;
  • arrays;
  • ASP.NET Core Web API;
  • ASP.NET Core Web Application (Model-View-Controller);
  • ASP.NET Core Web Application (Razor Pages);
  • Blazor Server Application;
  • Blazor WebAssembly Standalone Application;
  • booleans;
  • C#;
  • calling a method;
  • Child Classes of the Exception Class;
  • Class Library;
  • Classes;
  • Console Application;
  • CosmosDB;
  • creating a method;
  • Dapper;
  • DateOnly;
  • DateTime;
  • Debugging;
  • decimal floating point values;
  • Dictionaries;
  • do/while loops;
  • double-precision floating point values;
  • Entity Framework;
  • Event Handlers;
  • Event Listeners;
  • Events;
  • Exceptions (Class);
  • Extension Methods;
  • for loops;
  • foreach loops;
  • Generics;
  • Handling Exceptions;
  • if/else;
  • Inheritance;
  • Instatiated Classes;
  • integer values;
  • Interfaces;
  • Lambda Expressions;
  • LINQ;
  • Lists;
  • method design principles;
  • Method Overrides;
  • method parameters;
  • methods;
  • Mongo DB;
  • Multiple Catch statements;
  • MySQL;
  • Namespaces;
  • nulls;
  • Object-Oriented Programming;
  • Overloaded Methods;
  • Properties;
  • returning a value from a method;
  • SQL;
  • SQL Server Database Project;
  • SQLite;
  • Static Classes;
  • string interpolation;
  • strings;
  • switch/case;
  • Testing;
  • Text File Data Access;
  • TimeOnly;
  • try/catch;
  • try/catch/finally;
  • tuples;
  • type conversions;
  • Unit Tests;
  • Using Breakpoints;
  • Visual Studio Debugger;
  • while loops;
  • Windows Forms Application;
  • WOULD Framework;
  • WPF Application;
  • XAML;
  • xUnit Test Project;

This learning resource was completed on 1/26/2024.

Practice Projects

Dictionary

Description:

The homework on the Dictionary from the Loops and Sets section of the C# Mastercourse from Tim Corey. We are to create a Dictionary list of employee IDs and the name that goes with the ID. Fill in a few records. Then ask the user for their ID and return their name.

Technologies Used:
  • .NET;
  • .NET 6.0;
  • C#;
  • Console Application;
Code Snippet:
Dictionary<string, string> employees = new Dictionary<string, string>();

bool done = false;

do
{
	string? employeeId;
	string? employeeName;

	do
	{
		Console.Write("Enter Employee ID: ");
		employeeId = Console.ReadLine();
	} while ( string.IsNullOrWhiteSpace(employeeId) );

	do
	{
		Console.Write("Enter Employee Name: ");
		employeeName = Console.ReadLine();
	} while ( string.IsNullOrWhiteSpace(employeeName) );

	try
	{
		employees.Add(employeeId, employeeName);
	}
	catch ( ArgumentException ex )
	{
		Console.WriteLine(ex.Message);
	}

	Console.Write("Add another (yes/no): ");
	string? addAnother = Console.ReadLine();

	if ( addAnother?.ToLower() == "no" )
	{
		done = true;
	}
} while ( !done );

Console.WriteLine();

string? empId;

do
{
	Console.Write("Enter your Employee ID: ");
	empId = Console.ReadLine();
} while ( string.IsNullOrWhiteSpace(empId) );

try
{
	Console.WriteLine($"Welcome {employees[empId]}!");
}
catch ( KeyNotFoundException ex )
{
	Console.WriteLine(ex.Message);
}

Lists

Description:

The homework on Lists from the Loops and Sets section of the C# Mastercourse from Tim Corey. We are to add students to a class roster List until there are no more students. Then print out the count of the students to the Console.

Technologies Used:
  • .NET;
  • .NET 6.0;
  • C#;
  • Console Application;
Code Snippet:
List<string> classRoster = new List<string>();
bool done = false;

do
{
	Console.Write("Enter student name: ");
	string? studentName = Console.ReadLine();

	if ( !string.IsNullOrEmpty(studentName) )
	{
		classRoster.Add(studentName);

	}

	Console.Write("Any more students (yes/no): ");
	string? moreStudents = Console.ReadLine();

	if ( moreStudents?.ToLower() == "no" )
	{
		done = true;
	}
} while ( !done );

Console.WriteLine($"There are {classRoster.Count} students in the class.");

Arrays

Description:

The homework on Arrays from the Loops and Sets section of the C# Mastercourse from Tim Corey. We are to create an array of 3 names. Ask the user which number to select. When the user gives you a number, return that name. Make sure to check for invalid numbers.

Technologies Used:
  • .NET;
  • .NET 6.0;
  • C#;
  • Console Application;
Code Snippet:
string[] names = new string[] { "Tim", "Sue", "Bob" };
bool isValidNumber;
int number;

do
{
	Console.Write("Enter a number from 0 to 2: ");
	string? numberText = Console.ReadLine();

	isValidNumber = int.TryParse(numberText, out number);

	if ( number < 0 || number > 2 )
	{
		isValidNumber = false;
	}

	if ( !isValidNumber )
	{
		Console.WriteLine("That is not a valid number; please try again.");
	}
} while ( !isValidNumber );

Console.WriteLine($"The name at position {number} is {names[number]}.");

Do Loops

Description:

The homework on Do Loops from the Loops and Sets section of the C# Mastercourse from Tim Corey. We are to create a Console Application that asks the user for their name. Welcome Tim as professor or anyone else as student. Do this until the user types "exit".

Technologies Used:
  • .NET;
  • .NET 6.0;
  • C#;
  • Console Application;
Code Snippet:
bool done = false;

do
{
	Console.Write("What is your first name (type 'exit' to quit): ");
	string? firstName = Console.ReadLine();

	if ( firstName?.ToLower() == "exit" )
	{
		done = true;
	}
	else if ( firstName?.ToLower() == "tim" )
	{
		Console.WriteLine($"Hi Professor {firstName}!");
	}
	else
	{
		Console.WriteLine($"Hi {firstName}!");
	}
} while ( !done );

Mini Project—Student Check

Description:

The homework from the Mini Project—Student Check section of the C# Mastercourse from Tim Corey. We are to plan and build a Console Application that asks a user for their name and their age. If their name is Bob or Sue, address them as Professor. If the person is under 21, recommend they wait X years to start this class.

Technologies Used:
  • .NET;
  • .NET 6.0;
  • C#;
  • Console Application;
  • WOULD Framework;
Code Snippet:
Console.Write("What is your first name: ");
string? firstName = Console.ReadLine();

bool isValidAge;
int age;

do
{
	Console.Write("What is your age: ");
	string? ageText = Console.ReadLine();

	isValidAge = int.TryParse(ageText, out age);

	if ( !isValidAge )
	{
		Console.WriteLine("That is not a valid age; please try again.");
	}
} while ( !isValidAge );

Console.WriteLine();

if ( firstName?.ToLower() == "bob" || firstName?.ToLower() == "sue" )
{
	Console.WriteLine("Welcome Professor!");
}
else if ( age >= 21 )
{
	Console.WriteLine($"Welcome {firstName}!");
}
else
{
	int yearsToWait = 21 - age;
	Console.WriteLine($"You should wait {yearsToWait} years to start this class.");
}

Console.ReadLine();

Conditional Statements

Description:

The homework on Conditional Statements from the Conditionals section of the C# Mastercourse from Tim Corey. We are to create a Console Application that asks the user for their name. Welcome Tim as professor or anyone else as student. Make sure that "TIM" also gets called professor.

Technologies Used:
  • .NET;
  • .NET 6.0;
  • C#;
  • Console Application;
Code Snippet:
Console.Write("What is your first name: ");
string? firstName = Console.ReadLine();

if ( firstName?.ToLower() == "tim" || firstName?.ToLower() == "timothy" )
{
	Console.WriteLine("Hello Professor!");
}
else
{
	Console.WriteLine("Hello Student!");
}

Type Conversions

Description:

The homework on Type Conversions from the Common Variables section of the C# Mastercourse from Tim Corey. We are to capture a user's age from the Console and then identify how old they will be in 25 years, as well as how old they were 25 years ago. Print that information to the Console in natural language.

Technologies Used:
  • .NET;
  • .NET 6.0;
  • C#;
  • Console Application;
Code Snippet:
Console.Write("What is your age: ");
string? ageText = Console.ReadLine();

bool _ = int.TryParse(ageText, out int age);

int ageIn25 = age + 25;
int age25Ago = age - 25;

Console.WriteLine($"In 25 years, you will be {ageIn25} years old; 25 years ago, you were {age25Ago} years old.");

Variables

Description:

The homework on Variables from the Common Variables section of the C# Mastercourse from Tim Corey. We are to create a Console Application that has variables to hold a person's name, age, if they are alive, and their phone number. We do not need to capture these values from the user.

Technologies Used:
  • .NET;
  • .NET 6.0;
  • C#;
  • Console Application;
Code Snippet:
string firstName = "Pierre";
string lastName = "Plourde";
int age = 48;
bool isAlive = true;
string phoneNumber = "905-439-7645";

Console.WriteLine($"{firstName} {lastName} is {age} years old.");
Console.WriteLine($"Is {firstName} alive: {isAlive}");
Console.WriteLine($"{firstName}'s phone number is {phoneNumber}");
Back to List