Math feels like real work

| | Comments (0) | TrackBacks (0)

Preparing for CIS 450 is, in some ways, very easy. It really doesn't take a lot of time (when I have the time to spare). I spent the last hour to hour-and-a-half to make all the preparations I needed for todays class.

On the other hand, it does require a bit of concentration. Right now, for those not in the class, we're covering how pointer arithmetic actually works out in assembly. I actually find this is pretty rewarding work as it comes together. I decided to cover pointer arithmetic very early in the semester—I started on the fourth class session, third session of C++. Pointers are, in my opinion, the single most important practical computer science any student can learn. They also account for one of the most difficult concepts to grasp properly.

I remember when I was an undergrad taking CIS 540, I had to explain the purpose of C++ delete and why my fellow students' code didn't function because they had their types screwed up, asterisks misplaced, etc. A lot of students seemed to use the, "Um, that didn't work, I wonder what happens if I stick an asterisk here" method of programming. They'd work at it until it compiled and then then, "Aha! I got it." And then they'd run their code and it would promptly result in a Protection Fault.

This is why I think C or C++ needs to be an integral part of the curriculum. Computer scientists shouldn't need managed code environments like the Sun JVM or the Microsoft CLR in order to save them from themselves. A computer scientist should be able to use these to catch their typos and mistakes, not to save their souls 'cause they don't really know how to code. That is, an adequately trained computer scientist should know where to put the asterisk in her code because she knows exactly what it does and why it works that way. That's a computer scientist. Anything less is a mere programmer. (There's nothing wrong with programmers, by the way, we sometimes need those grunts to that work too. Yet, the Computer Science program should be turning out Computer Scientists, not just programmers; programming is only one aspect of Computer Science.)

Anyway, back to my real point...it takes quite a bit of concentration to get these things right, especially because the GNU C Compiler is sneaky. It does lots of funky tricks like using the lea instruction to add integers, sal for mulitplication and sar for division, etc. To compare GCC to the Fire Swamp, "It certainly keeps you on your toes."

Working with a pencil and paper to figure these things out feels a lot more like work than hacking away at my computer does. I'm not sure why this is, but it does. All that meandering, just to say, I actually feel like I've accomplished something preparing for class. Most of the rest of my job working with the systems leaves me with a sort of nebulous, "Did I really do anything today?" feeling. Cheers.

0 TrackBacks

Listed below are links to blogs that reference this entry: Math feels like real work.

TrackBack URL for this entry: http://andrew.sterling.hanenkamp.com/mt/mt-tb.cgi/365

Leave a comment

About this Entry

This page contains a single entry by Andrew Sterling Hanenkamp published on November 10, 2004 8:33 AM.

System Plans was the previous entry in this blog.

God's Sovereignty is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.