If you're learning a new programming language -- or considering it -- I highly recommend checking out Koans. Essentially, you clone a github repository that has 200 or so failing test cases. Then, you work your way through the test cases, writing functions and filling in the blanks, getting the tests to pass one by one. The first few tests are very basic and assume no prior knowledge of the langua