The actual source of truth of problem order and topics is config.json, but this file documents our reasoning behind the problem order in that file.
We order our problems for students who are learning Rust. With that audience in mind, we follow two rules when adding new problems.
- A exercise should introduce one new concept
- Exercises should progress from Rust basics to advanced Rust concepts
If a problem solution requires students to use both Result
and HashMap
, then at least one of these concepts should be introduced by an earlier problem.
If the track has several problems that rely on a concept, group them together to reinforce learning.
Early problems should focus on Rust syntax and concepts that are present in many programming languages: conditionals, looping, higher-order-functions.
Problems in the middle of the of the track should introduce concepts that are less common. Result
and Option
and Traits, for example. Or syntax such as while let
.
Through the middle section of the track students should gain familiarity with a wide range of Rust concepts.
Problems late in the track should do one of two things:
- Introduce advanced concepts -- Lifetimes, Concurrency, Unsafety
- Require a complex solution that synthesizes all the knowledge students have gained to date