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

Discussion: What order should the exercises be? #37

Closed
Stargator opened this issue Sep 23, 2017 · 6 comments
Closed

Discussion: What order should the exercises be? #37

Stargator opened this issue Sep 23, 2017 · 6 comments

Comments

@Stargator
Copy link
Contributor

Currently, the order of the exercises are defined in the config.json. Further documentation about that file can be found here.

There are only 7 exercises and I think it's important to stop and think about where we are now before blindly implementing three more exercises to reach the minimal of 10.

None of the exercises block another. And they are all rated at the same difficulty.

So we need to discuss the following topics:

  • Which exercise is part of the core set of exercises necessary to complete the track (For example, I think Hello-World is a given, but it's not listed that way in the config.
  • If we should have any exercise dependent on another in order to be "unlocked"
    • I think the core exercises should definitely have a order to how they are unlocked
  • Provide a rough estimate of the difficulty level of an exercise on a scale of 1 to 10

The current exercises are as follows (listed as ordered in the config.json):

  • Hello World
  • Leap
  • Hamming
  • RNA Transcription
  • Bob
  • Gigasecond
  • Difference of Squares
@Stargator
Copy link
Contributor Author

@fwip You've plowed through the exercises, what do you think?

@Stargator
Copy link
Contributor Author

Stargator commented Sep 23, 2017

I'm thinking maybe exercises in this order with the following difficulty:

  • Hello World (difficulty - 1)
  • Leap (difficulty - 1)
  • Bob (difficulty - 1)
  • Hamming (difficulty - 2)
  • Gigasecond (difficulty - 2)
  • RNA-Transcription (difficulty - 3)
  • Difference of Squares (difficulty - 3)

The latter two seem, to me, the most complex in terms of implementation.

@fwip
Copy link
Contributor

fwip commented Sep 23, 2017

I think your proposed ordering & ratings are pretty good. I could see rating Bob a bit higher, as it involves looking up a number of string methods. But I do like that it's basically just a series of if statements, no new flow-control concepts.

Similarly, I could see putting Difference of Squares before Hamming, as I feel like it might be more natural to introduce for loops with numbers rather than letters in a string? This could just be an artifact of how I was taught (and math was always my best subject in school). I haven't looked very much at the ordering of exercises in other language tracks, and you've probably got an established order to them already.

@Stargator
Copy link
Contributor Author

Stargator commented Sep 23, 2017

Based on @fwip's suggestion, I looked at how the Java track did the exercises. Though it's not one-to-one this may help for comparisons sake. Note: There are additional tests not shown as we haven't implemented them.

  • Hello World (difficulty - 1)
  • RNA-Transcription (difficulty - 2)
  • Hamming (difficulty - 3)
  • Gigasecond (difficulty - 3)
  • Difference of Squares (difficulty - 3)
  • Bob (difficulty - 5)
  • Leap (forgone ie no longer used, I believe)

I think moving RNA to after Hello World is a bigger jump than we want for users.

So based on @fwip's feedback and what I see from the Java order:

  • Hello World (difficulty - 1)
  • Leap (difficulty - 1)
  • Difference of Squares (difficulty - 2)
  • Bob (difficulty - 2)
  • Hamming (difficulty - 2)
  • Gigasecond (difficulty - 3)
  • RNA-Transcription (difficulty - 3)

Additional Notes:

  • These would be listed as core exercises.
  • Because of how the tests are structured in Gigasecond, there's a issue to add setup/teardown to it with comments so that users can get exposed to that concept For the Gigasecond exercise, introduce the concept of "setup" and "teardown" for the test framework #31
  • Some tests will likely be re-organized to introduce "groups" in the test suite with some explanatory comments. We want to slowly guide users to understand how tests can be organized over the course of some of these core exercises.
  • Just created a PR to add Anagram exercise to our list. I figure once the current order was finalize, Anagram could be added at the end.

@Stargator
Copy link
Contributor Author

Okay, going to create a PR to implement this change.

@Stargator
Copy link
Contributor Author

Closing as the related PR was merged

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

No branches or pull requests

2 participants