Hello, all! I'm back after another nice, long, refreshing hiatus because for the nth time, my parents have put their feet down and insisted I compose a blog post. I MAY HAVE TO DO IT, BUT YOU'LL NEVER MAKE ME DO IT WITH GOOD GRACE, MOM!
I was thinking about my school computer science class (I wasn't really, I just need a way to introduce the topic) and about the kind of programs we have to write. They're not very complex programs, they do pretty simple things like adding up numbers or sorting things. They also aren't very long. A program that I'm asked to write in class will scarcely take me ten minutes to finish, and be around fifteen lines long. The Google home page has more lines of code than that, for crying out loud!
Now, there's nothing wrong with short programs. A lot of the most efficient programs are quite short, and I'm always thrilled to be able to write one line instead of two. However, the problem with writing only 15-line programs is that it doesn't really give you a sense for how much work really goes into building a software product. It leaves people with the impression that an entire operating system, say, can be built with around 30 lines of code. Now, while I hope that that may be the case in the future, none of the tool sets currently available to us are that good. Windows XP, for instance, is around 45 million lines of code in size.
The usual explanation is that a computer science course is supposed to teach you the concepts required to build a program, not actually have you build a program. While it's very good for me to know what I'm doing with while-loops and for-loops, I think I'd also like to know the amount of work that goes into developing a functional product. I wrote an app a couple of months ago - a pretty simple app by today's standards - that took me several weeks to finish. Of course, it probably didn't help that I was only putting in one hour every day, and even then not every day of the week. The point is, though, our computer science course implies that building the next great piece of software is something that I can accomplish with half an hour and a computer.
It also strikes me that people who have been taught programming by writing fifteen-line programs in visual basic are rather more liable than everyone else to break down and weep after their computer tells them, for the fifth time, that it "could not locate aeinv.dll" or whatever. I'm not saying that I don't feel the urge to chuck my computer out the window and go out for a walk every time my code doesn't work. I'm just saying that I'll probably sit down after the third failure and reboot the computer (and that's what every overpaid repair engineer doesn't tell you - if your computer isn't working properly, you should probably just turn it off and on. If that doesn't work, ditch Windows and use Linux like a real programmer.)
The obvious solution, of course, would be to set up computer science courses to be more like a team working towards a goal. The current format seems to be to throw a bunch of problems at you which use all the features of a given programming language. I wish I had a less obvious, well thought out solution to offer you, but I never have, and I'm far too lazy to come up with one. Instead, I'll leave you to hope that you never, ever have to learn to use Linux.
I was thinking about my school computer science class (I wasn't really, I just need a way to introduce the topic) and about the kind of programs we have to write. They're not very complex programs, they do pretty simple things like adding up numbers or sorting things. They also aren't very long. A program that I'm asked to write in class will scarcely take me ten minutes to finish, and be around fifteen lines long. The Google home page has more lines of code than that, for crying out loud!
Now, there's nothing wrong with short programs. A lot of the most efficient programs are quite short, and I'm always thrilled to be able to write one line instead of two. However, the problem with writing only 15-line programs is that it doesn't really give you a sense for how much work really goes into building a software product. It leaves people with the impression that an entire operating system, say, can be built with around 30 lines of code. Now, while I hope that that may be the case in the future, none of the tool sets currently available to us are that good. Windows XP, for instance, is around 45 million lines of code in size.
The usual explanation is that a computer science course is supposed to teach you the concepts required to build a program, not actually have you build a program. While it's very good for me to know what I'm doing with while-loops and for-loops, I think I'd also like to know the amount of work that goes into developing a functional product. I wrote an app a couple of months ago - a pretty simple app by today's standards - that took me several weeks to finish. Of course, it probably didn't help that I was only putting in one hour every day, and even then not every day of the week. The point is, though, our computer science course implies that building the next great piece of software is something that I can accomplish with half an hour and a computer.
It also strikes me that people who have been taught programming by writing fifteen-line programs in visual basic are rather more liable than everyone else to break down and weep after their computer tells them, for the fifth time, that it "could not locate aeinv.dll" or whatever. I'm not saying that I don't feel the urge to chuck my computer out the window and go out for a walk every time my code doesn't work. I'm just saying that I'll probably sit down after the third failure and reboot the computer (and that's what every overpaid repair engineer doesn't tell you - if your computer isn't working properly, you should probably just turn it off and on. If that doesn't work, ditch Windows and use Linux like a real programmer.)
The obvious solution, of course, would be to set up computer science courses to be more like a team working towards a goal. The current format seems to be to throw a bunch of problems at you which use all the features of a given programming language. I wish I had a less obvious, well thought out solution to offer you, but I never have, and I'm far too lazy to come up with one. Instead, I'll leave you to hope that you never, ever have to learn to use Linux.
whats a linux?
ReplyDeleteLet's hope you never have to find out.
Delete