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

Improve Concept Exercise: Savings-Account (Constants) #2226

Open
Tracked by #1886
andrerfcsantos opened this issue May 28, 2022 · 11 comments
Open
Tracked by #1886

Improve Concept Exercise: Savings-Account (Constants) #2226

andrerfcsantos opened this issue May 28, 2022 · 11 comments
Labels
x:action/create Work on something from scratch x:knowledge/intermediate Quite a bit of Exercism knowledge required x:module/concept Work on Concepts x:module/concept-exercise Work on Concept Exercises x:rep/large Large amount of reputation x:size/large Large amount of work x:type/content Work on content (e.g. exercises, concepts)

Comments

@andrerfcsantos
Copy link
Member

andrerfcsantos commented May 28, 2022

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:

Also, be aware of these general guidelines:

Goal

There is an existing concept constants and an existing concept exercise savings-account to teach that concept. It currently has the status wip so it is not available to students on the website. The goal is to improve (and if necessary extend) this existing exercise so it can go live on the website. See also #1583. It is probably a bit hard to make an engaging exercise about constants but we should try.

So the main objectives in this issue are

  • ensure all learning objectives mentioned below are covered int he concept in a meaningful way
  • improve the exercise story to make it more engaging (see also savings-account: tweak design #1583, the link in there contains more details on what is meant by this)
  • ensure the exercise tasks make sense/are well written and cover all the learning objectives, add/remove tasks as needed

If someone wants to work on this but feels the current story/exercise is hard to fix, feel free to change it completely if you have a better idea. The folder/exercise name can be changed to whatever we want. As long as we keep the same UUID in the config, that does not cause any issue (we did it for other exercises in the past already).

Learning Objectives

The following topics should be covered by the concept and then be practiced in the exercise.

Re constants in general:

  • what types of constants exist in Go
  • how do numeric constants work (can take on the type they need to have to "fit in")

Re enums:

  • there is no "enum type" in Go (so far)
  • given a type definition, create blocks of constants with constants of that type that act as an enum
  • show the use of iota as a helpful way to give values for the constants easily.

Sidenote: The instructions.md file of the exercise and the concept can have the same content. Also the about.md of the concept does not need have much additional content compared to the instructions.md file at this point.

Prerequisites

  • type-definitions
  • (others might be necessary depending on the concrete exercise)

These prerequisites should be listed in the root level config.json entry for the exercise.
The prerequisites above are a baseline of the prerequisites that might be needed for the exercise.
When implementing the exercise, feel free to add more prerequisites if the exercise needs them.

Resources

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 whatnot, and to collect more reference material.
  3. Create a PR and set "exercism/go" as reviewers. Additionally, you can write in #maintaining-go 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.
@andrerfcsantos andrerfcsantos added x:action/create Work on something from scratch x:knowledge/intermediate Quite a bit of Exercism knowledge required x:module/concept Work on Concepts 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 x:rep/medium Medium amount of reputation labels May 28, 2022
@andrerfcsantos andrerfcsantos changed the title Implement new concept exercise: enum pattern Implement New Concept Exercise: Enum Pattern May 28, 2022
@junedev junedev added the x:rep/large Large amount of reputation label Jun 9, 2022
@junedev

This comment was marked as resolved.

@andrerfcsantos

This comment was marked as resolved.

@junedev

This comment was marked as resolved.

@junedev junedev removed the x:rep/medium Medium amount of reputation label Jun 9, 2022
@junedev junedev changed the title Implement New Concept Exercise: Enum Pattern Improve Concept Exercise: Constants Jun 29, 2022
@junedev
Copy link
Member

junedev commented Jun 29, 2022

@andrerfcsantos I updated the issue title and the description. Would be great if you could double check it makes sense. Feel free to make more edit as you see fit.

@junedev junedev changed the title Improve Concept Exercise: Constants Improve Concept Exercise: Savings-Account (Constants) Jun 29, 2022
@andrerfcsantos
Copy link
Member Author

@junedev Thanks for taking care of this. I took a look and it sounds great!

@ghost

This comment was marked as outdated.

@junedev

This comment was marked as outdated.

@ghost

This comment was marked as outdated.

@ghost

This comment was marked as outdated.

@junedev

This comment was marked as outdated.

@junedev
Copy link
Member

junedev commented Dec 10, 2022

See also #1584

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/intermediate Quite a bit of Exercism knowledge required x:module/concept Work on Concepts x:module/concept-exercise Work on Concept Exercises x:rep/large Large amount of reputation x:size/large Large amount of work x:type/content Work on content (e.g. exercises, concepts)
Projects
None yet
Development

No branches or pull requests

2 participants