Home  |  About CS Games  |  Pictures  
 

CS Games is a year old competitive event hosted by McGill University in Montreal. It allows students from both US and Canadian schools to compete against each other in an agglomerate of logic, coding, and computer gaming trials. Our experience included sessions of logic puzzles, AI development, debugging, website design, assembly coding, and more. In addition to these mind-intensive events, points were also scored based on our involvement in a city-wide scavenger hunt, a computer gaming tournament, and some friendly improv theater contests.

Events:

  • Solitary Teamwork (Team Software Engineering)

    Flavor: Awesome.
    This was the first contest to take place. Three members from each team were sent into some computer labs with the task to program the game ConnectFour. The rules made this contest interesting:
    1st 30 minutes: Team can sit together.
    Next 2 hrs: Team cant have communication amongst its members.
    Last 30 minutes: Team can sit together.
    This put necessity on the commonly ignored planning phase of programming.
    Our tasks were to implement the game ConnectFour, and as many of the optional features as possible:
    Game selection/start menu
    2D GUI
    3D GUI
    Network playable
    Multiple local players
    Dumb computer player
    Smart compuer player
    Installation package
    Readme
    Each feature had a specific point value if implemented correctly.
    We were provided with a common set of resources (no internet) to use as reference.
    Our team was well formed to cover most of the features. John had just learned opengl, and was excited to put it to use, and Rusty was learning network programming. Our effort earned us sixth place in the event, and although we know we made tons of mistakes, we are comfortable knowing that other teams probably did, too.

  • A Date with the Web (Web Design/Programming)

    Taking place on Sunday morning the web design competition charged its participants with both an artistic and technical challenge. Each team had to develop a site for "MatchMaker.com" your standard internet dating service. Two people from each team were given resources in HTML, PHP, MySQL and Adobe Photoshop and had to build the most comprehensive site possible in the 3 hours alloted.

    The RPI combantants were Brian Fields and Brent Josefiak, both Juniors.

    Before delving into the actual competition it should be noted that although both participants had experience with HTML neither of us had used much PHP beforehand. On the trip up we read a manual or two and then at midnight on Sat we decided a little hand's on practice would be helpful so we found an internet cafe which was open. Surrounded by Koreans playing Warcraft 3 we learned the basics of setting up a PHP server.

    When we actually entered the competition, that last minute cramming proved invaluable. Most of the technical aspects of the session were even more advanced than what we had covered but, our knowledge was enough to make headway throughout the time alloted. The art and actual HTML flew by and we managed to develop a working account creation and login system. So despite having not nearly enough background in this arena we managed to pull out a solid middle of the pack finish.


  • Battlefield 2004 (A.I. Programming Competition)

    This year, we were challenged to write a program to play Nine-Men’s-Morris. Each school had a team of 3 people who programmed the AI over the course of two days. Nine-Men’s-Morris is an interesting choice because the game features several unique phases, requiring two completely different algorithms. It should be noted that Nine-Men’s-Morris is a draw game like tic-tac-toe, in that if the first player plays a perfect game, the second player can only tie him. Given the time constraints we had, however, this was probably not a factor.
    At the end of the first day, all teams competed against each other in a round-robin tournament. The teams were then ranked, and this rank determined a player’s seed in the final round. At the end of the second day, each team played in an elimination-style tournament with the results determining the number of points received.

    The AI was to be implemented in Java. Our algorithm we made was very nice and could have wreaked a lot of havoc, but due to our slow start the first day, and an unsolved problem the second day, our system was not working at its optimum, and could only play a defensive game which is not the best for Nine-Men's-Morris.

  • Core Dump (Debugging)

    This contest tested to see how alert you were. There were classic mistakes all through sorting alorithms, tree functions, determinant functions, and more. John and Ben had little trouble getting the third highest score in Debugging.

  • Inartificial Intelligence (Logic)

    The logic competition involved creative problem solving for a variety of word problems. In most cases the solution to a logic question was a single phrase, number or sentence. One example of a logic question is, “Given 2 ropes that each take one hour to burn beginning at one end of a rope, how can we measure 45 minutes using only the 2 ropes and a lighter?”

  • H4ck3rz Gu1ld HQ (Scripting)

    The assignment here was to solve as many scripting problems possible in the three hours, using only unix shell scripting languages (that is, bash, csh, .... and not perl).

    This contest was tough, but JJ and Rusty nailed 2nd place. Here are some sample problems.
    Easy:
    isleapyear
    determines whether a given year is a leap year or not. It outputs 1 if so, 0 if not.
    The clever solution here is to use the program 'calendar' found with many distributions of unix/linux. I ran calendar on the year specified and checked to see if there was a Feb 29.
    Hard:
    minesweeper
    minesweeper is a text version of the classic Minesweeper game in which one tries to determine where the hidden mines are placed in a mine field. The playing field is represented by a square grid of ASCII characters: ? means the square has not been uncovered, and a number if the square has been uncovered is present between 0 to 8 to represent how many mines are surrounding this square. Abomb is represented by an asterix, *.

    Each turn, the square grid is printed out and input is taken via the command line. The aquare grid contains the coordinates starting from 0 to (size-1) on both labelled axes. The x-values change as you move horizontally while the y-values change as you move vertically. The bottom-left corner has coordinates (x,y) = (0,0). An input is of the form: xcoord ycoord. The user is prompted until he enters a valid input.

    A valid screen printout could look like the following:
      
    			    3  ? ? ? ?
    			  Y 2  ? ? ? ? 
    			    1  ? ? 2 1
    				0  ? ? 1 ?
    				
    				   0 1 2 3
    				   
    				     X
    			Enter Move:

    The program processes the input and uncovers the square. If the square does not contain a bomb, then the program draws the new minefield. If the area did contain a bomb, then the program quits, informing the player thta he/she has lost.

    If the player is confident that he has found all the bombs and the only squares which remain uncovered are the bomb squares, he enters "ok" at the input prompt. If the only remaining uncovered squares indeed all contain bombs, then the user is informed that he won and the time played is printed out. Otherwise, the player loses.

    We did not attempt to solve this problem.


  • To Big O or To Little O? That is the Question. (Algorithms)

    The algorithm competition involves problem solving as well however, the solutions required a somewhat detailed method to solve the problem rather than just the answer. For example, we had to come up with 2 methods for generating any Fibonacci number and dictate each step.

  • Rage Against the Binary Machine (Assembly/Performance Programming)

    This was another of those awesome events. JJ, Ben and Rusty earned 3rd place here.

    The contest was to solve some problems in Mjollnir assembly language. It is a stack based language that runs on a virtaul machine, so think Java.

    Everybody was given a tutorial and quick reference of the language to study, the night before. We reviewed it and after being confused from the documents, were worried about the contest. It seemed to us that there was lot of inter-contradiction in the documentation, things like order of arguments in subtraction and loading instructions.

    Well, our fears became reality when we tried out the assembler. Hardly half of the documented instructions worked the way we expected! We were adapting to the situation and making things work, when we noticed that other teams were complaining about the broken assembler. At that point we got quiet and worked at our own pace, which was always a few steps ahead of other teams. It was fun to discover that left shifts were not working, make a procedure using multiplication, and 5 minutes later hear everyone complain about left shifts.

    Here is a sample question:

    CRC32 compilation
    The Cyclic Redundancy Code 32. Convert this C algorithm to Mjollnir assembly. You are not required to code up the exact algorithm as shown below, as long as it is the same algorithm and performs the correct computation, you will recieve full marks.

    unsigned long crc32(const unsigned char *s, unsigned int len)
    {
      unsigned int i;
      unsigned long crc32val;
      crc32val = 0;
      for(i=0; i< len; i++)
        crc32val =crc32_tab[(crc32val^s[i])& 0xff]^(crc32val >>8);
      return crc32val;
    } 

    Start stack


    1. pointer to u634s: value to compute the crc32 of

    2. pointer to u64s: tab values

    End top of stack

    1. u64: correct crc32 value

    Solved it. Was about 100 assembly instructions.

  • Live Another Night (LAN Gaming)

    Three games were used as media to determine the school with best gamers: Midnight Club 2, Moonbase Commander, and Desert Combat.

    JJ, our racer, placed an extreme first place in all his races. However, the tracks that he competed in were longer than the tracks that 2/3 of the other races were held in, and the scores were based on time completed. So of course we had to bring this to authorities attention.

    Moonbase Commander is a turn based strategy game, chosen for the specific reason that probably no one had ever played it. Brent did fairly well, of course losing to the player who downloaded the game and practiced all weekend.

    And John totally killed without bias everybody who appeared on his screen in Desert Combat.

  • Snapenger Hunt (Scavenger Hunt)

    Cram people in a pone booth! Take pictures of dancing locals! Find... more stuff!
    Teams were paired off to cooperatively collect as much strangeness as possible.

  • Who Wants to be a Computer Science Student? (Trivia)


    The trivia event consisted of three rounds of questions on everything from Big O notation to The Hitchhiker’s Guide to the Galaxy. In the first round, four person mixed teams answered each question after having a chance to deliberate. This round served as more of a warm up and consisted of only a few questions. In round two, players competed individually, and everyone answered every question simultaneously. At the end of the round, the five highest scoring players moved on to the final round. The five players were each given a buzzer, and points were awarded based upon who correctly answered a question first.

    Sample Questions:
    In Big O Notation, what is the amount of time required to find the smallest element in a sorted linked list?

    a) O(p)
    b) O(n)
    c) O(n log n)
    d) O(log n)

    answer: a


    What is the answer to life, the universe and everything?

    Answer: 42


  • Other events

    At some point in every day there would be a few team members with no current task. To put good minds to use, each day there was a Problem of the Day. Of course, we bossed all the other teams and correctly answered all three questions. One of the questions asked involved dice and the abbreviations of the names of the months. Another one was a chess game where you had to achieve and outcome in a certain number of moves. I dont remember the exact details of them, but trust me when I say it was awesome.

    A less awesome event filled saturday afternoon. Instead of playing ball in the gym, we all did some improv comedy. Our team did alright, and Dom Lacoste was a hit, but there wasnt much funny occurring.

    Finally there was a "participation points" category for scoring. Doing things like yelling your schools name and wearing a costume earned you points. Also you could make a video to intimidate the other teams. See ours: RPI FlashOut! The crowd loved the video. We got ruined in the rest of this category, but we feel it doesnt count for anything, because we know we had fun.