Tuesday, January 03, 2006

Some Random Thoughts on My Education

Last week, I read Joel’s essay on The Perils of Java Schools. What a stir this post caused on his forums.

Being a student at a school that is trying to decide what it wants to teach its undergrads, I think that I have a unique perspective on this one. In my first computer science class, we used Scheme. In my second computer science class, we used Java. In my first software practice class, we used C++. In my first Systems class, we used MIPS assembly. In my second Systems class, we used C, and IA-32 assembly. Last semester, I took a programming language course, and we used Scheme and O’caml.

I can say that my school has tried to expose me to many different technologies. However, the tide is shifting. The cohort admitted in the class after mine isn’t using scheme, deciding that Java is their language of choice. I won’t pretend to understand why they have made this choice, but I will say that I appreciate the fact that I learned the basics of programming and computing in Scheme. When I took my first upper division computer science course, we had to learn pointers, and in the last Systems course I took, without understanding pointers, I would have failed. Does this admit me to the club of computer science snobbery? I don’t think so. Do I have a particular affection for pointers? No. Do I like Scheme? You bet, when I want to write a quick proof of concept, or test an algorithm, Scheme rocks! Will the kids in the cohort below me suffer for not having learned Scheme? Probably not, because alll of the upper division courses still depend on the C based languages.

I agree with many of the poster’s on Joel’s forum that claim that though most programming jobs now days don’t require you to bit twiddle, it is important for the practitioner to know what is going on “under the hood”. It makes for smarter programmers.

Is Java a bad thing? No. Is exposing students only to Java a bad thing? Probably.
Will anyone care what I think about it? Probably not.

In short, I am glad for the education that I have received, and that my professors have seen fit to have me learn many of the classical themes and low level underpinnings of modern computer science.

No comments: