Skip to content
Katabench
Try free
← All docs

Working through Katabench Labs

5 min read

Katabench Labs are guided project exercises. Instead of implementing one puzzle method, you work in a real multi-file .NET project, run it in a temporary browser-controlled workspace, and pass executable checks lesson by lesson.

Labs are released separately from the puzzle catalog. If Labs does not appear in your app navigation, use the public Labs overview for the current availability and course catalog. For a concrete look at one terminal-first course, the Aspire service-discovery guide follows a logical service name from the AppHost model through resolution, readiness, and replicas.

Understand the hierarchy

The names describe different levels of the experience:

Level Meaning
Course A broad topic such as Docker foundations, Aspire, or microservices.
Lab One focused project or engineering scenario inside a course.
Lesson One ordered change to make and verify inside that Lab.
Workspace The temporary project environment, editor, files, output, and terminals for your session.
Check The automated proof that the current lesson's requirements hold.

The course catalog shows the number of Labs, lessons, and estimated practice time. Open a course to review its outcomes, Lab sequence, lesson counts, access tier, and your progress before starting.

Start or resume a course

When signed in, a course page shows completed lessons and a Start course, Resume, or Review course action. The dashboard's My labs section also links directly to your next incomplete lesson and lists completed Labs.

Selecting a Lab starts a session and prepares its project. Stay on the preparation screen until the workspace reports that it is ready. If preparation fails, use the retry action shown there. When an older Lab session conflicts with the one you are opening, the app offers to end the old session and continue.

Learn the workspace

On desktop, the workspace has the code area on the left and the lesson guide on the right. On smaller screens, switch between Guide and Code & output.

The top bar shows the Lab name, session state, remaining time, full-screen control, a Playground link, and the theme control. The work area can include:

  • a file tree for exploring the project;
  • an editor for the lesson file and other available files;
  • read-only files that provide context but are not intended to change;
  • build and application consoles;
  • one or more interactive terminals for command-driven lessons;
  • an optional application dashboard after the project is running.

Drag the file-tree divider or the divider above the output area to resize them. Double-click a divider to restore its default size. Use full screen when you want the maximum editor and terminal space.

Follow the guide

The guide names the current Lab and lesson position, estimated time, learning objectives, and course progress. Read it from top to bottom before changing the project. It can contain diagrams, callouts, code, commands, expected output, and requests to send to the running app.

Guide actions reduce copying mistakes:

  • Copy places a code or command block on the clipboard.
  • Insert at cursor adds an authored snippet at the current editor position.
  • Run sends a runnable command to the named terminal.
  • When more than one terminal is available, choose the target terminal first, then select Run.

These actions are conveniences, not hidden steps. You can type commands and code yourself whenever that helps you learn.

Save, build, run, and check

Changes are saved to the active Lab session when you Build, Run, or Check. Ctrl/Cmd + S also saves. An Unsaved indicator appears when the current editable file has changes that have not yet been sent to the session.

The exact controls depend on the Lab:

  • Editor-led Labs show Build and Run or Stop in the action bar.
  • Terminal-led Labs put runnable commands in the guide and use interactive terminals below the editor.
  • Check always validates the current lesson's required result.

Check lists every requirement it evaluated. A failed result explains what is still missing. A clean result marks the lesson complete and unlocks Next. You cannot skip forward past an incomplete lesson in the normal learner experience.

Reset or show the solution

Reset replaces the current lesson code with its starter version. Show solution replaces it with the complete lesson solution. Both actions ask for confirmation because they overwrite your current edits, and you can keep editing after either action.

Showing the solution is useful when you have exhausted the guide and feedback. Study the change, then reset and reproduce it without looking. A shown solution does not bypass the Check requirement.

Sessions and time limits

The timer in the top bar shows how long the temporary workspace remains available. A warning appears before the session ends; choose Keep working when the extension is offered and you still need the environment.

When a session ends, use Reload to prepare a fresh workspace. Temporary project state belongs to the session, so do not treat the Lab editor as permanent storage for unrelated code. Completed lesson progress is the durable record for signed-in learners.

Finish a Lab and course

Passing the final lesson opens the completion summary. If the course has another Lab, continue directly to it. Otherwise, return to the course catalog or dashboard.

Signed-in lesson completions contribute to your Lab progress and can award XP, gems, streak, achievement, and course progress. Anonymous sessions are useful for previews, but create or use an account when you want completed lessons to follow you across sessions and devices.

Get new puzzles and .NET tips in your inbox

A short note when fresh kata land, plus the C# and performance tricks behind the grading. No spam, unsubscribe anytime.