I'm not half as cool as to have Greek heroes and turtles, so I'll introduce Steve in their stead. He is a real person. He goes to graduate school with me. But, otherwise he is my diametrically opposite evil twin. We've had almost-heated arguments on things like public health care, US foreign policy, ethics, economics, and we always seem to take opposite sides. Maybe I exaggerate. Whatever.
Steve: May I ask you a philosophical question?
rz: Are you talking to me? Oh dear lord. Only as long as you promise me that I'll be done "answering" before tomorrow morning.
Steve: So I was tutoring this girl for one of her engineering classes, right? CS 111, I think. She was having problems implementing a list in C++ which grew in size if you stored beyond its capacity. And frankly, I wasn't really sure how to do it either because I always just use a vector and be done. Why do they teach stuff like that?
rz: Did that stop you from charging her? Wait. Don't answer that. Well, assuming you are asking me why isn't she learning more about practical, real-world, off the web-shelf, open-source library based programming, it probably has to do with the CS department's need to balance between teaching practical tools and teaching computer science in the "it is as much about computers as astronomy about telescopes" sense. It is a mighty difficult challenge because both tend to be called "computer science" for undergraduates, but both are fields in which you can do research in and they are quite separate from one another. In any event, it is probably good for her to understand how to build such a thing because a) you learn by examples and b) it is good to understand the most common tools to use them properly. By having her do it the teacher accomplishes a) and b) in one fell swoop.
Steve: Whatever. This girl is an industrial engineering major. She'll never have to program again in her life. Why should she have to deal with such mundane stuff as pointers and memory allocation to implement something that is in the standard library?
rz: First off, why is she even in the class if she is sure she won't ever need to program again? If it is required there probably is good reason for it. For example, if you are engineer you'll probably program at some point in your life. Secondly, she should learn in as much detail as possible. That's what we mean by "education". Maybe by doing that she will learn that she likes programming better than industrial engineering. Maybe to learn how to write elementary programs will save her a ton of time later in life. Maybe she should just do it for the joy of learning and broadening horizons. Which I thought was the other reason people came to college, by the way.
Steve: Whatever. I take a more practical approach: figure out what I need to know and move on.
rz: Uh... If you think like that why do you need to know anything? Why do you study physics? You could get by (and probably make a lot more money) without finding this higgs thingie you'll spend the better part of the next five years looking for. Of course, the only real proxy for what to learn in depth and what not is your interest, but for someone who is in the first couple of years of her education it seems important enough to try subjects even without having interest in them just for the sake of finding what she is actually interested in. Heck, exploring is probably good even for people at the stage we are at and even later on. I think a fundamental problem with the education system is that education is treated as if it was a mean to an end rather than a self-exploratory adventure of its own worth.
Steve: Pointers in C++ are not that deep.
rz: Sure, sure. I like practicality as much as the next guy. Well fine, maybe that's not true. Anyways... practicality has its place. I'm not suggesting that she goes to learn about functional programming when she has a multi-part project due in two days for the joy of exploring, but in general learning new things just to know them or just to try them is half the reason to go to college or pursue any type of education. Let me rephrase that. Learning new things for their own sake is one of the things we mean by education. Wait. One more time.
Learning new things for their own sake is one of the things we ought to mean by education.