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

Implement new Concept Exercise: Randomness #1515

Open
junedev opened this issue Nov 13, 2021 · 15 comments
Open

Implement new Concept Exercise: Randomness #1515

junedev opened this issue Nov 13, 2021 · 15 comments
Assignees
Labels
x:action/create Work on something from scratch x:knowledge/elementary Little Exercism knowledge required x:module/concept-exercise Work on Concept Exercises x:rep/large Large amount of reputation x:size/large Large amount of work x:status/claimed Someone is working on this issue x:type/content Work on content (e.g. exercises, concepts)

Comments

@junedev
Copy link
Member

junedev commented Nov 13, 2021

Getting Started

If you have not yet contributed to concept exercises before, this task requires some upfront reading to acquire the necessary background knowledge.

Here you can read about what Concept Exercises are and how they are structured:

If you have not done so yet, it is probably also helpful to do a couple of "Learning Exercises" (this is how they are called on the site) yourself. You can also look at the code of an existing concept exercise like bird-watcher (concept for-loops) for reference.

See the documentation above (general documentation), as well as How to implement a Concept Exercise in JavaScript.

Also be aware of these general guidelines.

Goal

The goal here is to create a new concept exercise to teach randomness (random number generation).

The concept needs to be written from scratch, the exercise can be ported from another track (see details below).

Concepts

The following concept needs to be created. You can use the introduction.md file of the concept also as introduction.md file of the exercise. No need to create different content at this point. Additionally, if you want to save some time it is ok to not have an extensive about.md for now. It can also be mainly the introduction.md content, maybe with some additions you would like to make.

  • randomness

Learning Objectives

In the concepts the student should learn about the following topics and then practice them in the concept exercise.

  • how to create pseudo random numbers with Math.random
  • how to create pseudo random integers
  • the seed is selected automatically and cannot be influenced by the user
  • when and how to create cryptographically secure random numbers (web and node), should not be part of the exercise but would be good to mention in the concept to raise security awareness

It would be good to include a link to an explanation why randomness is hard/what pseudo random numbers are.

Out of Scope

  • details of pseudo random number generation in general
  • discussing the different algorithms

As always, the concept should mainly focus on the JavaScript specific parts.

Prerequisites

  • numbers

Other prerequisites should be added as needed to solve the specific exercise.

Exercise Idea

Elixir "Captain's Log" Exercise could serve as template.

In case you port that exercise, it is probably a good idea to omit the last task (does not belong to this concept) and switching task 1 and 2 because in JavaScript, task 2 is easier.

Resources

Here some links that might be helpful as a starting point and/or for the links section of the concept:

How to proceed

  1. First accept this issue by saying "I'd like to work on this" (no need to wait for a response, just go ahead).
  2. Use this issue to discuss any questions you have, what should be included in the content and what not and to collect more reference material.
  3. Create a PR and set "exercism/javascript" as reviewers. Additionally you can write in #maintaining-javascript on Slack that your PR is ready for review. Once you incorporated any critical feedback that the reviewer might give you and the PR is approved, it will be merged by a maintainer.
@junedev junedev added help wanted new exercise ✨ x:action/create Work on something from scratch x:knowledge/elementary Little Exercism knowledge required x:module/concept-exercise Work on Concept Exercises x:type/content Work on content (e.g. exercises, concepts) x:size/large Large amount of work labels Nov 13, 2021
@atj-craig

This comment was marked as outdated.

@junedev

This comment was marked as outdated.

@atj-craig

This comment was marked as outdated.

@junedev junedev added x:status/claimed Someone is working on this issue and removed help wanted labels Nov 17, 2021
@atj-craig

This comment was marked as outdated.

@junedev

This comment was marked as outdated.

@atj-craig

This comment was marked as outdated.

@junedev

This comment was marked as outdated.

@atj-craig

This comment was marked as outdated.

@SleeplessByte

This comment was marked as outdated.

@atj-craig

This comment was marked as outdated.

@junedev

This comment was marked as outdated.

@junedev junedev removed new exercise ✨ x:status/claimed Someone is working on this issue labels Apr 19, 2022
@junedev
Copy link
Member Author

junedev commented Apr 19, 2022

A good start was made for this exercise here #1633 but the original contributor did not have time to finish this. However wants to work on this can continue from there.

@ErikSchierboom ErikSchierboom added x:size/large Large amount of work and removed x:size/large Large amount of work labels Apr 26, 2022
@junedev junedev added the x:rep/large Large amount of reputation label Apr 27, 2022
@menty44
Copy link

menty44 commented May 23, 2022

A good start was made for this exercise here #1633 but the original contributor did not have time to finish this. However wants to work on this can continue from there.

I'd like to work on this

@junedev junedev added the x:status/claimed Someone is working on this issue label May 24, 2022
@junedev
Copy link
Member Author

junedev commented Jun 9, 2022

@menty44 Thanks for volunteering to work on this. Sorry that I didn't really had time to say hi before.

Unfortunately, this task involves some "reading the docs" before jumping in as mentioned in the description. Once you did that and still have questions, just post them here and I will try to answer as soon as possible. Also feel free to create a draft PR at any time with some preliminary version if you need feedback on something concrete you already did.

One last thing: If you find out that you won't have time to continue working on this at some point, please let us know.

@junedev
Copy link
Member Author

junedev commented Jul 17, 2022

@menty44 Are you still working on this? If not, I would unassign you so someone else can pick this up.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
x:action/create Work on something from scratch x:knowledge/elementary Little Exercism knowledge required x:module/concept-exercise Work on Concept Exercises x:rep/large Large amount of reputation x:size/large Large amount of work x:status/claimed Someone is working on this issue x:type/content Work on content (e.g. exercises, concepts)
Projects
None yet
Development

No branches or pull requests

5 participants