How to learn C# and .NET, from zero to production
There are 315 lessons on this site. Nobody should read them front to back without a plan. This page gives you one, based on where you are starting from.
Pick your path
I have never programmed
An eight-week plan through C# Foundations. You will write your first program on day one and finish with two real projects.
See the plan →I code, but not in .NET
Coming from Java, Python, JavaScript or PHP? Skip what transfers, focus on what is different, and get to real .NET work fast.
See the plan →I have an interview coming
A revision order built around what interviewers actually ask, with the questions and the lessons that answer them.
See the plan →Before you start: what to install
You need exactly two things, both free, on Windows, macOS or Linux:
- The .NET SDK (version 10). It gives you the
dotnetcommand, which creates, builds, runs and tests projects. - An editor. Visual Studio Code with the C# Dev Kit extension is the lightest good option. Visual Studio (Windows) and JetBrains Rider are excellent if you already have them.
The lesson Setting Up the Modern Environment walks through both step by step, including how to check that everything works. Do not skip it: half of all "my code does not run" problems are setup problems.
Path 1 — From zero: the eight-week plan
This plan assumes five to seven hours a week. Read the lesson, then type its code yourself rather than copying it; the typing is where the learning happens. Every lesson ends with a short quiz. Use the course player's Mark Complete button so you can see your progress.
Week 1 — Your first program
- What Are C# and .NET? — the language versus the platform, and why you need both
- Setting Up the Modern Environment
- Your First C# Application — write, build and run something real
- Variables and Constants and Built-in Data Types
Week 2 — Making decisions and repeating work
- Strings and Text, Type Conversion, Operators
- Control Flow —
if,switch, loops - Methods — how to break a program into named pieces
Weeks 3 and 4 — Objects
This is the part beginners most often rush, and the part that makes everything later click. Take the full two weeks.
- Classes and Objects, Fields and Properties, Constructors
- Static Members, Access Modifiers, Encapsulation
- Value vs Reference Types — the single most important idea in the tier
- Structs, Enums
- Inheritance, Polymorphism, Interfaces — First Look, Composition vs Inheritance
Week 5 — Collections
- Arrays, Lists, Dictionaries, HashSet, Stack and Queue
- Collection Interfaces and IEnumerable<T> — First Look
Week 6 — When things go wrong, and talking to the outside world
- Exception Handling, Creating and Throwing
- File and Directory Operations, Streams
- DateTime and DateTimeOffset, Working with JSON
Week 7 — Modern C#
These are the features that make C# written today look different from C# written ten years ago. Learn them now so they never feel foreign.
- Nullable Reference Types and Null-Safe Programming
- Pattern Matching, Switch Expressions
- Records, Tuples and Deconstruction, Collection Expressions, Primary Constructors
Week 8 — Working like a developer, then build
- Debugging C# Applications, Reading Stack Traces
- Writing Clean C#, Naming Conventions, Common Beginner Mistakes
- Projects: Expense Tracker and Employee System, then the Fundamentals Challenge
After week 8 you can read and write everyday C#, structure a program with classes, handle errors and files, and you have built two applications from scratch. Continue into C# In Practice, which starts with OOP revisited and takes you through generics, LINQ, async and building a real REST API.
Path 2 — Already a developer, new to .NET
If you write Java, TypeScript, Python, Go or PHP for a living, most of Foundations will feel familiar. Read these first; they are where C# genuinely differs, and where people coming from other languages get tripped up:
- Value vs Reference Types and Structs — C# has real value types; Java and Python do not work this way
- Nullable Reference Types — the compiler tracks null for you if you let it
- Fields and Properties — properties are a language feature, not a naming convention
- Pattern Matching, Records, Primary Constructors — modern C# idioms you will see in every codebase
Then go straight to the second tier and work through it in order. The lessons that pay off fastest for a working developer:
- Generics through Covariance and Contravariance
- Delegates, Lambdas, Events
- LINQ — you will use it every day; Deferred Execution is the lesson that prevents the classic bugs
- Dependency Injection and Service Lifetimes — built into ASP.NET Core, and the source of the most common production bug in .NET apps
- Async and Await and Common Async Mistakes
- Entity Framework Core onwards for data access
- Then build the REST API project
From there, Production .NET is organised by concern — runtime, memory, architecture, ASP.NET Core, data, distributed systems, cloud, testing, production debugging — so you can go straight to whatever your current job needs.
Path 3 — Interview preparation
Interviewers for C# roles tend to probe the same handful of areas, because those are the areas where shallow knowledge shows. We keep a dedicated page of the questions that come up most, each with a direct answer and a link to the lesson that goes deeper:
If you have one week, revise in this order: value vs reference types, garbage collection, async/await and deadlocks, LINQ deferred execution, DI service lifetimes, SOLID, and EF Core tracking. Those seven topics cover a remarkable share of technical interview questions for .NET roles.
How to get the most out of a lesson
- Read it once straight through without touching the keyboard, so you know where it is going.
- Type the code. Do not paste. If a snippet does not compile, that is a good thing — read the compiler error, it is usually precise.
- Change something. Rename a variable, break a condition, add a case. Predict what will happen, then run it.
- Do the quiz at the end. Each wrong answer explains why it is wrong, which is often where the real understanding lands.
- Mark it complete and move on. Come back when you need it; the lessons are written to be referred back to, not memorised.
The course player also has a reader mode (the Aa button in the sidebar) for larger text and a distraction-free view, and a "Listen to this lesson" button if you would rather hear a lesson than read it.
Common questions
Is C# hard to learn?
C# is one of the friendlier languages to start with: the syntax is consistent, the compiler catches most mistakes before you run anything, and the error messages are unusually clear. Most people can write small working programs within a week or two of steady practice. The harder parts — async, memory behaviour, concurrency — come later, and this course covers them once the basics are solid.
How long does it take to learn C# and .NET?
With five to seven hours a week, Foundations takes around eight weeks and In Practice another ten to twelve. That is enough to build real applications and to be productive in a .NET team. Production .NET is a longer, ongoing tier that working developers come back to as they need it.
Do I need Visual Studio?
No. The free .NET SDK plus Visual Studio Code with the C# Dev Kit extension is a complete setup on Windows, macOS and Linux. Visual Studio and JetBrains Rider are excellent but optional.
Is .NET only for Windows?
Not any more. Modern .NET runs on Windows, macOS and Linux, and most production .NET services today are deployed in Linux containers. Everything in this course works on all three.
C# or Python or JavaScript — which should I learn first?
Any of them will teach you to program. C# is a particularly good first language if you want the compiler to catch your mistakes early, if you are aiming at backend, enterprise, cloud or game development (Unity uses C#), or if you want one language that scales from a beginner script to a large production system without switching.
Is this course really free?
Yes. Every lesson is free to read with no account, no trial and no paywall. The site is supported by advertising and optional reader support, and neither changes what the lessons say.
Which C# and .NET version does it cover?
The course is written against C# 14 and .NET 10, and is updated as the platform moves. Where a feature is version-specific, the lesson says so.