Lake Atitlan, Guatemala
Software development 

Language Logic

This is an experiment with a language learning app that I created in 2019. The idea is to build a foundation in one logical step at a time, instead of the usual way of memorizing phrases. 

It also keeps track of your confidence in each word and grammar rule, so it can use spaced repetition.

You can try it here:

When I moved to Colombia and started learning Spanish, I was not happy with the online courses I tried. I initially liked the child-like system of Rosetta Stone, where you look at pictures and get no explanation, so you have to infer what the word means, pretty much the way a child learns. But very soon I realized that this only works for very simple ideas, and that it is a waste of time when you already know a language. Then I tried Duolingo and similar online courses, but found that they didn't explain language ideas very well. I also thought back on learning English, German and French in school as a kid, and the Thai classes I took for three months in Bangkok. None of these hands-on or online methods had worked really well for me. This is because I have a hard time taking in a lot of new information at once, and I need a lot of repetition to make it stick. I am very poor in a typical classroom setting. I need to get home and really grind at the words. I suspect that there are many people who feel the same.

In Colombia I ended up using flashcards. I made a deck of cards with one word per card, and wrote the English word on one side and the Spanish on the other. I took 30 minutes per day where I plowed through the deck of cards multiple times, and tried to remember each word. Every day I added a few more cards. It could be words I read on a sign, or words I heard when talking to someone, etc. The cards I got confident in, I put aside to repeat less often. My vocabulary increased over time, and this was very effective.

Spaced repetition

Then I thought about what this would look like as a software application. The method to practice words that you are unfamiliar with more often than words you know well is called spaced repetition. There are many words and you have limited time, so you don't want to waste time on things you already know. This is the problem with a lot of language learning systems today. Instead, you gradually space out the repetition as your confidence in the word increases. The trick is to know how much to space it out. Too little and it feels repetitive, too much and it feels like an unknown word and your memory is not reinforced.

Building from the ground up

Another issue I have with typical language courses is that they start with phrases, for example "Hello, how are you?" - "¿Hola, como estas?" This is to get the joy from having a conversation right away. But then you have no idea what each word in the sentence actually means. I strongly believe that when you also understand the details, you can memorize it better; it gives a fuller understanding. For example, what does "estas" mean? So you should start from the opposite end, with the simplest possible ideas. You introduce a few ideas at a time, and describe them in a very clear way. The student should never have to guess what anything means, it should be totally obvious.

I did some research and tried to figure out if this was possible at all, for example with Spanish, and I think it is. That is when I created Language Logic. The idea behind the name is that you build your understanding one logical step at a time, you don't waste time on things you already know, and the course adjusts itself to your own pace.

Language Logic

I created this app to test my idea that it is possible to learn a complex thing like a new language in small logical steps.

The course is split into lessons, where each lesson teaches a few new words, and usually also a grammar rule that is exemplified by the new words. Each new lesson builds on what you learned in the previous lesson.

You start the course by reading the first lesson, which for this course explains Spanish nouns and noun genders, including a few example words. Then you practice word by word, as if you are using flashcards. You look at the English word and type in the Spanish translation. You hit enter, and the app checks if you typed right. If correct, a voice says the word out loud and you repeat it out loud. Then on to the next word. 

You keep on grinding the words like this until they stick. The more ways you can create a "memory hook" for a word the better. Reading, writing, voicing out loud, listening, looking at a picture, etc. You type a lot in this app, which might not be for everyone. Personally I feel it reinforces the words even better.

To create the first lesson, I had to find the absolute minimum number of ideas to introduce to an English speaker: the idea of nouns, the idea that nouns have genders, and a few example words that use English pronunciation rules (no foreign letters, sounds or rules).

The second lesson adds to this by introducing plural forms of the same words. The third lesson explains how to put stress on certain syllables. And so on. I created 14 lessons in total, just to cover the very basics, and see if the app idea was viable or not.

When I wrote the lessons, I stayed away from linguistic terminology to make things look very simple. You don't have to know that a certain class of words are called indefinite articles, to be able to use them. But the user can opt in to have that explained if he wishes.

The app also gives hints in different ways. If you have never typed the word before, the app tells you what to type (the Spanish translation), and you repeat that three times to reinforce it. The next time you practice it, the app hints with a few letters of the word. This is also what happens if you type wrong. Then you continue typing and guessing, and the app gives you more and more of the letters.

You can run the app in different modes, depending your own preference: 

  • English to Spanish
  • Spanish to English
  • Listen to a Spanish voice and write what it says
  • English to Spanish, but picking from a list of words
  • Mixed mode (uses all four modes in sequence)

Confidence and streak

The app keeps track of how well you know single words and how well you know the chapter they belong to (i.e. the grammar rule the chapter taught). This is done by having a confidence value from 0 to 100 and a streak value from 0 to 100 for each word/lesson. When you give a correct answer, the streak value is increased by one, and the confidence value is increased by the streak value. For a wrong answer the confidence value is not changed, but the streak value is halved. So in effect, the more times in a row you answer right, the faster the confidence value will increase. You can also bypass this process by "boosting" the confidence value manually for a word, to indicate that you actually know this word already, no need to practice it.

The beauty of this system is that app does not need to have a plan for what order the words should be practiced. Each time the app moves on to practice the next word, it first looks at all the words in its database, then ranks them in order of confidence, and then picks the word with the least confidence, but which has also not been practiced recently. Then the words will automatically be spaced out to the ideal repetition frequency. The word picking algorithms in the app are actually quite complex, but the core of the idea is very simple.

A new word is introduced when all current words have reached a minimum confidence value. A new lesson is presented when all words have reached a different (higher) confidence value. This is adjustable by the user, so he can control the pace of new ideas.

There is no start or end to a learning session; you simply continue the next session where you left off.

Phrases and sentences

You memorize words even better when they are part of phrases. Then you get the natural context for each word. This technique is used as soon as possible in the app. Single word practice is only done for the first few lessons.

Although the app contains thousands of phrases you can practice, it only keeps track of your confidence in single words and grammar rules, not phrases. Each time it selects the next phrase to practice, it first picks a word to practice, and then picks the most suitable phrase for that word given your current vocabulary. For example, in the beginning when it selects "cat", you might only understand "cat" and "white cat". Later more complex phrases like "we went to the shop to buy a black cat" are selected. That phrase practices many words and grammar rules in one go, and all of them get their confidence values increased when you give the right answer. This way the app can keep track of exactly what your strengths and weaknesses are. For example, if you are poor at verb conjugations, that is what will be selected.

I also implemented an advanced system for checking the correct answer. It keeps track of alternate translations, and if the words are correct but in the wrong order, to give hints on what you need to do to correct your answer.

I have never seen this system implemented anywhere. Courses are either complex phrases taught through a strict path, or they are simple words practiced by spaced repetition. This system is combining the best of both.

« ‡ »