Search This Blog

Thursday, September 04, 2008

Final Lap

Well, it's currently the second week of the fall university semester. This semester is extra special because it's the last semester before I graduate, and anything that results in less school is always a good thing. Between my two majors - biology and computer science - I've been in college for entirely too long, and I'm hoping to move on to more enjoyable things after Christmas.

This semester, I only need 9 units left for graduation, and two specific classes. First, I need a "modern high-level language" class. This comes in three flavors: Visual Basic (probably .NET), C#, and Java. As I don't see much of a use for VB, it's a toss-up between C# and Java. I already have a decent amount of experience in C#, which means that Java would be the course I could gain the most from (as it would add another entry to my resume). Unfortunately, the only Java class this semester is at 8 AM, which is a bit (*cough*) too early for me. Thus C# wins by default. While I probably won't learn a great deal, it has the advantage of requiring less effort, which is also always a good thing.

The other class required specifically is Programming Languages and Translation. This is a recent class which merges two previous classes, one on high-level languages (a survey of like a dozen languages, and the various ways high-level languages accomplish common tasks) and the other on compiler development. I had actually taken the former of the previous classes, but they merged the two before I could take the higher-level course, forcing me to take this new one instead. On the plus side, this also means I'll have to put in less effort at this course, as well, and I probably won't have to study (in my case this means 'read the textbook and come to class') much of the first half of the semester.

One of the things we'll be doing in the class over the semester is writing our own compiler. I've already got some ideas for a high-level programming language which closely resembles natural (i.e. spoken) English, intended for use by people who are not computer science or math people. I ought to discuss some of the ideas for this on this blog; we'll see what my infamous laziness permits.

Unfortunately, the class I really wanted to take this semester isn't being offered - the Game Programming Development Project. It would have been awesome to have to spend a semester working on E Terra (Gord knows I'm too lazy to work on it when I don't have to) and get three units credit for it.

So, that left me needing to find another class. This semester is actually pretty bleak, as far as which courses are being offered and when. While there are maybe five other classes I wouldn't have minded taking if nothing else was available, like none of them are offered this semester (or those that are have prerequisites I don't have, or are at extremely inconvenient times). So, I was forced to improvise - by looking into the list of graduate classes. As it turns out, my school allows undergraduate students to take graduate classes with permission from the department, although you can get kicked out if there are more graduate students than spots in the class.

One class was at a convenient time, covers something useful to me, and only required courses I'd already taken: Advanced Graphics Programming. Unlike BahamutZero, I can't really say I especially like or get excited by graphics and graphics programming, but clearly a thorough knowledge of graphics is a big plus for game programming; as well, I hadn't had any trouble in the undergraduate graphics class, so I can at least get the job done. Unfortunately, the syllabus doesn't look as applicable to game programming as the course description suggests, but hopefully it'll end up being worthwhile (and hopefully graduate-level homework and projects won't be too painful).

One thing that may turn out to be fun is the term project. The teacher hasn't actually given out the assignment (which would have a few dozen example topics), but as I understand it, we can do just about anything, as long as it's related to graphics and is sufficiently ambitous for a graduate-level class. When I mentioned all this to BZ (who loves graphics stuff, and would probably take a graduate-level graphics course, if he had the chance), he immediately asked if we could do a project together (although I'd thought the same thing even before he asked about it). As it turns out, we can (I talked to the teacher), provided the project is large enough for us both, and our work is sufficiently separated so that the teacher can grade my part of the work on its own. So, this could turn out to be fun. I'll probably write about at least the topic (when we come up with something), if not details along the way (and if BZ is working with me, he may post about it on his blog as well).

Also, just to briefly mention a topic I should (as in ought to) write about in the near future: the first programming assignment in graphics class - that is, a rudimentary ray-tracer. This actually isn't very difficult. Writing a simple ray-tracer that can render simple things (e.g. plastic-looking spheres) is pretty easy; it's making it fast and photo-realistic that's hard - but neither of those are requirements for this project. I estimate it'll take two or three days of coding, and we have two weeks to do it (though I have a bunch of relatively easy optional features I want to add, so it will probably take me longer than the others in the class), which isn't bad - not unlike what I'd expected from a graduate-level class.