Learn by making

Take it apart.
Make it your own.

39 small projects with real source files. Read the structure, follow the data, and change something.

39 results

Data / 01

Expense tracker

Track income and expenses using collections and decimal.

Collections · decimal↗
Beginner / 02

Contact book

Manage contacts with records and search.

Records · search↗
Data / 03

JSON task manager

Load and save tasks using JSON files.

Files · serialization↗
Algorithms / 04

Path finder

Find the shortest path in a grid using BFS.

Graphs · BFS↗
Data / 05

Invoice report

Group paid invoices by customer and render deterministic decimal totals.

Grouping · decimal↗
Beginner / 06

Word frequency

Normalize prepared text and count words with an explicit ordinal comparer.

Text · dictionaries↗
Data / 07

Catalog search

Filter a small product catalog and page a stable result.

Search · paging↗
Data / 08

Task summary

Deserialize a prepared task document, validate its rows, and summarize status.

JSON · records↗
Beginner / 09

Temperature table

Keep conversion logic separate from invariant table formatting.

Methods · formatting↗
Algorithms / 10

Graph route

Find one shortest route in an unweighted graph using predecessor links.

BFS · queues↗
Async / 11

Bounded batch loader

Compose cancellable asynchronous work in small deterministic batches.

Async · cancellation↗
Data / 12

Inventory audit

Validate product identifiers and quantities before accepting an import.

Validation · results↗
Memory / 13

Audit subscription and cache ownership

Trace two real retaining paths and verify their explicit end boundary without pretending to measure collection.

Ownership · events · cache↗
Memory / 14

Encode packets with an owned pooled buffer

Return an independent report from each bounded lease and keep byte lengths separate from pool capacity.

ArrayPool · UTF-8 · ownership↗
Unity companions / 15

Unity health rules companion

A complete console project with seven independent health and lease-reset checks; no UnityEngine dependency.

Pure C# · Unity concepts↗
Unity companions / 16

Unity collectathon rules companion

A complete console project testing unique collection, win/timeout terminal states, input bounds and a deterministic run story.

Pure C# · Unity concepts↗
Testing / 17

Reservation contract lab

Run independent domain scenarios with a controlled UTC clock and an in-memory notice recorder. This is a console lab, not an installed test framework.

Contracts · TimeProvider · effects↗
Testing / 18

JSON request boundary lab

Check the actual local serializer and independent domain validation against explicit input fixtures. No remote service or full runner is simulated.

JSON · representation · domain↗
I/O & HTTP / 19

Build and verify a framed UTF-8 message

Define a versioned byte format with an explicit big-endian length and run twelve independent boundary checks.

Streams · framing · UTF-8↗
I/O & HTTP / 20

Verify an offline bounded HTTP importer

Reuse one HttpClient, inject real in-memory HTTP responses, and check nine status, byte-budget and model boundaries.

HttpClient · cancellation · validation↗
Unity companions / 21

Unity interaction rules companion

A complete portable C# project with 17 independent key, focus, range and invalid-input checks; no UnityEngine dependency.

Pure C# · interaction boundaries↗
Current .NET / 22

Frozen rate-card contract lab

Build a scalar configuration snapshot with an explicit comparer, then run five independent console checks. No test-framework package is required.

FrozenDictionary · ownership · checks↗
Current .NET / 23

Reusable separator tokenizer lab

Use one SearchValues<char> set to split owned nonempty tokens and verify six concrete representation and boundary cases.

SearchValues · spans · parsing↗
Architecture / 24

Capacity port contract lab

Run six independent local boundary checks. Files share one console assembly; separate physical dependency enforcement is demonstrated by the external lesson solutions.

Ports · invariants · no-effect checks↗
Architecture / 25

Order acceptance and read-view lab

Check immutable domain input, local identity rejection, event intent, and read snapshots in six console scenarios. The memory adapter is not durable transactional storage.

Commands · query views · event intent↗
Load companions / 26

Verify bounded admission and draining

Check twelve deterministic ownership boundaries without pretending to benchmark a server.

Admission model · queue · drain↗
Load companions / 27

Check ledger policy and stable routing

Verify ten policy boundaries in a shared in-memory owner; real process coordination belongs to the external SQLite lab.

Idempotency policy · stable key routing↗
ASP.NET companions / 28

Check a quote policy independently of HTTP

Verify nine accepted and rejected domain cases before attaching an ASP.NET response adapter.

Domain rules · deterministic checks↗
ASP.NET companions / 29

Verify tenant variation and private bypass

Use eight independent checks to keep tenant-specific public keys distinct and private calculations uncached.

Cache ownership · tenant keys · pure C#↗
EF Core companions / 30

EF reservation quote companion

Eight independent BCL checks for proposed reservation arithmetic; no EF, SQL, transaction or storage emulation.

Pure C# · quote boundaries↗
EF Core companions / 31

EF read-scope and cursor companion

Eight independent BCL checks for supplied read scope, deletion policy and composite cursors; no authorization, EF translation or database emulation.

Pure C# · cursor contracts↗
Runtime / 32

Metadata-to-delegate routing lab

Discover a bounded set of annotated static methods, validate signatures, create real typed delegates, and run six console contract checks. No plugin loading or test framework is implied.

Reflection · attributes · delegates↗
Runtime / 33

Owned channel and lease contracts

Run six real bounded Channel and SemaphoreSlim ownership scenarios without OS threads, arbitrary sleeps, or invented worker behavior.

Channels · cancellation · leases↗
Production companions / 34

Check full message equivalence and local effects

Run ten independent policy checks without pretending an in-memory owner is a durable inbox.

Inbox policy · request identity↗
Production companions / 35

Check conditional mutation and compatible receipts

Run twelve boundary checks for one-owner versions, identity reuse and current receipts.

Version policy · receipt equivalence↗
Interview practice / 36

Stock decision review harness

Twelve independent boundary and contract checks around pure checked stock decisions, without external storage.

Interview · independent checks↗
Interview practice / 37

Ranked keyset page contract

Fourteen checks for a deterministic composite order, bounded pages, continuation and invalid assumptions.

Interview · independent checks↗
Memory / 38

A bounded buffer lease report

Return pooled storage once while keeping only an independent report.

Memory · lease · exceptions↗
Memory / 39

Checked admission memory budgets

Compare explicit payload owners and reject invalid capacity before arithmetic.

Memory · overload · budget↗