Sha256: 0755c0dbdfc59ec294c3fdd9c4f4cb7bbb592c682048ef76a8dd80b870fbcffb

Contents?: true

Size: 1.63 KB

Versions: 181

Compression:

Stored size: 1.63 KB

Contents

# Rust Track Problem Order

The actual source of truth of problem order and topics is [config.json](config.json), but this file documents our reasoning behind the problem order in that file.

## Background

- https://github.com/exercism/rust/issues/126
- https://github.com/exercism/rust/issues/127
- http://designisrefactoring.com/2016/07/09/exercism-shouldnt-make-you-cry/

## Our Approach

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

### One New Concept

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.

### Progress Through Rust

#### Early Problems

Early problems should focus on Rust syntax and concepts that are present in many programming languages: conditionals, looping, higher-order-functions.

#### Middle Problems

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.

#### Later Problems

Problems late in the track should do one of two things:

1. Introduce advanced concepts -- Lifetimes, Concurrency, Unsafety
2. Require a complex solution that synthesizes all the knowledge students have gained to date

Version data entries

181 entries across 181 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/rust/problem_ordering.md
trackler-2.2.1.179 tracks/rust/problem_ordering.md
trackler-2.2.1.178 tracks/rust/problem_ordering.md
trackler-2.2.1.177 tracks/rust/problem_ordering.md
trackler-2.2.1.176 tracks/rust/problem_ordering.md
trackler-2.2.1.175 tracks/rust/problem_ordering.md
trackler-2.2.1.174 tracks/rust/problem_ordering.md
trackler-2.2.1.173 tracks/rust/problem_ordering.md
trackler-2.2.1.172 tracks/rust/problem_ordering.md
trackler-2.2.1.171 tracks/rust/problem_ordering.md
trackler-2.2.1.170 tracks/rust/problem_ordering.md
trackler-2.2.1.169 tracks/rust/problem_ordering.md
trackler-2.2.1.167 tracks/rust/problem_ordering.md
trackler-2.2.1.166 tracks/rust/problem_ordering.md
trackler-2.2.1.165 tracks/rust/problem_ordering.md
trackler-2.2.1.164 tracks/rust/problem_ordering.md
trackler-2.2.1.163 tracks/rust/problem_ordering.md
trackler-2.2.1.162 tracks/rust/problem_ordering.md
trackler-2.2.1.161 tracks/rust/problem_ordering.md
trackler-2.2.1.160 tracks/rust/problem_ordering.md