Via the menu entries in this section you can browse through the different stories that were already invented for Concept Exercises.
Additionally, the table below gives an overview which exercises are currently used to teach which concepts. The last column includes links to the respective implementations in the tracks.
(The table below is currently auto-generated every now and then with this script. No need to update manually.)
| Exercise Slug | Concepts | Tracks |
|---|---|---|
| lasagna | basics, variables, functions, integer-introduction, comments, constants, type-annotations | abap (wip), elixir, go, java, javascript, jq, julia (wip), nim (wip), ruby, swift, unison (wip) |
| bird-watcher | arrays, for-loops, foreach-loops, vectors, increment-decrement | csharp, clojure, fsharp, go, java, javascript |
| lucians-luscious-lasagna | basics, basics-1, functions | csharp, clojure, elm, fsharp, haskell, kotlin (wip), rust |
| annalyns-infiltration | booleans | csharp, clojure, elm, fsharp, go, java, javascript, kotlin (wip) |
| secure-munchester-united | casting | csharp |
| squeaky-clean | chars, string-builder | csharp, clojure (wip), java |
| elons-toys | classes, methods | csharp, go |
| authentication-system | constants, defensive-copying, readonly-collections | csharp |
| need-for-speed | constructors, alias, import, structs | csharp, elixir, go, java |
| booking-up-for-beauty | datetimes, time | csharp, fsharp, go |
| international-calling-connoisseur | dictionaries | csharp, clojure (wip) |
| logs-logs-logs | enums, runes | csharp, go |
| faceid-2 | equality, sets | csharp |
| calculator-conundrum | exceptions, exception-handling | csharp, java (wip) |
| the-weather-in-deather | ternary-operators, expression-bodied-members, switch-expressions, throw-expressions | csharp |
| attack-of-the-trolls | attributes, flag-enums | csharp |
| interest-is-interesting | do-while-loops, floating-point-numbers, while-loops | csharp, clojure, fsharp, go |
| wizards-and-warriors | inheritance | csharp, java |
| hyper-optimized-telemetry | integral-numbers | csharp |
| remote-control-competition | interfaces, ordering | csharp, java |
| tracks-on-tracks-on-tracks | generic-types, lists | csharp, clojure, elm, fsharp |
| wizards-and-warriors-2 | method-overloading, named-arguments, optional-parameters | csharp |
| red-vs-blue-darwin-style | namespaces | csharp |
| remote-control-cleanup | nested-types | csharp |
| tim-from-marketing | nullability | csharp |
| cars-assemble | if-statements, numbers, conditionals, if-then-else-expressions, arithmetic-operators | csharp, clojure, fsharp, go, java |
| developer-privileges | object-initializers | csharp |
| hyperia-forex | operator-overloading | csharp |
| hyperinflation-hits-hyperia | overflow | csharp |
| building-telemetry | parameters | csharp |
| weighing-machine | properties | csharp |
| roll-the-die | randomness | csharp |
| parsing-log-files | regular-expressions | csharp, go |
| object-relational-mapping | resource-cleanup | csharp |
| orm-in-one-go | resource-lifetime | csharp |
| high-school-sweethearts | string-formatting, verbatim-strings | csharp |
| log-levels | strings, enums | csharp, cpp (wip), clojure, common-lisp, fsharp, java, python (wip) |
| land-grab-in-space | structs | csharp |
| football-match-reports | switch-statements, switch-statement | csharp, java |
| beauty-salon-goes-global | time, timezone | csharp |
| phone-number-analysis | tuples | csharp |
| instruments-of-texas | user-defined-exceptions, exception-filtering | csharp |
| log-analysis | extension-methods | csharp |
| elyses-destructured-enchantments | sequential-destructuring, array-destructuring, rest-and-spread | clojure, javascript |
| date-parser | clojure (wip) | |
| coordinate-transformation | closures | clojure (wip), javascript |
| socks-and-sexprs | comments, expressions, cons, symbols | common-lisp |
| key-comparison | equality | common-lisp |
| pizza-pi | integers, floating-point-numbers, arithmetic | common-lisp |
| leslies-lists | lists | common-lisp |
| pal-picker | conditionals, truthy-and-falsy | common-lisp |
| lillys-lasagna | functions | common-lisp |
| lillys-lasagna-leftovers | lambda-list, keyword-parameters, optional-parameters, rest-parameters | common-lisp |
| character-study | characters | common-lisp |
| larrys-winning-checker | arrays, vectors | common-lisp |
| high-scores | hash-tables | common-lisp |
| lucys-magnificent-mapper | mapping, filtering | common-lisp |
| gigasecond-anniversary | date-time, multiple-values | common-lisp |
| logans-numeric-partition | reducing | common-lisp |
| reporting-for-duty | format-basics | common-lisp |
| futures | futures | dart (wip) |
| numbers | numbers-basic, type-conversion | dart (wip) |
| strings | strings-basic | dart (wip) |
| pacman-rules | booleans | elixir, haskell (wip), unison (wip) |
| freelancer-rates | integers, floating-point-numbers, numbers, arithmetic-operators | elixir, javascript, swift |
| secrets | anonymous-functions, bit-manipulation | elixir |
| log-level | cond, atoms | elixir |
| language-list | lists | elixir |
| guessing-game | multiple-clause-functions, guards, default-arguments, pattern-matching, pattern-matching-literals | elixir, fsharp, haskell |
| kitchen-calculator | tuples, pattern-matching | elixir |
| high-school-sweetheart | strings, pipe-operator | elixir |
| bird-count | recursion, arrays, enumeration | elixir, jq, ruby |
| high-score | module-attributes-as-constants, maps | elixir |
| city-office | docs, typespecs | elixir |
| german-sysadmin | charlists, case | elixir |
| rpg-character-sheet | io | elixir |
| name-badge | nil, if | elixir |
| take-a-number | processes, pids | elixir |
| wine-cellar | keyword-lists | elixir |
| dna-encoding | bitstrings, tail-call-recursion | elixir |
| library-fees | dates-and-time | elixir |
| basketball-website | access-behaviour | elixir |
| boutique-inventory | enum, advanced-enumeration | elixir, ruby |
| file-sniffer | binaries | elixir |
| newsletter | file | elixir |
| chessboard | ranges, range-iteration, type-definitions | elixir, go |
| remote-control-car | structs, functions | elixir, jq |
| boutique-suggestions | list-comprehensions | elixir |
| community-garden | agent | elixir |
| bread-and-potions | protocols | elixir |
| captains-log | erlang-libraries, randomness | elixir |
| rpn-calculator | errors, try-rescue, vec-stack | elixir, rust |
| stack-underflow | exceptions | elixir |
| rpn-calculator-output | try-rescue-else-after, dynamic-dispatch | elixir (wip) |
| rpn-calculator-inspection | links, tasks | elixir |
| lucas-numbers | streams | elixir |
| new-passport | with | elixir |
| top-secret | ast | elixir |
| dancing-dots | behaviours, use | elixir |
| take-a-number-deluxe | genserver | elixir |
| log-parser | regular-expressions | elixir |
| bettys-bike-shop | basics-2 | elm |
| bandwagoner | records | elm, fsharp |
| valentines-day | custom-types, discriminated-unions, algebraic-data-types | elm, fsharp, haskell |
| tisbury-treasure-hunt | tuples | elm, fsharp, python |
| role-playing-game | maybe, option | elm, rust |
| go | result | elm |
| ticket-please | pattern-matching | elm |
| marios-marvellous-lasagna | let | elm |
| top-scorers | dict | elm |
| paolas-prestigious-pizza | parsing | elm |
| monster-attack | partial-application-composition | elm |
| blorkemon-cards | comparison | elm |
| gotta-snatch-em-all | set | elm |
| treasure-chest | generics | elm |
| secure-treasure-chest | opaque-types | elm |
| treasure-factory | phantom-types | elm |
| pizza-pricing | recursion | fsharp |
| party-robot | string-formatting, packages | go |
| weather-forecast | comments | go |
| savings-account | constants, loops, modules | go (wip), ruby |
| blackjack | conditionals-switch, conditionals-if | go, java |
| vehicle-purchase | comparison, conditionals-if, conditionals, compare, booleans, conditionals-guard, conditionals-switch, ternary-operator | go, javascript, jq, swift |
| gross-store | maps | go |
| lasagna-master | functions, function-overloading, multiple-return-values, default-parameters, variadic-parameters, inout-parameters, nested-functions | go, javascript, swift |
| card-tricks | slices, variadic-functions | go |
| sorting-room | type-assertion, type-conversion | go |
| airport-robot | interfaces | go |
| the-farm | errors | go |
| census | zero-values | go |
| welcome-to-tech-palace | strings, strings-package | go |
| election-day | pointers | go |
| expenses | first-class-functions | go |
| animal-magic | randomness | go |
| meteorology | stringers | go |
| temperature | numbers | haskell |
| karls-languages | lists, generic-types | java |
| elons-toy-car | classes | java |
| salary-calculator | ternary-operators | java |
| poetry-club-door-policy | strings | javascript |
| elyses-enchantments | arrays | javascript |
| mixed-juices | while-loops, conditionals-switch | javascript |
| lucky-numbers | type-conversion | javascript |
| elyses-analytic-enchantments | arrow-functions, array-analysis | javascript |
| elyses-looping-enchantments | array-loops | javascript |
| amusement-park | null-undefined, instance-variables, nil | javascript, ruby |
| pizza-order | recursion | javascript (wip) |
| fruit-picker | callbacks | javascript |
| translation-service | promises | javascript |
| high-score-board | objects, dictionaries | javascript, jq, swift |
| ozans-playlist | sets | javascript |
| factory-sensors | errors, inheritance | javascript |
| elyses-transformative-enchantments | array-transformations | javascript |
| custom-signs | conditionals-ternary, template-strings, characters | javascript, swift |
| windowing-system | classes, methods, self, structs-and-classes, value-and-reference-types | javascript, swift |
| regular-chatbot | regular-expressions | javascript, jq |
| shopping | basics | jq |
| assembly-line | numbers, floating-point-numbers, conditionals, integers | jq, ruby, rust |
| log-line-parser | strings | jq, ruby |
| grade-stats | reduce | jq |
| recursive-functions | recursion | jq |
| booleans | booleans | purescript (wip) |
| guidos-gorgeous-lasagna | basics | python |
| ghost-gobble-arcade-game | bools | python |
| currency-exchange | numbers | python |
| meltdown-mitigation | conditionals | python |
| black-jack | comparisons | python |
| little-sisters-essay | string-methods | python |
| little-sisters-vocab | strings | python |
| pretty-leaflet | string-formatting | python (wip) |
| card-games | lists | python |
| chaitanas-colossal-coaster | list-methods | python |
| making-the-grade | loops | python |
| inventory-management | dicts | python |
| locomotive-engineer | unpacking-and-multiple-assignment, multiple-assignment-and-decomposition | python, ruby |
| cater-waiter | sets | python |
| ellens-alien-game | classes | python |
| plane-tickets | generators | python (wip) |
| restaurant-rozalynn | none | python (wip) |
| amusement-park-improvements | booleans | ruby |
| boutique-inventory-improvements | ostruct | ruby |
| moviegoer | ternary-operator | ruby |
| simple-calculator | exceptions | ruby |
| magazine-cutout | entry-api | rust |
| semi-structured-logs | enums | rust |
| resistor-color | external-crates | rust |
| health-statistics | methods, structs | rust |
| low-power-embedded-game | tuples, destructuring | rust |
| short-fibonacci | vec-macro | rust |
| csv-builder | string-vs-str | rust (wip) |
| basics | basics | scala (wip), x86-64-assembly (wip) |
| bomb-defuser | capturing, closures, shorthand-arguments, trailing-closures | swift |
| log-lines | enumerations | swift |
| master-mixologist | loops, for-loops, while-loops, repeat-while, control-transfer | swift |
| magician-in-training | arrays | swift |
| pizza-slices | optionals | swift |
| poetry-club | importing, string-components, string-indexing | swift |
| santas-helper | tuples | swift |
| secret-agent | escaping-functions, higher-order-functions | swift |