-
-
Notifications
You must be signed in to change notification settings - Fork 544
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
Identify computer science algorithm exercises #761
Comments
|
The |
|
Are there other algorithms that will pass the tests for Is that the difference between a "good" and a "bad" specfic algorithm question? |
@Insti I think that's it! |
Oh. In that case, it's time to suggest (Or should the tests enforce parallelism, and how? Like exercism/haskell#542 ?) |
binary? |
The core of the matter for me is not about implementing a specific algorithm. It's that the algorithm does not help me improve for that particular language and that sometimes I spend more time on the algorithm than on the language. Also, I'm not learning how to program, I'm just practicing a new language. Do I really need that many exercises teaching me recursion in this new language? I know it helps to repeat some concepts, but at some point, it's just one exercise after another teaching you nothing new. One good exercise, "Saddle Points" on Haskell, it's pretty hard to solve with the given method signature. I took it as a challenge and solved it. And I learned a few things about the related APIs. Here the algorithm was easy, it was the hunting for the useful hooks that was educational. "Parallel Letter Frequency" was hard because you are given no hint on what to use. I read a lot of (some, dubious) articles until I decided to use the simplest function I could use. And it worked. Right now, after "Robot Name" which was good as I used a I feel like the following exercises are missing a chance to teach me some new language concept or very common language module / function / pattern. |
Thanks @emilianbold this makes a lot of sense, and I think you're right. We definitely need to retire exercises that are not teaching anything. I don't know whether we know which ones feel like they're not teaching anything though, and this is likely different from language to language. /cc @iHiD @nicolechalmers not directly related to the redesign, but a question we might want to discuss in order to have some ideas about how to figure out which exercises are not helping. |
I would imagine whether or not an exercise teaches anything can also vary from person to person. |
Let's rephrase it to "exercises that are teaching things aligned with the
goal of exercism, which is to increase fluency in a language - not to
develop computer science skills"
…On Mon, 3 Jul 2017, 23:40 Stuart Kent, ***@***.***> wrote:
I would imagine whether or not an exercise teaches anything can also vary
from person to person.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#761 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AARfDDeaKK0NGjfmG5uzEUkFcMlBRqZmks5sKW3DgaJpZM4NAsPD>
.
|
To clarify: This is not saying that we can not use traditional cs ideas to solve the problems right? Can we still have a custom stable sorting problem where a user is pretty much being asked to sort an array and just suggest the many different ways this can be done? Another example that comes to mind is Priority Queues. There are many different ways this can be done with out having to specify to the user to use a Heap. Etc. |
If the aim so to teach the user about the 10 different ways Ruby lets you
sort, then great. If the aim is to teach 10 different ways to sort and the
choice of Ruby is coincidental, then less great. In my understanding.
…On Thu, 25 Jan 2018, 19:52 Cheyo Jimenez, ***@***.***> wrote:
To clarify: This is not saying that we can not use traditional cs ideas to
solve the problems right?
Can we still have a custom stable sorting problem where a user is pretty
much being asked to sort an array and just suggest the many different ways
this can be done?
Another example that comes to mind is Priority Queues. There are many
different ways this can be done with out having to specify to the user to
use a Heap. Etc.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#761 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AARfDKMHH86FAEihkGJm5H0QqBvxUHowks5tONtzgaJpZM4NAsPD>
.
|
I feel the opposite: there's value in knowing various sort algorithms,
learning their performance characteristics, implementing them. Even if 98%
of the time in the real world you'll just use the sort function from the
standard library, there's that one time in 50 when you need to specify the
particular algorithm used in order to get the performance characteristics
you need.
In my opinion, there aren't many better problems than sorting for
demonstrating in a visceral way that different algorithms have different
performance characteristics. Any given sort algorithm is simple enough to
implement quickly on your own, but with well-chosen test cases you can feel
the performance difference for yourself. If you just use standard library
sort all the time, you don't get that knowledge.
On Fri, Jan 26, 2018 at 1:16 AM, Jeremy Walker <[email protected]>
wrote:
… If the aim so to teach the user about the 10 different ways Ruby lets you
sort, then great. If the aim is to teach 10 different ways to sort and the
choice of Ruby is coincidental, then less great. In my understanding.
On Thu, 25 Jan 2018, 19:52 Cheyo Jimenez, ***@***.***>
wrote:
> To clarify: This is not saying that we can not use traditional cs ideas
to
> solve the problems right?
>
> Can we still have a custom stable sorting problem where a user is pretty
> much being asked to sort an array and just suggest the many different
ways
> this can be done?
>
> Another example that comes to mind is Priority Queues. There are many
> different ways this can be done with out having to specify to the user to
> use a Heap. Etc.
>
> —
> You are receiving this because you were mentioned.
> Reply to this email directly, view it on GitHub
> <https://github.com/exercism/problem-specifications/issues/
761#issuecomment-360580666>,
> or mute the thread
> <https://github.com/notifications/unsubscribe-auth/
AARfDKMHH86FAEihkGJm5H0QqBvxUHowks5tONtzgaJpZM4NAsPD>
> .
>
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#761 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AHdeTkB5M01RuuBxg4_e5yh_fSggnW0Nks5tORl0gaJpZM4NAsPD>
.
|
Yes, there is value in this, however that is not—directly—what Exercism is about.
This is a good point. I would be open to a sorting-based exercise, provided that it is framed in terms of a problem to solve that isn't directly saying "learn to sort". Just as two-fer is not framed as "optional default values" or some other theoretical concept. If we can have an interesting exercise that has the possibility for people to get a visceral experience with algorithm performance characteristics, that is fine. |
We currently have at least one, maybe several exercises that asks the learner to implement a specific algorithm.
We discussed whether this type of exercise is a good fit for Exercism, in exercism/discussions#124 and concluded that:
We need to identify which exercises target an algorithm rather than targeting what the algorithm does.
The one that started the discussion in
sieve
, but I'm not sure if that's the only one.Once we've identified them, we need to open a new issue to implement the new exercise and deprecate the old one.
Exercises identified as too specific
sieve
binary-search
The text was updated successfully, but these errors were encountered: