I wrote a program to quiz me on Spanish vocabulary a few years ago. I still use it every quarter. I learned a bunch of music stuff from it earlier this quarter, and right now I'm having it quiz me on classics authors/works. The cool thing about it is that it keeps asking questions until you've both answered it a few times correctly in a row, and your overall correct/wrong ratio on that question is above a certain threshold (I forget all the parameters now, and am too lazy to go look). I learned a few dozen German cities and rivers this way, too, back in high school.