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 |