This post, as many are on this blog, is inspired by a post on the forums. A user (Banished_Outlaw) asked some questions about Scheme, and one of his concerns was that he wanted to learn the language before school started, thinking ahead of U Waterloo. Though Professor Prabhakar Ragde (PR) warns against attempting to learn something new and unfamiliar on your own:
I don’t know why you guys insist on learning on your own (possibly poorly or incorrectly, without any help) what you’re going to learn in a couple of months in a classroom. You’ll just get bored, start skipping lectures, miss important material, and get lower marks.
His point has some validity — learning the wrong way can be a bad thing and can set you back a bit. But is the problem really with trying to learn the material before starting class? What’s different about learning from a teacher than learning from a book or an online tutorial? The greatest advantage of being in class is that you have the structure and guidance of someone there. You can talk it over with the instructor and get some help.
The problem with learning on your own is that you have less indication of when you’re wrong, and one can’t even be sure that the source is giving you the correct information in the first place. But can you be sure about that in class as well? Some instructors might have preferences towards non-standard notation or syntax or approaches. The differences are often minor, and it doesn’t take much to figure out, but if the person already knew the alternative, or even had seen it (perhaps in an online tutorial before class), it could save a student from stumbling over trivial things like syntax variations.
Granted, this example isn’t to big of a deal, but it gets the point across. You can’t be closed-minded when learning. Knowledge can’t be a bad thing for you — it’s what you do with that knowledge that determines it’s usefulness. PR brings up another good point — he doesn’t want to see students learning in the wrong way:
What I don’t need is someone who skips my lectures because they’ve read the first chapter of SICP [...] and the night before each assignment is due writes out some sloppy R5RS code with no comments. Or, when using C, calls a library function instead of writing the code I want, thinking that the point is to get a working program instead of getting exercise in a particular technique.
I think this is the student’s responsibility — post-secondary studies are to teach students the profession, not to teach learning or study habits. It’s up to each individual student to decide what he/she is going to learn, and how they’re going to do it. Going to class and talking to their professor is the best way to find out what is expected. Grades could be assigned for specific approaches, techniques, or even style of coding. At the very least, that’s the type of material one would be expected to be familiar with in time for the tests.
Though the counterpoint is that I’ve skipped a lot of classes, and I’m at the top of my class. At times I didn’t go to class because I knew what to do, and usually had already done it. Usually I went and sat through the lectures (only half-minded, though). The usual outcome: “I already knew it”.
I won’t say you shouldn’t go to class, but you can’t rely on just that. My point is that learning cannot harm you. You have to be responsible, and if you’re in college you should know enough to make your own decisions about going to class or not! Having exposure to something before you take a class for it, in my opinion, is actually beneficial. At the worst it gives you a chance to see the differences in ways it can be taught, and usually you’ll have all the core skills down so you can focus on really understanding them and grasping the more complex concepts or paying attention to other details, like design standards of the language, rather than being mired in the syntax and basic library functions.
Don’t let knowledge get in your way – learn as much of it as you can. This summer, take up Python!