I have been teaching myself computer programming over the past few months by working through
this online Python textbook, and trying to complete the exercises on MIT's opencourseware Intro to Computer Science.
The tutorial does an excellent job of explaining the fundamentals and I'm now familiar with basic syntax and structures. However, I'm kind of at a stopping point. I've basically read through the tutorial (and one or two others) twice and finished the exercises in it, but I haven't completely submitted to knowledge everything in it. Just as importantly, the exercises provided in the tutorial cover only the basics and I doubt that if I was faced with a "unique", complex problem that I'd be able to write my own code to solve it.
So I have two questions:
First, based on my past experience in mathematics, the best way to learn new material is to go through a set of exercises/problems, try to do them on my own, and then look at the solutions. The MIT site has exactly what I'm looking for but doesn't have solutions or suggested code, and I've already finished going through that site. Surprisingly, I'm having a lot of trouble finding other sources for these type problems. Can anyone suggest a good place to get exercises with solutions that would help me to learn and practice my skills? Perhaps other college's intro to computer science class websites that make their homework available online (preferably in Python)? Or, alternatively, any suggestions for other ways to reinforce the material?
Second, where to next? After I master the basics that are covered in the "Python for non programmers" tutorial, I'd like to continue to get better and learn how to do more complex things. It doesn't seem like learning another language is a great idea at this point; better to master Python rather than gaining a cursory understanding of several languages. How do I get better? (A side note-programming does not come naturally to me at all, so the advice that I've received from my two computer-nerd friends, "Just start messing around, do cool stuff" has not been helpful at all. I do much better with structured stuff like you would get in a academic course).
Thanks!
-also-
Dive Into Python is quite a bit more comprehensive than the book you used.
posted by rhizome at 10:37 PM on October 2, 2008