I'm currently a graduate student in Computer Science. I've had a few jobs before coming back (doing some coding for the Army while in) and working in an Oracle shop. Both jobs could be done by monkeys with a semester of computer science. I want to be a great programmer. So, right now I'm back in school working on my master in computer science and I'm looking to do my thesis in data mining and natural language processing.
I have limited time and right now I'm using my free time to work through Structure and Interpretation of Computer Programs, Machine Learning, OpenGL SuperBible (to learn the basics of graphics) and Cormen's Intro to Algorithms during the break before Winter quarter starts. I'm writing most of the programming projects that go along with those books too.
Does this seem like a good use of my time, or should I cut my time in half on that and start trying to do bug fixes for some open source project (I've never done open source stuff and barely have the vaguest idea of how to get started)? If you recommend open source how should I go about getting started (really, step by step would be nice, I haven't done any so far because I literally don't know how to start) or if continue studying what should I focus on?