This is the last page before any setup, and it's short. It covers what the two explanation styles are for and how the course knows which computer you're on. It also covers what the exercises do with the code you type. Last, it says which parts of learning C# happen on your own machine instead of in the browser.
Two explanations and your setup
Almost every idea here is explained two ways, and you choose which one you see. Textbook is the exact version, with the proper words that C# programmers and documentation use. Plain English is written for a newcomer, in everyday words, and it explains each new term the moment it shows up. Both say the same things. Plain English isn't a "lite" version. Use the switch above each explanation to flip between them. The page remembers which one you like.
Some steps depend on your computer, like how to open a terminal. Those steps come in tabs, one per option. Tell the course your setup one time, in the My setup panel on the course page. It asks two things. First, which operating system you use: Windows, macOS, or Linux. Second, which app you'll write C# in. Chapter 1 helps you choose between Visual Studio, Rider, VS Code, and just using the terminal. After that, every tabbed block opens on your choice.
Most ideas in this course are explained twice, side by side. The Textbook lane is precise: it uses the correct terms and states the rules in full, the way documentation or an interview question would. The Plain English lane says the same thing for someone meeting it for the first time, in everyday words, with each new term explained where it appears. The two lanes make the same claims; neither is a shortcut. A switch above each explanation flips between them. The choice sticks as you move through the course.
Some instructions differ by computer. Those appear as tabs. The course has two tab groups, set once under My setup on the course page or in Settings. One is your operating system: Windows, macOS, or Linux. The other is your environment, the app you'll write and run C# in: Visual Studio, Rider, VS Code, or the plain command line. Picking a tab in any lesson changes it everywhere. If a block doesn't offer your choice, it shows its first tab and leaves your setting alone.
Here's a small taste of an environment-tabbed block. Each tab shows how you'll start a program once Chapter 1 has set that app up.
Visual Studio 2026 runs on Windows. Press Ctrl+F5 to run your program, or F5 to run it under the debugger (a tool that can pause the program on any line so you can look around; Chapter 1 §5 shows you how).
JetBrains Rider runs on Windows, macOS, and Linux. Click the green Run arrow in the toolbar to run your program, or the bug icon next to it to run it under the debugger.
VS Code runs on Windows, macOS, and Linux, with Microsoft's C# Dev Kit extension added. Press F5 to run your program under the debugger, or Ctrl+F5 to run it without.
Any text editor plus a terminal works. In the folder that holds your file, type:
dotnet run hello.cs
The apps in the other tabs run this same dotnet tool underneath.
Worked example
Setting up once
-
1
Sam uses a MacBook and plans to use VS Code. On the course page, Sam opens My setup and picks macOS and VS Code.
-
2
In Chapter 1, the install steps open straight on the macOS tab, and the "run your program" steps open on VS Code. Sam never has to hunt for the right tab.
-
3
Later Sam wants to try Rider and clicks its tab in a lesson. Every environment tab in the course now opens on Rider, because picking a tab anywhere updates the setting everywhere.
-
4
One block only covers Visual Studio and the command line. It opens on its first tab, Visual Studio. Sam's Rider choice stays saved for the next block that has it.
Practice: Explanations, tabs, and My setup (4 problems · doesn’t affect your progress)
Why do some steps in a lesson come as a row of tabs?
Right on try — credit. Right — the answer had already been shown, so no credit this time. Next try is worth Answer shown after three tries — this one no longer earns credit. You chose to see the answer — this one earns no credit.
The tabs aren't levels. They're the same step written for different computers.
A tabbed step isn't optional. You follow the tab that matches your machine.
You only need the tab for your own setup. The others are for people on other computers.
Why
Opening a terminal or installing a tool is done differently on Windows, macOS, and Linux, and in each app. Tabs hold one version per choice, and the course opens yours.
The step differs by operating system or app
Where do you tell the course, once, which operating system and environment you use?
Right on try — credit. Right — the answer had already been shown, so no credit this time. Next try is worth Answer shown after three tries — this one no longer earns credit. You chose to see the answer — this one earns no credit.
You can click a tab in a lesson, and that updates your setting everywhere, so you never need to repeat it per block.
Every tabbed step covers Windows, macOS, and Linux where they differ.
It's a setting you pick yourself, on the course page or in Settings.
Why
My setup stores your operating system and environment, and every tabbed block opens on them.
My setup, on the course page
Priya's My setup says Windows and VS Code. In one Chapter 1 lesson she clicks the Rider tab to see what it looks like. Which tab does the next environment block open on?
Right on try — credit. Right — the answer had already been shown, so no credit this time. Next try is worth Answer shown after three tries — this one no longer earns credit. You chose to see the answer — this one earns no credit.
Clicking a tab is a way of changing the setting. Her saved choice is now Rider.
The first tab is only a fallback for a block that lacks your choice. This block has Rider.
The choice isn't kept per lesson. One click updates it everywhere in the course.
Why
Picking a tab in any lesson updates the setting everywhere. From then on, environment blocks open on Rider until she picks another one.
Is clicking a tab just a peek, or does it change something?
Rider
Omar's setup is Linux and Command line. One block offers only Visual Studio, Rider, and VS Code, so it opens on Visual Studio. The next block offers all four. Which tab does it open on?
Right on try — credit. Right — the answer had already been shown, so no credit this time. Next try is worth Answer shown after three tries — this one no longer earns credit. You chose to see the answer — this one earns no credit.
Showing the first tab as a fallback doesn't change the setting. Only a click does that.
Nothing moved his choice to Rider. The earlier block just showed its first tab.
A tabbed block always opens on some tab. When it has your choice, it opens on that.
Why
The first block lacked his choice, so it showed its own first tab and left his setting alone. The second block has Command line, so it opens there.
Did Omar click anything in the first block?
Command line
Checks, practice, and bug hunts
You'll meet two kinds of question set. A check sits in the middle of a lesson and asks a few questions picked at random from a bigger pool, so coming back later gives you different ones. Checks are marked. They also help the course decide what to show you again later for review.
A practice set comes at the end of a section. It's a short ladder of 4 to 6 problems that always come in the same order. First comes one about the idea itself. Then there's an easy one, a normal one, and a twist, and last comes the one with a trap. Practice isn't marked. It's there because reading about something and doing it are different skills.
A bug hunt gives you a short program with mistakes planted in it. It tells you up front how many there are. A mistake in a program is called a bug. Sometimes you just click the broken lines. Sometimes you edit the code to repair it and press Check, and it tells you which mistakes you've fixed and whether the code is still written correctly.
A check (the questions set inside a lesson) draws a few questions at random from a larger bank, so a revisit shows a different mix. Your answers are graded and feed your progress and review schedule. A practice set is a fixed ladder of 4 to 6 problems, always in the same order. It opens with a question about the idea, then climbs through a basic case, a typical one, and a variation, and ends on the problem with the catch in it. Practice is ungraded; it exists so you can do the thing, not just read about it. Each chapter ends with review practice drawn from all its sections.
A bug hunt is a short program with planted mistakes, and it always tells you how many. It comes in two forms. In spot mode you click the line or lines that are wrong. In fix mode you edit the code in place and press Check; the checker then reports whether each planted mistake is gone and whether the code is still valid C#.
Bug hunt, spot mode
This program has 1 mistake that stops it from building. Click the line that's wrong.
Loading interactive…
Right on try — credit. Right — the answer had already been shown, so no credit this time. Next try is worth Answer shown after three tries — this one no longer earns credit. You chose to see the answer — this one earns no credit.
What this task checks
Structure checked automatically. Whether your ideas are convincing isn't graded, so reread with the checklist.
The compiler says
A model answer
Correct answer
Also accepted:
Why
Why
Total and never closes it, so the compiler reads the rest of the line as text and can't find where the instruction ends. Adding the closing quote right after 12 fixes it.Worked example
Working a bug hunt
-
1
The task says "1 mistake." Believe it. You're looking for one line. Once you've found a clear culprit, you can stop.
-
2
Read top to bottom, checking one thing per line: does every opening quote have a closing quote? Every
(a)? Does every instruction end in;? AreConsoleandWriteLinespelled with their capitals? -
3
Line 1 passes every test. Line 2 has
"Total: 12with no closing quote before the). That's it. -
4
In fix mode you'd add the missing
"and press Check. If the checker still says the code isn't valid C#, the fix introduced a new problem; compare your line character by character with a working one above it.
Check your understanding (counts toward your progress)
How do the Textbook and Plain English explanations relate to each other?
Right on try — credit. Right — the answer had already been shown, so no credit this time. Next try is worth Answer shown after three tries — this one no longer earns credit. You chose to see the answer — this one earns no credit.
Plain English isn't a trimmed version. It says everything, with each new term explained as it appears.
Both are correct. They differ in wording, not in accuracy.
They cover the same idea side by side. Read whichever one works for you.
Why
The two lanes carry the same content. Textbook uses the exact terms; Plain English translates them for someone meeting them for the first time.
Bug hunt, fix mode: this program has 1 mistake. Repair it.
Right on try — credit. Right — the answer had already been shown, so no credit this time. Next try is worth Answer shown after three tries — this one no longer earns credit. You chose to see the answer — this one earns no credit.
What this task checks
Structure checked automatically. Whether your ideas are convincing isn't graded, so reread with the checklist.
The compiler says
A model answer
Why
Line 1 opens a quote before Level and never closes it, so the text runs off the end of the line (CS1010, "newline in constant"). Close it after complete.
Correct answer
Also accepted:
Why
Every opening quote needs a closing quote.
Sort each description: is it a check or a practice set?
Right on try — credit. Right — the answer had already been shown, so no credit this time. Next try is worth Answer shown after three tries — this one no longer earns credit. You chose to see the answer — this one earns no credit.
What this task checks
Structure checked automatically. Whether your ideas are convincing isn't graded, so reread with the checklist.
The compiler says
A model answer
Why
Checks draw a random handful from a bank and are graded. Practice sets are fixed, ordered ladders that end on the tricky case and aren't graded.
Correct answer
Also accepted:
Why
One of the two is random and graded; the other is a fixed ladder.
Put the steps for working a fix-mode bug hunt in a sensible order.
Right on try — credit. Right — the answer had already been shown, so no credit this time. Next try is worth Answer shown after three tries — this one no longer earns credit. You chose to see the answer — this one earns no credit.
What this task checks
Structure checked automatically. Whether your ideas are convincing isn't graded, so reread with the checklist.
The compiler says
A model answer
Why
Know how many mistakes to look for, find them line by line, repair, check, and if the checker still objects, your edit probably added a new problem.
Correct answer
Also accepted:
Why
You can't compare results before you've pressed Check.
Practice: Work a bug hunt (4 problems · doesn’t affect your progress)
Sort each instruction by the kind of bug hunt it belongs to.
Right on try — credit. Right — the answer had already been shown, so no credit this time. Next try is worth Answer shown after three tries — this one no longer earns credit. You chose to see the answer — this one earns no credit.
What this task checks
Structure checked automatically. Whether your ideas are convincing isn't graded, so reread with the checklist.
The compiler says
A model answer
Why
In spot mode you only mark the broken lines. In fix mode you repair the code in place and press Check.
Correct answer
Also accepted:
Why
A shop's checkout screen won't build, and the hunt says there is 1 mistake. In spot mode, which line do you click?
Right on try — credit. Right — the answer had already been shown, so no credit this time. Next try is worth Answer shown after three tries — this one no longer earns credit. You chose to see the answer — this one earns no credit.
What this task checks
Structure checked automatically. Whether your ideas are convincing isn't graded, so reread with the checklist.
The compiler says
A model answer
Why
Line 2 starts with console in lower case. C# is case-sensitive, so the compiler doesn't know that name and reports CS0103.
Correct answer
Also accepted:
Why
Compare how each line starts.
Bug hunt, fix mode: this weather program has 1 mistake. Repair it so both lines print.
Right on try — credit. Right — the answer had already been shown, so no credit this time. Next try is worth Answer shown after three tries — this one no longer earns credit. You chose to see the answer — this one earns no credit.
What this task checks
Structure checked automatically. Whether your ideas are convincing isn't graded, so reread with the checklist.
The compiler says
A model answer
Why
Line 2 opens a ( and never closes it. Add ) after the closing quote, before the ;.
Correct answer
Also accepted:
Why
Count the brackets on line 2.
A spot-mode bug hunt says the program has 2 mistakes. You've clicked one line that is clearly wrong. What should you do next?
Right on try — credit. Right — the answer had already been shown, so no credit this time. Next try is worth Answer shown after three tries — this one no longer earns credit. You chose to see the answer — this one earns no credit.
The count in the task is exact. With only one of two found, the hunt isn't finished.
Mistakes aren't always next to each other. Guessing a neighbour isn't reading.
Spot mode only asks you to click lines. You don't type anything at all.
Why
A bug hunt always tells you how many mistakes it planted. Keep checking each line's quotes, brackets, semicolons, and capitals until you've found both.
How many mistakes did the task promise?
Keep reading; one more line is wrong
What the page checks, and what you run yourself
When you type code into a question on this site, the site never runs it. Your code goes to our server, and a C# parser looks at it. A parser is a program that reads code the way a grammar checker reads a sentence. It can tell whether the code is written correctly, and whether you used the piece the question asked for. It can't tell what your code would do if you ran it, just like a grammar checker can't tell whether a sentence is true. It also doesn't know whether a name you typed really exists.
So where do the outputs on the pages come from? Before a page goes live, our build runs every example program on the real C# tools, the same free kit you'll install in Chapter 1. Then it checks that the output on the page matches what really printed. If it doesn't match, the page isn't published. None of the outputs were typed in by a person.
Actually running your own code happens on your own computer. In Chapter
1 you'll run your first program with a command, dotnet run. From
Chapter 3, every lab arrives with tests, small extra programs
someone already wrote that check whether your program works, and a
command runs them all for you. The debugger, a tool that pauses your
program so you can watch it one line at a time, also runs on your
computer.
Code you type on a lesson page is never compiled or run. It's sent to the course's server and checked by a C# parser: a program that reads source code and works out its structure, without translating or running it. The parser decides whether the code is valid C#, and whether it uses what the task asked for, such as a particular statement. That makes the checks fast and safe, and it sets their limits. A parser knows the shape of your code, not what the code would do when run. It can't know that a name you used doesn't exist anywhere, or what the program would print.
So anything a page shows a program doing was produced ahead of time. That covers the output under a snippet and the answer to a predict-the-output question. The course's build runs every such program on the real .NET SDK, the kit of tools (the C# compiler among them) that you install in Chapter 1, and it fails if the page doesn't match. No output on a page was typed by hand.
Running is your machine's job. From Chapter 1 you'll run small programs
with dotnet run. From Chapter 3, each lab comes with tests already
written, small programs that check your work, and you run them with
dotnet test. Stepping through a program line by line in the debugger
is also local.
On the page, or on your machine?
Sort each activity by where it happens.
Loading interactive…
Right on try — credit. Right — the answer had already been shown, so no credit this time. Next try is worth Answer shown after three tries — this one no longer earns credit. You chose to see the answer — this one earns no credit.
What this task checks
Structure checked automatically. Whether your ideas are convincing isn't graded, so reread with the checklist.
The compiler says
A model answer
Correct answer
Also accepted:
Why
Why
dotnet run, running a lab's tests, stepping through code in the debugger, and seeing what your own changed program prints all need your machine.Worked example
Checked is not the same as run
-
1
A fill-in-the-blank question asks for the line that prints a stored greeting. Earlier in that program, the greeting was stored under the name
greeting. Priya typesConsole.WriteLine(greting);, one letter short, and presses Check. -
2
The parser looks at shape.
gretingis a perfectly well-formed name, the brackets match, and the line ends in;. If the question only asked for "a printing statement," the shape is right. -
3
The real compiler, on Priya's machine, would find no such name as
gretingand stop with an error. The parser can't know that, because it never looks up what names mean. That's why careful questions check for the exact text they need. It's also why labs are run for real. -
4
The habit that follows: when a page check passes, you've shown the shape is right. When a program runs on your machine and its tests pass, you've shown it works.
Worked example
Trusting an output you didn't run
-
1
A lesson shows a three-line program and, under it, the output box with
Hello!,Welcome to C#., and7. -
2
That box wasn't typed in by the author. When the course was built, the program ran on the .NET SDK and the box was compared with what it printed. A mismatch would have stopped the page from being published.
-
3
So when your prediction disagrees with a page's output, the page is right and your reading has a gap. That's the most useful moment to slow down and trace the program again, line by line.
Professional habit: when a program surprises you, run it. Reading code closely is a skill this course trains hard. Still, a real run on your own machine settles an argument faster than rereading does.
Where this goes next
Chapter 1 §5 is where you pick your environment for real, and your My setup choice from this page decides which tab each later "run it" step opens on. The first lab with prewritten tests arrives in Chapter 3, and Chapter 1 §5 runs a program under the debugger once. Chapter 26 is the full debugging chapter. Every bug hunt from Chapter 1 on works the way this page described.
Check your understanding (counts toward your progress)
Sort each activity by where it happens.
Right on try — credit. Right — the answer had already been shown, so no credit this time. Next try is worth Answer shown after three tries — this one no longer earns credit. You chose to see the answer — this one earns no credit.
What this task checks
Structure checked automatically. Whether your ideas are convincing isn't graded, so reread with the checklist.
The compiler says
A model answer
Why
Everything that runs a program (dotnet run, dotnet test, the debugger) happens on your machine. Reading, marking, and checking the shape of code happen on the site.
Correct answer
Also accepted:
Why
This program is valid C# in shape, so a page's parser accepts it, but the real compiler rejects it. Click the 1 line the compiler would refuse.
Right on try — credit. Right — the answer had already been shown, so no credit this time. Next try is worth Answer shown after three tries — this one no longer earns credit. You chose to see the answer — this one earns no credit.
What this task checks
Structure checked automatically. Whether your ideas are convincing isn't graded, so reread with the checklist.
The compiler says
A model answer
Why
Line 3 uses scroe, but the stored number is called score. The shape is fine, so only the compiler catches it, with CS0103: the name doesn't exist.
Correct answer
Also accepted:
Why
Compare every name with the one the program stored.
Your prediction for an example's output disagrees with the output the page shows. What's the most useful conclusion?
Right on try — credit. Right — the answer had already been shown, so no credit this time. Next try is worth Answer shown after three tries — this one no longer earns credit. You chose to see the answer — this one earns no credit.
Page outputs aren't typed by authors. They're captured from real runs and checked on every build.
The same simple program prints the same thing every time it runs.
Output is exact, down to spaces and capitals. One of the two is wrong, and it isn't the captured one.
Why
The page's output came from a real run, so the gap is in the reading. That's the moment worth slowing down for.
Who produced the page's output: a person, or a real run?
The answer to this question was captured by running the program on the .NET SDK. Type exactly what it prints.
Right on try — credit. Right — the answer had already been shown, so no credit this time. Next try is worth Answer shown after three tries — this one no longer earns credit. You chose to see the answer — this one earns no credit.
What this task checks
Structure checked automatically. Whether your ideas are convincing isn't graded, so reread with the checklist.
The compiler says
A model answer
Why
The quoted lines print as written, and 2 * 3 is worked out first, so the middle line prints 6.
Correct answer
Also accepted:
Why
The middle line has no quotes, and * means multiply.
Practice: What the page checks, and what you run (5 problems · doesn’t affect your progress)
How can a page check your C# without ever running it?
Right on try — credit. Right — the answer had already been shown, so no credit this time. Next try is worth Answer shown after three tries — this one no longer earns credit. You chose to see the answer — this one earns no credit.
Length tells it nothing. The parser works out the actual structure.
Nothing runs in your browser, secretly or otherwise.
Many different lines can be correct. The parser checks structure and required pieces, not one exact spelling of the whole answer.
Why
The parser works out what the code is made of, which is enough to judge whether it's valid C# and uses what the task asked for.
A parser reads the code's structure, the way a grammar checker reads a sentence
Which of these can only happen on your own machine?
Right on try — credit. Right — the answer had already been shown, so no credit this time. Next try is worth Answer shown after three tries — this one no longer earns credit. You chose to see the answer — this one earns no credit.
Ordering lines is a page exercise; the server checks the order.
Spot-mode bug hunts are marked on the site.
Fill-in-the-blank is checked on the site by the parser.
Why
Running tests means running code, and code only runs on your machine.
Running a lab's tests with dotnet test
Sort each claim about a lesson page: true or false?
Right on try — credit. Right — the answer had already been shown, so no credit this time. Next try is worth Answer shown after three tries — this one no longer earns credit. You chose to see the answer — this one earns no credit.
What this task checks
Structure checked automatically. Whether your ideas are convincing isn't graded, so reread with the checklist.
The compiler says
A model answer
Why
The page parses your code, never runs it, and its outputs were captured from real runs. Shape problems like a missing bracket are visible to the parser; what the program prints, and whether it works, are not.
Correct answer
Also accepted:
Why
The parser sees shape: brackets, semicolons, which statements appear.
The page's parser rejects this program. Click the 1 line it objects to.
Right on try — credit. Right — the answer had already been shown, so no credit this time. Next try is worth Answer shown after three tries — this one no longer earns credit. You chose to see the answer — this one earns no credit.
What this task checks
Structure checked automatically. Whether your ideas are convincing isn't graded, so reread with the checklist.
The compiler says
A model answer
Why
Line 2 never closes the bracket it opened after WriteLine. That's a shape problem, so the parser catches it without running anything.
Correct answer
Also accepted:
Why
Count the brackets on each line.
Your fix-mode answer passes the page's Check. On your own machine, the same code fails to build. How can both be true?
Right on try — credit. Right — the answer had already been shown, so no credit this time. Next try is worth Answer shown after three tries — this one no longer earns credit. You chose to see the answer — this one earns no credit.
Both are working as designed. They check different things.
Both deal with the same C#. The compiler simply checks more than a parser does.
The page never runs any version of your code.
Why
A misspelled name is well-formed C#, so the parser accepts it. The compiler looks names up, finds nothing, and refuses to build.
What does the compiler know that a parser doesn't?
The page checks shape; the compiler also checks that every name you used exists