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

problems.md: Remove topics #242

Merged
merged 5 commits into from
Jan 8, 2017
Merged

problems.md: Remove topics #242

merged 5 commits into from
Jan 8, 2017

Conversation

petertseng
Copy link
Member

@petertseng petertseng commented Jan 7, 2017

History:

Thanks to the hard work of #167 and #127, we have topics in problems.md
that tell why we ordered problems a certain way.

After #229 (motivated by #179), we copied the topics into config.json,
since now all tracks can take advantage of the "topics" concept.

To reduce duplication, we can remove topics from problems.md now.

What's left in problems.md is a bit of prose explaining why we order our
problems the way they do, and the division of the problems into
sections.

Closes #236

Copy link
Member Author

@petertseng petertseng left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As you can see, I have chosen not to add a sections.json yet since I'm not 100% convinced it's worth the time.

difference-of-squares | fold & map
sum-of-multiples | algorithm, borrowing
grains | math, panic
* hello-world
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Or alternatively, would "This section starts at hello-world and ends at grains" be acceptable? Might be less maintenance/duplication that way?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added that as a separate commit, see if we like it.

@IanWhitney
Copy link
Contributor

The "This section begins with..." seem like they'll go quickly out of date. How about something more abstract, that states our values without going into the exact implementation.

https://gist.github.com/IanWhitney/3dc56aef520afe3146924b3552abdc52 is an idea

@petertseng
Copy link
Member Author

Your proposal seems good to me, since it removes the last traces of duplication. So now, I have to ask: Do you mind if I start with that?

I'll see if I have any changes to suggest.


#### Early Problems

Early problems should focus on Rust syntax and concepts that are present in many programming languages: conditionals, looping, higher-order-functions.
Copy link
Member Author

@petertseng petertseng Jan 7, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it gives me a bit of pause to see higher-order functions in the same sentence. But why is that? I realized:

  • It seems "weird" to put this in the section before Result and Option... because I usually associate higher-order functions, Result, and Option all with functional programming.
  • And of these three, it does seem that higher-order functions take more effort to understand.
  • However, maybe my estimates of the effort required to understand any concept in this sentence are wildly wrong.
  • Finally, on further reflection, it is true in my experience that a language can have higher-order functions without either Result or Option (the latter two need static typing to really make sense)

So despite my "weird" feeling, the sentence is correct and I've no change to suggest. I just wanted to share the feeling.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think HOF will depend entirely on the students' background. Those coming from Ruby/JS/Python/Java 8 will be familiar. I think they are becoming pretty standard, though that might just be my years of Ruby speaking.

Problems late in the track should do one of two things:

1. Introduce advanced concepts -- Lifetimes, Concurrency, Unsafety
2. Require a complex solution that synthesizes all the knowlegde students have gained to date
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

spelling of "knowledge"

@petertseng
Copy link
Member Author

spelling error in commit message

s/hrad/hard/

petertseng and others added 5 commits January 7, 2017 10:19
History:

Thanks to the hard work of #167 and #127, we have topics in problems.md
that tell why we ordered problems a certain way.

After #229 (motivated by #179), we copied the topics into config.json,
since now all tracks can take advantage of the "topics" concept.

To reduce duplication, we can remove topics from problems.md now.

What's left in problems.md is a bit of prose explaining why we order our
problems the way they do, and the division of the problems into
sections.

Closes #236
This reduces duplication and hopefully requires fewer changes to
problems.md
Since it only has the ordering philosophy and not the actual topics,
it's time to rename.
Specific statements of "This section begins with..." seem like they'll
go quickly out of date.

This commit uses something more abstract, that states our values without
going into the exact implementation.
@petertseng petertseng merged commit 53e2b41 into exercism:master Jan 8, 2017
@petertseng petertseng deleted the rm-topics-from-problems-md branch January 8, 2017 19:12
petertseng added a commit that referenced this pull request Jan 30, 2017
As noted in #195, difficulty rating is hard.

This commit proposes a difficulty rating scale that should be completely
unambiguous, requiring no judgment:

In the last version of problems.md before it was rewritten in #242:

* Everything in "Introduction" stays at 1.
* Everything in "Getting Rusty" gets a 4.
* Everything in "Rust Gets Strange" gets a 7.
* Everything in "Putting it all Together" gets a 10.

It is acknowledged that this is not a perfect difficulty scheme. See,
for example, how many exercises are at 4.
However, it is more accurate than leaving them all at 1 because it is
generally true that those exercises in "Getting Rusty" are more
difficult than those in "Introduction".
It is a starting point from which further adjustments can be made.
I posit that there is little motivation to adjust further until the
difficulty ratings actually show up on the website, since until then
they are just arbitrary numbers with no meaning.

Closes #179.
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

Successfully merging this pull request may close these issues.

2 participants