I’ve been following a very interesting thread on the skrud.net forums recently about the role of formal documentation in the software process. In it, Dr. Constantinos Constantinides interjected with some sound arguments in favor of formal documentation. I thought he presented a very persuasive defense of an aspect of software design that is often maligned by undergraduate students. Because the thread in question requires forum registration to read, I sought his permission to reproduce the arguments here
→ 5 Comments Documentation · Engineering · School
Despite being neck-deep in end of semester work, I thought I’d take a minute to serve up my monthly slew of recommended listening.
I discovered Neutral Milk Hotel after reading an article entitled “Jeff Mangum, the Salinger of Indie Rock” by Taylor Clark (shared by Nav on Google Reader, I love that feature.) The story goes that after recording “In the Aeroplane Over the Sea”, which some consider to be one of the greatest alternative albums of the 90’s, Mangum sought to escape his celebrity status and practically dropped off the face of the Earth. It’s a terrific read and a fantastic album, I highly recommend both.
→ 7 Comments Cowboy Bebop · Jazz · The Musical Box
I think I had best wrap up this series before I completely alienate my non-programmer readers. Firstly, I have an algorithm by fellow blogger and mathematician Tim Sell of Planet Nectarius.
[A.I Competition – Tim’s Algorithm]
What I did was get 3 values for all the empty spaces to the left, right and in front of the player. To be “in front” the empty spaces must be connected to the forward move square and it must be forward of the player. So each connected space is bounded by a rectangle to one side of the current cycle position. I then regard each rectangles emptiness value as half if the nemesis cycle is within that rectangle. Then I arbitrarily decide to move to the square which has the second highest empty space value associated with it. […] Basically the idea is to cut of the nemesis cycle from the empty space without retreating into it.
AI · Algorithm · CS Games · Snake
Since I returned from the CS games a few weeks ago, I’ve been vigorously discussing the Tron A.I. problem with anyone who would listen. Much of this took place on the skrud.net forums, where I had a chance to debate with Alexei and Andrew of the other Concordia team. Their team tied for third place on the second day, and they had some really interesting ideas. I’ll be posting snippets of our discussion here, including the pseudocode for their algorithm.
In part 2 of this series, I wrote about how the recursive Algorithm 4 was memory intensive because it needed to clone the entire map at every step. Alexei, however, thought of a very clever way to get around this problem by implementing backtracking.
AI · Algorithm · CS Games · Snake
In my last post I wrote about the simple yet functional algorithms we wrote on the first day of the A.I. Competition. Today I will discuss the two more complex algorithms we developed on the second day and why they were both beautiful failures.
[A.I Competition – 3rd Iteration]
This is where the pseudocode starts to become a little obscure. Essentially, this is a case of algorithm 2 where the scanners can turn exactly once. In other words, at every point along the straight line search we send a second set of scanners out perpendicularly left and right until they reach a wall. We find the maximum value of the sum of a straight and perpendicular scanner and turn in that direction.
→ 2 Comments AI · Algorithm · CS Games · Snake