Speaking from my personal experience: you can get very far just by dumping a few hundred questions/examples/small-problems into your favorite SRS. That's so many that your mind, rather than memorize them, will instead learn just how to do them. This works as well for math or CS as for languages.
I've proposed for Mnemosyne 2.0 that there be a card type which is just some Python code which is evaluated: http://groups.google.com/group/mnemosyne-proj-users/browse_t... The idea is that if you want to learn, say, multiplication, you would write some Python code that generates 2 random ints (as the question) and their product (as the answer), and now the user must solve it. You get much the same benefit as if you generated several hundred problems by hand or by script, but without cluttering your deck or risking memorizing some.
I've proposed for Mnemosyne 2.0 that there be a card type which is just some Python code which is evaluated: http://groups.google.com/group/mnemosyne-proj-users/browse_t... The idea is that if you want to learn, say, multiplication, you would write some Python code that generates 2 random ints (as the question) and their product (as the answer), and now the user must solve it. You get much the same benefit as if you generated several hundred problems by hand or by script, but without cluttering your deck or risking memorizing some.