librelist archives

« back to archive

Non-linear paths for a future exercism

Non-linear paths for a future exercism

From:
Peter Minten
Date:
2013-11-05 @ 17:21
Hi all,

Currently exercism paths are extremely linear, you go from one exercise
to another based on the curriculum. This is great because it increases
the nitpicker pool for earlier exercises. I was wondering if it would be
possible to make the curriculum less linear while at the same time
preventing a situation where user A has done exercise 1 and 5, user B 2
and 4, user C 3 and 6 and so on.

The key, I think, might lie in offering a fixed number of "next"
exercises and a bit of clever ordering. Actually it would also work even
with not so clever ordering. Say we give the user a choice of 4
exercises on how to proceed and we select those 4 by simply taking the
first 4 exercises from ordered curriculum list with the exercises the
user has already done removed.

So the user would start with exercises 1 2 3 4, user does exercise 3,
list is 1 2 4 5, user does exercise 5, list is 1 2 4 6.

The user would be able to jump ahead a bit by ignoring some of the
earlier exercises but if the user wants the maximum amount of options
he/she would have to do the ignored exercises. So there's a bit of soft
pressure to do those exercises. Of course there should be a way for the
user to say "I really don't want to do this exercise, don't bother me
with it".

A variation on this idea uses a Directed Acyclic Graph to supplement the
curriculum. Every exercise would have a requires list containing
exercises that the user should have done first.

When the next-exercise options for the user are computed each exercise
gets assigned a score and the four exercises with the lower score are
presented. The score is primarily based on the prerequisites of
exercises, with the curriculum order as a tie breaker. The basic idea is
that if a user does not fit the prereqs yet there is at least one
exercise that the user could first. By counting the number of exercises
that would be needed (this is where the graph is important) one gets a
pretty good idea of how suitable the exercise is.

For example say there's a comonad zipper exercise that has in the
requirements that the user should have learned about monads and zippers
first. The zippers exercise requires the user to have learned about tree
structures. The monads exercise requires the user to have learned about
functors and type classes.

Now comes a user who has done the type classes and tree structures
exercises. That means that user needs to do the functor exercise, the
monad exercise and the zipper exercise to fulfil the requirements. So
the exercise gets a score that puts it behind exercises where the user
only has to do two prereqs.

Because the four most suited exercises are selected it's guaranteed that
even if the user doesn't do the prereqs and just tells the system to not
bother with those exercises sooner or later the comonad exercise will
show up.

This is all a rough idea though and I'm not sure the prereq system would
work well in practice, but something feels right about giving the user a
little choice and trying to present the most fitting exercises.

Greetings,

Peter

Re: [exercism] Non-linear paths for a future exercism

From:
Katrina Owen
Date:
2013-11-06 @ 14:51
On 11/05, Peter Minten wrote:
> I was wondering if it would be
> possible to make the curriculum less linear

I just wanted to say that I think this is probably the direction that it
will end up going in, I'm just unsure of when and how.

Thank you very much for taking the time to think about this and explain
your thoughts and ideas -- it's very helpful, and I look forward to
coming back to it once I have the headroom to start planning how to
structure the change.

Katrina

Re: [exercism] Non-linear paths for a future exercism

From:
Jason May
Date:
2013-11-08 @ 19:50
I would like to see the series of exercises not be the same for every user.
But I'm not sure that offering a choice of next exercise would be so
useful. Having an "apparent" linearity means that a user can just say
"exercism fetch" and get something new. But if "what's next" was at least
partially random, then we'd get coverage of a larger fraction of the
exercise pool rather than having everyone following the same track.

How about something like this:

- assign "points" to each exercise (maybe a crude complexity measure)
- new users are randomly assigned one of the 1-point exercises
- you must complete N exercises with <=M points before you will be randomly
assigned an M+1 exercise
- once you get to "level M" you may still be assigned exercises with <M
points, but perhaps the exercises will gradually skew to more complex

This sort of approach might also fit with the earlier discussion of having
different sorts of exercises. You could either try to fit all sorts of
exercises into a single ranking system, or have separate rules that say
"once you have completed green exercises up to level M, then you can start
on blue exercises".

I'd like to avoid the need for some sort of dependency tree, because those
can be difficult to maintain.

-Jason



On Wed, Nov 6, 2013 at 6:51 AM, Katrina Owen <_@kytrinyx.com> wrote:

> On 11/05, Peter Minten wrote:
> > I was wondering if it would be
> > possible to make the curriculum less linear
>
> I just wanted to say that I think this is probably the direction that it
> will end up going in, I'm just unsure of when and how.
>
> Thank you very much for taking the time to think about this and explain
> your thoughts and ideas -- it's very helpful, and I look forward to
> coming back to it once I have the headroom to start planning how to
> structure the change.
>
> Katrina
>
>

Re: [exercism] Non-linear paths for a future exercism

From:
Peter Minten
Date:
2013-11-09 @ 09:22
Random might work as well, or we could give the user a choice: "exercism
fetch" returns a random suitable exercise but you can also explicitly
choose an exercise.

I do think some form of dependencies are good. For example I've been
thinking about a comonad exercise (not sure if I'll write one, might be
too esoteric and/or show off my own too limited comonad-foo). Comonads
are typically demonstrated with zippers. Zippers are somewhat tricky the
first time you hear about them. So I want to prevent users facing the
comonad exercise before they have faced the zipper exercise otherwise
the user would have to learn two concepts at the same time which makes
the exercise unduly hard.

That said most exercises won't need dependencies so there shouldn't be a
need for a big dependency tree.

A complexity/difficulty rating, as you suggest, would go a long way as well.

I don't think we should force users to do green exercises before blue
ones. While green exercises are simpler than blue exercises they are
intended as extra help for people who have problems with the blue ones.
Forcing everyone to do green exercises would be demotivating for most users.

On 11/08/2013 08:50 PM, Jason May wrote:
> I would like to see the series of exercises not be the same for every user.
> But I'm not sure that offering a choice of next exercise would be so
> useful. Having an "apparent" linearity means that a user can just say
> "exercism fetch" and get something new. But if "what's next" was at least
> partially random, then we'd get coverage of a larger fraction of the
> exercise pool rather than having everyone following the same track.
> 
> How about something like this:
> 
> - assign "points" to each exercise (maybe a crude complexity measure)
> - new users are randomly assigned one of the 1-point exercises
> - you must complete N exercises with <=M points before you will be randomly
> assigned an M+1 exercise
> - once you get to "level M" you may still be assigned exercises with <M
> points, but perhaps the exercises will gradually skew to more complex
> 
> This sort of approach might also fit with the earlier discussion of having
> different sorts of exercises. You could either try to fit all sorts of
> exercises into a single ranking system, or have separate rules that say
> "once you have completed green exercises up to level M, then you can start
> on blue exercises".
> 
> I'd like to avoid the need for some sort of dependency tree, because those
> can be difficult to maintain.
> 
> -Jason
> 
> 
> 
> On Wed, Nov 6, 2013 at 6:51 AM, Katrina Owen <_@kytrinyx.com> wrote:
> 
>> On 11/05, Peter Minten wrote:
>>> I was wondering if it would be
>>> possible to make the curriculum less linear
>>
>> I just wanted to say that I think this is probably the direction that it
>> will end up going in, I'm just unsure of when and how.
>>
>> Thank you very much for taking the time to think about this and explain
>> your thoughts and ideas -- it's very helpful, and I look forward to
>> coming back to it once I have the headroom to start planning how to
>> structure the change.
>>
>> Katrina
>>
>>
>