Why in hell’s name we should learn C in the first year of Computer Science
Currently, I’m following college on Computer Science, in the Netherlands. And one of the things I hate about it, is that they weren’t able to teach me anything in the semester I’m there. I just go there, drink my Piña Colada, and sometimes I write some code in C#. C# is easy for me, and for the rest of the class. For me its really easy, when you consider when I did some Java programming. For the rest of the class, even the guys who didn’t have any programming experience at all, its easy too. Too easy.
Some people actually think that its supposed to be that easy, because nobody will be able to learn it otherwise. But then think about this: only about 2-3 people in my class (including myself), are able to actually tell you exactly what happens when you press the run button in Visual Studio. The rest of the class will just say that it runs the program you just typed. They never even heard of a compiler!
At start, this isn’t a problem at all, they are able to function perfectly in the college’s ecosystem, because they get the right job done. But later, when they have to use different programming languages, where they don’t get a shiny IDE like Visual Studio. They get in trouble because they don’t know how what compiling is, and how the hell they are supposed to do that.
Further on the road, there are more problems. They are so used to the fact that everything ‘just works’, they don’t take into account how fast something will be when you deliver something to customers who actually use the software. When you learn to write software like we do, you only program with small and simple examples. Yes, that is how its supposed to be done, but we did never learn to think about performance scaling. So, when a customer loads your program with 100MB of data (instead of the 5KB you fed to it), he will probably run out of memory, because you just stored everything in both variables and a database and it worked fine.
All these problems are very easy to overcome, when you just teach young students about what the memory is right away. Even better: learn them C. Then they need to manage the memory right away, and then they also know how some things that might seem as simple statements in C#, actually are very complicated things. This way, they think better whats behind some functions, and they actually think about the available memory, instead of mindless loading everything in the memory when it might seem usefull.