Nice, but needs some more attention to variant (but equivalent) responses.<p>For example, for one of the questions in the first module I selected "Other", then typed "Error" (in the free-form response box). The answer it was looking for was "error" (lower-case e).<p>Either it should accept both, or if you're really insistent on distinguishing the two, it should be made more clear at the beginning that system messages (rather than explicit results) are going to be case-sensitive. Counting "ABC" wrong when the expected answer is "abc" would be fair game. Counting "Error" wrong for a pseudo-language that hasn't even been formally defined is not, or so I see it.<p>Looking at some of the languages on which this is claims to be based:<p>In JavaScript, typing abc when it's undefined produces:
Uncaught ReferenceError: abc is not defined
at <anonymous>:1:1
(anonymous) @ VM33:1<p>(note capital E in ReferenceError)<p>In Python3 you get:<p>NameError: name 'abc' is not defined. Did you mean: 'abs'?<p>(again, note capital E in NameError)<p>In Racket 8.9 you get:<p>abc: undefined;
cannot reference an identifier before its definition<p>(no 'error' of any kind!)<p>I didn't install OCaml, because I need another "package manager" like I need a hole in the head.<p>Java: does not compile, although to be fair the compiler error message does have an 'error with lower-case e' in it.<p>C#: Yeah, not gonna install that either.<p>This may seem extremely nit-picky (and it is), but when you're teaching people who've never programmed before, and who may have never even encountered the concept of case sensitivity before ("But Google doesn't care even if I type in all caps!"), nit-picky is the way it needs to be.<p>As I said, I do like this, but it needs more attention paid to parsing free-form responses. The problem is not unique to this system, of course. The free-form response is where most systems of this general type tend to fail.