So up to this point I have relied on MIT’s OpenCourseWare for my instruction. On a scale of 1 to 10 I would give it an 8. Its very good instruction and very well put together but it has a rather critical flaw: its from MIT.
I dont personally know what kind of student they think they are recruiting, but they must believe they are some sort of savant genius. They say in the syllabus that this is an introductory course but they do not tell you what other non Comp Sci classes you should take… like copious amounts of math before you begin. But most of all, the biggest flaw in their instructional method is how they assign a problem set and then teach you how to do the problem on the day it is due. Personally, I dont see much of a need to take a class when they obviously think I can learn the material before they teach it to me.
Its incredibly frustrating when they assign a problem set that practically requires one to have access to other students in person in order to solve it. It is a problem when the only way to solve a problem is to collectively bang one’s head against a wall with other tortured souls – especially when the class is given as an online instruction. This problem exponetially increases for me because I am constantly fighting the feeling that I have fallen behind in understanding.
I think one of the core problems in the class lies in that it is intended as an introduction to computer science for computer science majors. They assume a particular level of nerd and the availability to work with other like minded nerds to succeed.
Were I taking the same class in person I wager my results would be different. Yes, I am a nerd, but I dont have any other nerds doing the exact same course as I. Therefore I have nobody to collectively work through my frustrations with. I do have the secret weapon of a Jedi Master as my guide, but I really dont like running to daddy every time I have a question (which is often). I prefer to figure it out on my own or with a peer. I think a mentor’s job should be to keep me within the bounds of my study and answer the big questions, not to be bothered with every single detail.
So, I think I may have to do something slightly drastic. Pending approval from Dr. Dave, I think I am going to restart my instruction with Harvard’s CS 50 course. I’ve watched a number of the lectures in the past as well as done some of the assignments and they are prepared MUCH better. The problem sets are more regular and more reasonably constructed. They are more of a, “Today we learned about loops. Construct X program with Y number of loops plus A, B, C elements,” vs. “Today we learned about loops. Construct a program to play hangman with the computer using semi advanced calculus skills before we ever teach you how.” CS 50 also has the added benefit of being targeted not only as computer science majors, but to everyone. The majority of students that take CS 50 are not Comp Sci majors and never intend to be. They merely want to know a bit more about computers.
I hate to do this sort of thing because I feel like I am running away from a problem. But I am honestly hitting a wall with the course and its because I feel lost. Not because I havent paid attention, but because they expect me to understand concepts and skills that I have had no exposure to.
In addition to rethinking my istructional strategy, I need to become more ballanced in my math vs lecture time. I spent all of my study time last week doing math on Khan Academy. It was freaking awesome. But then I realized that I had forgotten about my actual mission: learning to program.
So I think I’ll break it down as follows: M, W, F mornings, and Calculus on T, TH mornings. I’m not sure how I’ll break things down in the evenings, but most of my study time is in the morning anyway.
I really dont like the idea of stepping away from Python because I’ve grown to like the language, but I will endure.
Any thoughts out there?