Computer Science
Bethlehem PA

# Week 5 and Still Alive

Jeff Maher on Saturday, 21 January 2006. Posted in Academic Calendar, Coursework

For those of you less familiar with RIT, we work on a quarter system - meaning that you can take 4 sessions of classes per year (if you include the summer quarter). Each quarter is divided into 11 weeks with the last week being for final exams. The unspoken rule of thumb is that weeks 5 and 10 nearly kill you, but you always survive and come out stronger, better, and faster (after all, we have the technology :-) ). During both of these weeks, projects and midterms unite to destroy you and all your loved ones (if you consider your classmates your loved ones...). It can become very trying to think about anything other than work and the desire to get more sleep. Nevertheless, most of us make it through with flying colors and it is weeks like these that prepare you for the real world (namely your co-ops/internships and after college job). They teach you the value of pacing and preparing yourself, while eliminating that voice in the back of your head that urges you to procrastinate.

Ok, I'm probably boring you with the philosophy of hell weeks, want to know about the projects that I actually worked on? Read on friend...

Artificial Intelligence

The first project that I had to work on was a project for AI - the Game of Kayles. It involved a little bit about Game Theory and implementing the Minimax Algorithm. That may sound a little obscure, but the Game of Kayles is played by two players and requires them to throw a ball to knock down pins that are aligned in a row (i.e. bowling pins) - you may have seen this game at a carnival or an amusement park. A row can have pins that are adjacent to each other or have substantial gaps between them. Assuming the player has mad skillz, he or she can throw a ball and knock down either a single pin or a pin's "next door neighbor" assuming there isn't a big gap between the two. The player that bumps off the last pin or couple of pins wins. A player has to think carefully about the number of pins he/she knocks off so as to allow him/her to have the last move of the game. The project required us to write a program that determines the ideal move from any row-state. This can be implemented by recursively determining every possible move in the game and which subsequent move would most likely (if not most definitely) allow the player to win against an opponent.

At first, I REALLY hated this project, not because it wasn't interesting, but because we had to program it in LISP. LISP has been around since 1958 and has a syntax that is much less intuitive than modern programming languages such as C++, Java, or Python. I had learned LISP for a class I took two years ago, but I was more than rusty. However, once I got past the language barrier, I had a good time working with the algorithms and trying to figure out how to simplify and optimize them.

If anyone thinks they can beat my computer player in a Game of Kayles, let me know and I'll have it take you on ;-).

Computer Graphics I

Contrary to popular thought, this is not a drawing class. CG I involves learning about the concepts underlying the display of graphics and how to implement graphics using a C-based programming library called OpenGL. With that said, my first project in this class was to draw (ok, so maybe I'm a hypocrite) an interesting picture using OpenGL. However, when I say draw, I don't mean the kind of drawing that your grandad does in Microsoft Paint. Everything drawn is using a computer programming language (in this case C++). Additionally, the picture also had to do something when the mouse was clicked. Being the Spider-Man geek that I am, I decided to have a block-ish Spidey web across the screen. There's a picture below.

If you're wondering why his shirt looks messed, it was a last minute hack to meet a project requirement of applying a hex map (pattern = { 0xAA, 0xFF, 0x5C...}) to a polygon. Since I don't speak hex and didn't have time to figure it out, I just randomized a pattern that came out to stripes. I can't wait to learn how to do cool stuff so that my pictures don't look like crap...

(Look ma! I drew a picture!)

Introduction to Multimedia

This class is VERY elementary. Seriously, I could have taken this in 6th grade and aced it. This may lead you to ask, "uh...Jeff, why'd you sign up for it?". Well, I'm trying to take more classes from the Information Technology (IT) department and this course seems to be a prerequisite to every class they offer. Most IT students take this as their very first class as freshman, but students that come for orientation can often times test out of it. The class is also dumbed down because art majors take it. No offense, plenty of art majors are smarter, more driven, and more sociable than myself. BUT, when you stick them in front of a computer, they turn into cows trying to get out of a swimming pool.

Anyway, the first project was to research a topic "close to your heart" and write a brief history of it in web page form. It also required a variety of sources to be used. I was going to do the history of video games, but at RIT that's quite the cliched topic. Instead, I did the history of Jell-O, which I found midly amusing (during my freshman year, I spilled much Jell-O on myself when I worked in the cafeteria). I can make WAY cooler web pages than the one I made, but the project requirements demanded that we ONLY use basic HTML/CSS features and NO graphics. If you aren't afraid of green and want to see my craptacular project that will probably get me an A anyway, click here.

Persuasion

The project that spans the entire quarter is a persuasive project on convincing people to avoid a preventable, yet harmful, behavior. Working with a group of 3 other people, we have to write a paper, come up with a marketing campaign (think Ad Council), and present the topic to our class. We chose sleep deprivation. I'm very grateful that the group that I was assigned to is very competent, motivated, and friendly.

Aside from the project, I've really been enjoying this class. The professor, Grant Cos, is a really engaging, fascinating, and hilarious character. Most courses, interesting or not, can start to rag on after two hours, but this guy keeps everyone awake and enthused about the topic at hand for the entire duration of the class. Additionally, it's my outlet to take classes with people other than computer science majors - which keeps things so much more diverse and interesting sometimes.

Now that I've written a book, I think I'll stop there. Thanks for reading! If any of you computer-type people are interested in seeing the actual project write-ups, pop me a message.