Why does taking a programming class in a language you already know suck so much? Allow me to explain with a short narrative:

Mr. X begins to lecture about variables and constants, a hopelessly minute and thoroughly understood topic for an individual such as myself who already codes in the language he is teaching. As I begin to snooze through his soporism, I miss his discussion about the differences between constants and variables, assignment to variables, the various types of variables, etc. Not a problem. I know this, after all.

Some time later, I am awakened and we promptly turn to our computers to begin work on the exercises that Mr. X has assigned for the day. No problem: "Write a program that demonstrates the difference between a constant and a variable." I write out the code in about 3 seconds. Next task: "Write a program that accepts a radius as input, stores it in a variable, and computes the circumference of the circle". Easy. Done in 3.2 seconds.

I go home thinking that all is well as good in AP Computer Science. But what do I find the next day? I lost half credit on both exercises. Why? I forget to print out my name before the rest of the output of the code and because I did not use a constant to represent pi in my circumference program! Sure, I did not exactly follow instructions (of course, I was asleep during the lecture), I can understand that. But half credit?! It's like I forgot to write a return statement if I was workin with recursion.

As for you, Mr. X. You are the most ignorant programming teacher I have ever known! I have never heard so many incorrect statements come out of a teacher's mouth about their subject. C can't do as much as C++ is capable of because it's not object-oriented? So how does a proccesor's function-oriented instruction set even cope with objects? Your problem is that your don't understand the low level aspects of the computer, or even your own beloved C++ objects for that matter. Take some time to learn the language. Generic teaching skills will not get you through.

The main difficulty with taking a class in a area that is already understood (for varying degrees of understanding) is that there are numerous bad habits that have to be unlearned before it is possible to move forward.

Following the instructions of a particular project or assignment should not be a question if the person assigning them is a high school teacher or project manager at a company. It is not expected for these people to have a deep understanding and grasp of the internals of a complier or low level of a computer. However, it is expected that they are able to look at the output and algorithm of a program and determine if it is doing the correct thing.

If the purpose of the program was to demonstrate knowledge of the proper use of variables and constants and that was not correctly done, it is just as bad if the program is to use a particular method for analyzing the input and producing the result. Sure, you may come up with one that is faster, more efficient, and right 95% of the time - but you didn't follow the instructions (yes, I have gotten my wrist slapped in a real job for this).

Similar situations arise in foreign languages also. There are many people who have a familiarity with a language (say you lived in France for the first 5 years of your life) and then later take an academic course on the language. The individual may have a firmer intuitive grasp on the language than the instructor, but that is not the point. It is the instructor's job to lead the student upon a particular course of study that has been set down to reach a particular end point.

This is the difference between a formal class and independent study - and the exact reason that they are graded differently. Independent study is often restricted to those who have demonstrated that they have cast off the bad habits of old and are willing and able to take advice from a guide rather than being led by the hand and learning the proper way to walk.

Log in or register to write something here or to contact authors.