Typos. They're killing me. I really think that the typos detection algorithm (or whatever fancy name you gave it) should be more flexible.
For example: if you type 'if' instead of 'of' you'll automatically lose a heart, regardless of how close the letters 'i' and 'o' are on the keyboard, you'll lose a heart because 'if' is an existing word.
I can give a more specific direction about where exactly can we improve it if needed.
The issue that you run into is different keyboards. Someone using a US standard keyboard is going to have different typos than someone using a French standard keyboard.
Duo would have to 1) ask users what keyboard they are using, and 2) set different algorithms for acceptable typos across all the different keyboards in all the courses.