For the past few nights of finally being able to start on my homework assignment I think it finally hit me.
I'm not the best programmer, in fact I'm relatively weak and I think it's because since I've started school every computer science course I've taken is never in the same language as the previous one. I feel like having a time frame to complete these assignments (okay, a short time frame ie: a week) is a little daunting and I feel rushed, sometimes not even being able to complete my assignment by the deadline. I end up spending so much time on an assignment and not completing it that I don't get a chance to try to do all the cool things I wanted to do with it, especially since I'm a slow worker in general. I like to take my time and experiment too...
Every class after the beginning (or even every lesson) assume that a student should have mastered the fundamentals or previous material. I'm starting to think since the level of my classes are getting more advanced over time, I become more aware of my weaknesses, but fail to officially fix them as I have to focus on the more advanced aspects along with the smaller bits -- I force myself to only learn how to solve the current problem, but I fail to solve the smaller problems that might make fixing the next big problem a whole lot easier.
I personally believe that might be a factor in my lack of understanding.
I've read similar posts before and it's always 'practice' and I think many people at my level fail to understand what is gained to practicing. I personally know that I get stumped on the 'thinking' processes when I have a problem in front of me, or sometimes I simply don't understand how that line of code managed to get that program to go from point a to point b. But, I learned that as a beginner in programming it's advisable to:
Get a book or some sort of resource, read the contents, look over the code to see if the processes that produced the anticipated output makes sense, type in the code instead of ctr+c/v, see if it runs, look over the code again, and then modify it (especially true if something doesn't make any sense). If it's math based, possibly adding print statements and using your handy calculator and a nice piece of paper (especially gui based stuff) might help clarify some things.
Okay, I guess that works under the grounds that ideally the a person would understand every line of code... What about if they don't and have played with the parts that they don't understand, done research, yet still don't get it? Is this where they ask for help?
The next step is to:
Take what you've learned and try to apply it to something first by considering where it can be used, and how to construct what you want to make. You'll have to consider the types of variables needed and methods and how everything interacts with each other.
IE: If a person learns loops maybe after learning they should consider when it is suitable to use a loop for something? For example, the question that might be posed would be: If I wanted to make a ball enter from the left hand side of the screen to the right, does that mean I'll use a loop until the condition is met or is it something else?
Then somewhere in between there's that segment of trying to make everything work.
Lastly is to look at other people's work and gain experience from what they're doing. I guess this includes help posts and snippets...
Anyway, I digress, I two nights ago I was finally able to pinpoint what the 'real' benefits are to practicing that are often not really explained. Obviously repetition (but I wouldn't say rote memorization because someone could regurgitate something and still fail to understand the concept) and constant exposure to the language is a benefit, but the real benefit lies in experience. Over time a person will learn because they've seen so many cases where something could be used. They will be able to approach their own problem or a new problem using previously learned knowledge gathered from learning the mechanics of 'computer logic' from doing all that was posted above.
Would anyone agree to that?
This post has been edited by Hikaroshi: 31 March 2012 - 08:41 PM