Skip to content
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

Build Representer and Analyzer #8

Closed
ErikSchierboom opened this issue Jan 20, 2021 · 1 comment
Closed

Build Representer and Analyzer #8

ErikSchierboom opened this issue Jan 20, 2021 · 1 comment

Comments

@ErikSchierboom
Copy link
Member

ErikSchierboom commented Jan 20, 2021

Representer

In Exercism v3, we're introducing a new (optional) tool: the representer. The goal of the representer is to take a solution and returning a representation, which is an extraction of a solution to its essence with normalized names, comments, spacing, etc. but still uniquely identifying the approach taken. Two different ways of solving the same exercise must not have the same representation.

Each representer is track-specific. When a new solution is submitted, we run the track's representer, which outputs two JSON files that describe the representation.

Once we have a normalized representation for a solution, a team of vetted mentors will look at the solution and comment on it (if needed). These comments will then automatically be submitted to each new solution with the same representation. A notification will be sent for old solutions with a matching representation.

Each track should build a representer according to the spec. For tracks building a representer from scratch, we have a starting guide.

The representer is an optional tool though, which means that if a track does not have a representer, it will still function normally.

Analyzer

In Exercism v3, we are making increased use of our v2 analyzers. Analyzers automatically assess student's submissions and provide mentor-style commentary. They can be used to catch common mistakes and/or do complex solution analysis that can't easily be done directly in a test suite.

Each analyzer is track-specific. When a new solution is submitted, we run the track's analyzer, which outputs a JSON file that contains the analysis results.

In v2, analyzer comments were given to a mentor to pass to a student. In v3, the analyzers will normally output directly to students, although we have added an extra key to output suggestions to mentors. If your track already has an analyzer, the only requisite change is updating the outputted copy to be student-facing.

Each track should build an analyzer according to the spec. For tracks building an analyzer from scratch, we have a starting guide.

The analyzer is an optional tool though, which means that if a track does not have an analyzer, it will still function normally.

Choosing between representer and analyzer

If you want to build both, we recommend starting by building the representer for the following reasons:

  • Representers are usually (far) easier to implement
  • Representers can have a far bigger impact on the mentoring load than analyzers by empowering mentors
  • Representers apply to all exercises, whereas analyzers usually target specific exercises or a subset
@ErikSchierboom ErikSchierboom changed the title Build analyzer and representer Build Analyzer and Representer Jan 20, 2021
@ErikSchierboom ErikSchierboom changed the title Build Analyzer and Representer Build Representer and Analyzer Jan 21, 2021
This was referenced Jan 29, 2021
@ErikSchierboom ErikSchierboom added x:action/improve Improve existing functionality/content x:size/massive Massive amount of work x:type/coding Write code that is not student-facing content (e.g. test-runners, generators, but not exercises) x:knowledge/none No existing Exercism knowledge required x:size/large Large amount of work x:knowledge/intermediate Quite a bit of Exercism knowledge required x:module/practice-exercise Work on Practice Exercises x:size/small Small amount of work x:size/tiny Tiny amount of work x:type/content Work on content (e.g. exercises, concepts) x:module/test-runner Work on Test Runners x:action/create Work on something from scratch x:knowledge/advanced Comprehensive Exercism knowledge required and removed x:action/improve Improve existing functionality/content x:size/massive Massive amount of work x:type/coding Write code that is not student-facing content (e.g. test-runners, generators, but not exercises) x:knowledge/none No existing Exercism knowledge required x:size/large Large amount of work x:knowledge/intermediate Quite a bit of Exercism knowledge required x:module/practice-exercise Work on Practice Exercises x:size/small Small amount of work x:size/tiny Tiny amount of work x:type/content Work on content (e.g. exercises, concepts) x:module/test-runner Work on Test Runners x:action/create Work on something from scratch x:knowledge/advanced Comprehensive Exercism knowledge required labels Aug 18, 2021
@ErikSchierboom
Copy link
Member Author

Closed in favor of #52 and #53

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant