Before writing C# code, you need to master basic programming concepts, OOP, the CLI, and Git. In this episode you will also set up the .NET SDK, choose an IDE, and verify your first installation with a simple console project.

Welcome to the Learn C# series! This series takes you from mastering C# — Microsoft's modern programming language for backend, desktop, mobile, and game development — from conceptual foundations to production readiness. There are 23 episodes organized into six phases, all built on top of the dotnet CLI and the C# language.
But before writing your first line of code, there are some basic skills and software you must have. Why are these prerequisites important? Because C# is not just a language whose syntax you memorize — it runs on top of the .NET platform, with the concepts of a managed runtime, garbage collection, and a very large library ecosystem.
This episode 0 is your roadmap: we will make sure your basic skills are in place, set up your environment, install the .NET SDK, choose an IDE, and perform your first verification. Once this episode is done, the rest of the series can be followed comfortably.
You must be comfortable with variables, data types, control structures like if, for, and while, as well as functions. C# is also a heavily object-oriented language, so first understand the concepts of class, object, inheritance, and polymorphism. You don't need to memorize C# syntax yet — what matters is that you understand the concepts; we'll break down the syntax starting in episode 3.
Most interaction with .NET happens through the terminal. Get comfortable with the command line: navigating directories, running programs, and reading error output. Also master Git for versioning, because every project in this series is managed like a professional project. Finally, pick one editor and really get to know it — keyboard shortcuts, the built-in terminal, and how to open a project.
Episode 14 will cover async programming in depth. For now, just understand the idea: when a program waits for a slow operation such as a network or disk call, it must not freeze. This concept will become the foundation when we use async/await in many of the following episodes.
The main component you must install is the .NET SDK. The SDK contains the C# compiler, the runtime, and the dotnet CLI in a single package. For this series we use .NET 8 LTS, the most stable version for production. On Ubuntu or Debian, install it via apt:
sudo apt-get update
sudo apt-get install -y dotnet-sdk-8.0Alternatively, use the dotnet-install script so you don't depend on apt:
curl -sSL https://dot.net/v1/dotnet-install.sh | bash -s -- --channel 8.0Both approaches are valid. The --channel 8.0 argument in the script above selects the recommended LTS release channel. When finished, verify:
dotnet --version
dotnet --list-sdksThe dotnet --version command shows the active SDK version, while dotnet --list-sdks lists all installed SDKs. If the output shows version 8.0 or newer, the installation was successful.
You're free to choose the IDE that feels most comfortable:
For the whole series, the recommendation is VS Code + C# Dev Kit because it's lightweight and runs on every operating system.
If you're only writing console or web applications, the .NET runtime is already available automatically through the SDK. When developing Windows desktop applications like WPF or WinForms in episode 21, you'll need the Windows SDK and the net-windows target framework supported by that SDK.
Git is mandatory from the start. Install and verify it:
git --versionFor hardware, the minimum recommendation is 8GB of RAM and a dual-core processor. The C# compiler and IDEs consume quite a lot of resources on large projects, so 8GB is a reasonable lower bound. Leave at least 2GB of free disk space for the SDK and the NuGet cache.
Now let's prove that your environment works. Create a new console project:
mkdir belajar-csharp
cd belajar-csharp
dotnet new console -n HelloCSharpThe dotnet new console -n HelloCSharp command creates a new C# project using the console template. Open the Program.cs file and adjust its contents:
Console.WriteLine("Hello, C#!");Then run the project:
dotnet run --project HelloCSharpIf the output displays Hello, C#!, your toolchain is ready. The dotnet run command compiles and then runs the program. We'll break down this project structure in episode 2.
Key takeaways:
dotnet --version displays version 8.0 or newer.dotnet new console, then dotnet run.In the next episode 1 we will discuss the history, background, and why you need C# — from the birth of C# 1.0 in the .NET Framework, the changes to the release model up to .NET 8, to C#'s position as the primary language of enterprise applications. Make sure your environment is ready, because the Learn C# journey is just beginning!