-
-
Notifications
You must be signed in to change notification settings - Fork 157
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add prerequisites to Practice Exercises #330
Conversation
⚠ The spec for Practice Exercises has changed. Besides having a The issue's text has been updated to reflect the updated spec. |
Closes: #318 |
config.json
Outdated
"name": "Lists" | ||
} | ||
], | ||
"key_features": [ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Did you want to remove the key features?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oops, no that's definitely a mistake :/
Co-authored-by: Erik Schierboom <erik_schierboom@hotmail.com>
config.json
Outdated
"uuid": "e043262c-85bf-41b0-a182-519ec453f585", | ||
"slug": "basics", | ||
"name": "Basics" | ||
}, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These new concepts don't have any concept docs, which means they'll be causing syncing to fail. The best option here is to keep the concepts in the practices/prerequisites but remove them from this concepts
array until you have written documents for them.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Awesome. Ship it!
This issue is part of the migration to v3. You can read full details about the various changes here.
Exercism v3 introduces a new type of exercise: Concept Exercises. All existing (V2) exercises will become Practice Exercises.
Concept Exercises and Practice Exercises are linked to each other via Concepts. 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 aprerequisites
field.Practices
The
practices
key should list the slugs of Concepts that this Practice Exercise actively allows a student to practice.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.Prerequisites
The
prerequisites
key lists the Concept Exercises that a student must have completed in order to access this Practice Exercise.strings
,optional-params
,implicit-return
.loops
orrecursion
), 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 ofloops
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."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 theconfig.json
file should be updated to contain the practice concepts. See the spec.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.Prerequisites
The
"prerequisites"
field of each element in the"exercises.practice"
field in theconfig.json
file should be updated to contain the prerequisite concepts. See the spec.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.Example
Tracking
exercism/v3-launch#6