You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: anatomy/test-runners/README.md
+4-5
Original file line number
Diff line number
Diff line change
@@ -3,10 +3,11 @@
3
3
A Test Runner is a piece of software that runs a an exercise's tests against a student's code.
4
4
5
5
Test runners give us two advantages
6
-
1. They enable in-browser coding, where a student can iterate on a solution seeing whether the tests pass or fail.
6
+
7
+
1. They enable in-browser coding, where a student can iterate on a solution seeing whether the tests pass or fail.
7
8
2. They allow us to provide information to mentors on whether a student's code "works" or not.
8
9
9
-
Each language has it's own test runner, written in that language.
10
+
Each language has it's own test runner, written in that language.
10
11
The website acts as the orchestrator between the test runners and student's submissions.
11
12
12
13
Each test runner lives in the Exercism GitHub organsation in a repository named `$LANG-test-runner` (e.g. `ruby-test-runner`).
@@ -16,9 +17,7 @@ If you would like to get involved in helping with an existing Test Runner, pleas
16
17
If you would like to create a Test Runner for a language that currently does not have one, please follow the [creating a Test Runner](creating-from-scratch.md) instructions.
17
18
18
19
This directory contains the following information:
20
+
19
21
-**`creating-from-scratch.md:`** Information on creating a Test Runner from scratch.
20
22
-**`interface.md:`** The Test Runner interface.
21
23
-**`docker.md:`** How to build a Docker image with Docker for local testing and deployment.
Copy file name to clipboardexpand all lines: anatomy/test-runners/docker.md
+3-3
Original file line number
Diff line number
Diff line change
@@ -10,21 +10,21 @@ The Dockerfile should create the minimal image needed for the Test Runner to run
10
10
11
11
It should produce an image with as a small a size as possible.
12
12
The minimal-sized image is often based on Alpine Linux.
13
-
Applying the official [Dockerfile best practices](https://docs.docker.com/develop/develop-images/Dockerfile_best-practices/) can help to create a minimal image.
13
+
Applying the official [Dockerfile best practices](https://docs.docker.com/develop/develop-images/Dockerfile_best-practices/) can help to create a minimal image.
14
14
15
15
## Executing the Docker container
16
16
17
17
When we run the Docker container we execute a `run.sh` script.
18
18
To ensure this works properly the following rules must be following:
19
19
20
20
- The working directory should be `/opt/test-runner`.
21
-
- There should be a `/opt/test-runner/bin/run.sh` script that can be called with 3 parameters:
21
+
- There should be a `/opt/test-runner/bin/run.sh` script that can be called with 3 parameters:
22
22
the `exercise slug`, the path to the `solution folder`, and the path to the `output folder`.
23
23
For more information see [The Interface](./interface.md).
24
24
25
25
## Local development
26
26
27
-
To allow for local development we have produced an exectuable called [tooling-webserver](https://github.com/exercism/tooling-webserver/blob/master/README.md#installation-docker).
27
+
To allow for local development we have produced an exectuable called [tooling-webserver](https://github.com/exercism/tooling-webserver/blob/master/README.md#installation-docker).
Copy file name to clipboardexpand all lines: product/concept-exercises.md
+11-8
Original file line number
Diff line number
Diff line change
@@ -9,18 +9,21 @@ Concept Exercises have the following characteristics:
9
9
- Stubs/boilerplate are used to avoid the student having to learn/write unnecessary code on exercises.
10
10
11
11
## Concepts
12
-
Exercises are unlocked based on concepts taught and learnt.
13
-
Each Concept Exercise must teach one or more concepts.
12
+
13
+
Exercises are unlocked based on concepts taught and learnt.
14
+
Each Concept Exercise must teach one or more concepts.
14
15
It may also have prerequisites on Concepts, which means it will not be unlocked until Concept Exercises teaching those prerequisite concepts have been completed.
15
16
16
17
## Difficulty
17
-
Concept Exercises should not become inherently more difficult as the track progresses.
18
-
A seasoned developer in Language X should be able to work through all the Concept Exercises on that track spending no more than 5-10 minutes solving each one.
19
-
As each exercise should be focussed on getting someone to use a concept for the first time, and because the seasoned developer already understands that concept in Language X, the exercise should feel relatively trivial for them.
18
+
19
+
Concept Exercises should not become inherently more difficult as the track progresses.
20
+
A seasoned developer in Language X should be able to work through all the Concept Exercises on that track spending no more than 5-10 minutes solving each one.
21
+
As each exercise should be focussed on getting someone to use a concept for the first time, and because the seasoned developer already understands that concept in Language X, the exercise should feel relatively trivial for them.
20
22
Later exercises may feel more difficult to a developer unfamiliar with Language X, but only because the later exercise is teaching a concept which in itself is more complicated (for example, most people would agree Recursion is a more complex topic to learn for the first time, than a Loop is to remap from one language to another).
21
23
22
24
## Feedback
23
-
Concept Exercises are not mentored.
24
-
When a student submits a submission that gets the tests passing for a Concept Exercise, we check for an Analyzer or Representer to give feedback.
25
-
If none is found, then the solution is approved.
25
+
26
+
Concept Exercises are not mentored.
27
+
When a student submits a submission that gets the tests passing for a Concept Exercise, we check for an Analyzer or Representer to give feedback.
28
+
If none is found, then the solution is approved.
26
29
This shifts the burden of teaching to the exercise, which must provide a clear pathway to learning the concept that is being taught.
Copy file name to clipboardexpand all lines: product/credits.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -17,7 +17,7 @@ A user receives a credit "present" each year upon their Exercism birthday.
17
17
### Mentoring
18
18
19
19
Every time someone requests mentoring, they add a bounty to their request. The mentor who successfully mentors that solution receives that bounty.
20
-
20
+
21
21
In general, a user's [mentoring reputation](../reputation.md) determines the max bounty they can recieve. The more someone mentors (successfully), the better bounties they have access to and the more credits they can acquire.
Copy file name to clipboardexpand all lines: product/experience.md
+3
Original file line number
Diff line number
Diff line change
@@ -15,6 +15,7 @@ There are various ways of acquiring experience.
15
15
Experience is acquired by successfully completing Concept and Practice Exercises.
16
16
17
17
All exercises award points, but different exercises may award different amounts of points, depending on:
18
+
18
19
- Whether the exercise is Concept or Practice
19
20
- The difficulty of the exercise
20
21
- Whether the same exercise has been completed in an alternative language (ie, you get more points the first time you complete `Bob` than the 5th time)
@@ -25,6 +26,7 @@ An algorithm considering these factors is yet to be decided.
25
26
### 2. Track milestones
26
27
27
28
At certain points during the track, extra experience will be awarded:
29
+
28
30
- Completing a Concept exercise in a track
29
31
- Completing 10 Concept exercises in a track
30
32
- Completing a Practice exercise in a track
@@ -41,6 +43,7 @@ Much like any modern roleplaying game, experience points are accrued and represe
Copy file name to clipboardexpand all lines: product/representers.md
+4-4
Original file line number
Diff line number
Diff line change
@@ -6,18 +6,18 @@ An example helps to explain representers best. Let's presume two students submit
6
6
7
7
```ruby
8
8
# Student 1's submission
9
-
defself.hello(name="World")
9
+
defself.hello(name='World')
10
10
"Hello, #{name}!"
11
11
end
12
12
```
13
13
14
14
```ruby
15
15
# Student 2's submission
16
-
defself.hello(nom="World")
17
-
%Q{Hello, #{nom}!}
16
+
defself.hello(nom='World')
17
+
"Hello, #{nom}!"
18
18
end
19
19
```
20
20
21
-
Although the code to these solutions is different (different indentation, variable names, and string syntax), they are essentially the same. So by creating a normalised representation of them, we can *treat* them as the same for the purposes of providing feedback. This dramatically reduces the amount of duplicate mentoring that needs to happen.
21
+
Although the code to these solutions is different (different indentation, variable names, and string syntax), they are essentially the same. So by creating a normalised representation of them, we can _treat_ them as the same for the purposes of providing feedback. This dramatically reduces the amount of duplicate mentoring that needs to happen.
22
22
23
23
Each track maintains it's own representer, specific to that language. There is no standarised output - we only require a track to be internally consistent.
Copy file name to clipboardexpand all lines: product/reputation.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# Reputation
2
2
3
-
Reputation is the system that allows people to acquire "trust" within the Exericsm ecosystem.
3
+
Reputation is the system that allows people to acquire "trust" within the Exericsm ecosystem.
4
4
5
5
Reputation is a measure of how much an individual has contributed to Exercism, both through contribution to the platform (e.g. through creation of software, exercises and docs) and contribution to the community (e.g. mentoring).
0 commit comments