exercism / exercism/vimscript

Add prerequisites to Practice Exercises

Đang mở
#94 1 bình luận 0 reaction 0 người được giao Xem trên GitHub
x:action/improve x:knowledge/intermediate x:module/practice-exercise x:size/large x:type/content
Ngôn ngữ chính
Vim Script
Star
22
Fork
27
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

_This issue is part of the migration to v3. You can read full details about the various changes [here](https://github.com/exercism/v3-launch/)._

Exercism v3 introduces a new type of exercise: [Concept Exercises](https://github.com/exercism/v3-docs/blob/main/product/concept-exercises.md). All existing (V2) exercises will become [Practice Exercises](https://github.com/exercism/v3-docs/blob/main/product/practice-exercises.md).

Concept Exercises and Practice Exercises are linked to each other via [Concepts](https://github.com/exercism/v3-docs/blob/main/anatomy/tracks/concepts.md). Concepts are taught by Concept Exercises and practiced in Practice Exercises. Each Exercise (Concept or Practice) has prerequisites, which must be met to unlock an Exercise - once all the prerequisite Concepts have been "taught" by a Concept Exercise, the exercise itself becomes unlocked.

For example, in some languages completing the Concept Exercises that teach the "String Interpolation" and "Optional Parameters" concepts might then unlock the `two-fer` Practice Exercise.

Each Practice Exercise has two fields containing concepts: a `practices` field and a `prerequisites` field.

## Practices

The `practices` key should list the slugs of Concepts that this Practice Exercise actively allows a student to practice.

- These show up in the UI as "Practice this Concept in: TwoFer, Leap, etc"
- Try and choose 3 - 8 Exercises that practice each Concept.
- Try and choose at least two Exercises that allow someone to practice the basics of a Concept.
- Some Concepts are very common (for example `strings`). In those cases we recommend choosing a few good exercises that make people think about those Concepts in interesting ways. For example, exercises that require UTF-8, string concatenation, char enumeration, etc, would all be good examples.
- There should be one or more Concepts to practice per exercise.

## Prerequisites

The `prerequisites` key lists the Concept Exercises that a student must have completed in order to access this Practice Exercise.

- These show up in the UI as "Learn Strings to unlock TwoFer"
- It should include all Concepts that a student needs to have covered to be able to complete the exercise in at least one idiomatic way. For example, for the TwoFer exercise in Ruby, prerequisites might include `strings`, `optional-params`, `implicit-return`.
- For Exercises that can be completed using alternative Concepts (e.g. an Exercise solvable by `loops` or `recursion`), the maintainer should choose the one approach that they would like to unlock the Exercise, considering the student's journey through the track. For example, the loops/recursion example, they might think this exercise is a good early practice of `loops` or that they might like to leave it later to teach recursion. They can also make use of an analyzer to prompt the student to try an alternative approach: "Nice work on solving this via loops. You might also like to try solving this using Recursion."
- There should be one or more prerequisites Concepts per exercise.

Although ideally all Concepts should be taught by Concept Exercises, we recognise that it will take time for tracks to achieve that. Any Practice Exercises that have prerequisites which are not taught by Concept Exercises, will become unlocked once the final Concept Exercise has been completed.

## Goal

### Practices

The `"practices"` field of each element in the `"exercises.practice"` field in the `config.json` file should be updated to contain the practice concepts. See [the spec](https://github.com/exercism/v3-docs/blob/main/anatomy/tracks/config-json.md#practice-exercises).

To help with identifying the practice concepts, the `"topics"` field can be used (if it has any contents). Once prerequisites have been defined for a Practice Exercise, the `"topics"` field should be removed.

Each practice concept should have its own entry in the top-level `"concepts"` array. See [the spec](https://github.com/exercism/v3-docs/blob/main/anatomy/tracks/config-json.md#concepts).

### Prerequisites

The `"prerequisites"` field of each element in the `"exercises.practice"` field in the `config.json` file should be updated to contain the prerequisite concepts. See [the spec](https://github.com/exercism/v3-docs/blob/main/anatomy/tracks/config-json.md#practice-exercises).

To help with identifying the prerequisites, the `"topics"` field can be used (if it has any contents). Once prerequisites have been defined for a Practice Exercise, the `"topics"` field should be removed.

Each prerequisite concept should have its own entry in the top-level `"concepts"` array. See [the spec](https://github.com/exercism/v3-docs/blob/main/anatomy/tracks/config-json.md#concepts).

## Example

```json
{
"exercises": {
"practice": [
{
"uuid": "8ba15933-29a2-49b1-a9ce-70474bad3007",
"slug": "leap",
"name": "Leap",
"practices": ["if-statements", "numbers", "operator-precedence"],
"prerequisites": ["if-statements", "numbers"],
"difficulty": 1
}
]
}
}
```

## Tracking

https://github.com/exercism/v3-launch/issues/6

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.