kantord / LibreLingo

๐Ÿข ๐ŸŒŽ ๐Ÿ“š a community-owned language-learning platform
https://librelingo.app
GNU Affero General Public License v3.0
1.94k stars 214 forks source link

Documentation on the teaching approach of LibreLingo #1496

Open zmbc opened 3 years ago

zmbc commented 3 years ago

Is your feature request related to a problem? Please describe.

Most of LibreLingo's documentation focuses on technical aspects, or the low-level tasks involved in creating or editing a course.

However, there are many questions not answered in the documentation about LibreLingo as a teaching tool:

Describe the solution you'd like I apologize if I've missed answers to any of these questions that are already present in the documentation. I was not able to find them.

To answer some of my other questions about challenge types (see #1495) I used trial-and-error testing of the app (and dug around in the code) to find the answers. Some of these questions could be investigated the same way, but some (especially the why questions) cannot.

Additional context I am happy to assist in writing this documentation, to the extent I can be useful without knowing the answers already (see previous paragraph).

kantord commented 3 years ago

Thanks @zmbc this is a good point.

If you want to assist in writing this doc, I'll be happy to review a PR. It would be a very valuable contribution.

To help, I'll try to answer your questions.

What is the reasoning behind the set of challenges present, and the way they are designed?

Card challenges: these can create association between words and images. It's also useful because answering correctly technically doesn't require any pre-existing knowledge in the foreign language, as the answer can be found by looking at the pictures. Though this challenge type can only by used for certain words, it's a very useful tool to teach simple words, plus it's a way to add an easy exercise with colorful pictures in order to make LibreLingo a bit more exciting to use.

Option challenges: this is also an easy exercise since you have a set of clues in order to retrieve a word from your memory.

Short input challenges: these serve multiple reasons. One is to teach using the target language's native writing system. It's currently the only challenge type that forces you to spell out a word. Another reason is to create a more difficult type of exercise that forces you to retrieve the word without any extra clues. For now this only exists for words, but for phrases we should create another challenge type which is similar, but offers clues word-by-word using the mini-dictionary.

Listening challenge: this serves to train listening comprehension.

Chips challenge: this serves to train the user to be able to construct sentences on their own. Effectively this is meant to teach the syntactical rules of the language as well as to simply expose the learner to more complex examples.

What is the overall teaching approach LibreLingo aims for, even if not all of it is implemented yet?

I think there are multiple ways to answer this.

On one hand, LibreLingo courses should focus on teaching by example. Since one of the main factors in learning success is the time you spend learning, the courses should be easily approachable and the learning sessions should be very flexible. If the course material doesn't take a set amount of time to interact with and doesn't take a lot of preparation to start with, then the user is hopefully more encouraged to make learning a routine that they can do very regularly.

LibreLingo uses spaced repetition. Ideally spaced repetition is implemented by the course content itself (i. e. relatively rare words are repeated at increasing intervals in the course content itself), but there's no software supporting this correctly. However, repetition for already completed skills is already implemented in software.

On the other hand, it's a long term goal to fully embrace the advantages of a free software/open source/public domain nature and build tooling that will encourage greater creativity and customization. This means that a course could be forked and adapted to different environments/organizations or even be used by a private teacher to create a customized course for their student.

(more answers coming up)

kantord commented 3 years ago

How and why are challenges sequenced in a skill?

if you mean in what order challenges show up, then a rough outline:

How and why are challenges split into levels of a skill?

These are split randomly. They are split into different levels so that you have smaller chunks of learning material for each skill, without requiring the course authors to create very very small units manually. This should also make the general overview of the course more manageable as it reduces the overall number of skills needed in a courses.

As for the reasons for the random split:

How does LibreLingo implement spaced repetition?

It is implemented in a very simplified way. As mentioned above, partially it can be implemented by organizing the course content carefully, but the predictability/accuracy there is very low.

Another way spaced repetition is implemented is by "stale" skills. "Stale skills" need to be practiced for them to become fresh again.

Here's the formula that implements spaced repetition correctly: https://github.com/kantord/LibreLingo/blob/main/apps/web/src/db/skill/_logic.js

Note that this formula is hardly perfect and there's currently no feedback that could be used to fine-tune it

kantord commented 3 years ago

btw, @zmbc, might this issue partially overlap with this one? https://github.com/kantord/LibreLingo/issues/1147#issue-821828880

zmbc commented 3 years ago

Thank you so much @kantord -- this is extremely helpful background, even just for me personally as a course author.

I love writing documentation and am very much interested in adding this context, but I think for now I am going to prioritize continuing to develop the content of the toki pona course. I will come back to this!

stale[bot] commented 2 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

zmbc commented 2 years ago

Don't close this, stale-bot! ๐Ÿ™‚