CS312 Tournaments

Computer Science Department
Cornell University

CS 312 is the Cornell computer science course on data structures and functional programming. It teaches a principled approach to constructing and reasoning about programs, including topics such as (1) alternative programming paradigms (beyond imperative and object-oriented programming), (2) key data structures and algorithms, (3) reasoning about program behavior and complexity, (4) type systems and data abstraction, and (5) the design and implementation of programming languages.

The course has often held tournaments at the end of the semester, in which student groups compete to produce the best program, usually one that played a game. The competition has not been a part of the official coursework, but students have nevertheless worked hard to win and achieve glory.

Many of the games have involved teams of robots running a program written in a concurrent programming language, called variously RCL or CL. In an earlier programming assignment, the students made the interpreter for the concurrent programming language work.


Spring 2008: Abalone

The game was a robot version of the board game Abalone, in which each piece was a separate bot. Bots could push the opponents around and off the board if they coordinated with each other. The winning bot team was by Jerzy Hausknecht.

[ Problem set handout]

(click to expand)


Spring 2007: 20,000 λ's under the Sea

The game was 20,000 λ's under the Sea, in which two underwater teams of squids and whales tried to collect as much treasure as possible. Teams could spend treasure to buy more bots. Squids could squirt ink to temporarily immobilize opponents. Whales could eat squid but had to surface to breathe. The winning team was Mohan Zhang and Vincent Chan.

[ Problem set handout] [Java-based game viewer]

(click to expand)


Fall 2006: LambdaCraft

The game was “LambdaCraft”, inspired by the popular real-time strategy game WarCraft. Game pieces were wizards, archers, and knights, with the object of the game to capture the enemy wizard. The wizard could freeze archers and knights, or destroy arrows in flight. All pieces were robots programmed in CL. The board also had mountains and lambda-mines. Picking up lambda-mines (aka lambda-lifting) allowed teams to spawn new archers or knights. The team of Manuel Vargas Escalante and Nicholas Gallo won the competition." [Problem set handout]

(click to expand)


Fall 2005: ML-Man

The game was ML-Man, based on the arcade game Pac-Man. The game had five characters: the MLman and four ghosts, Zardoz (red), Eager (blue), Greedy (pink), and Curried (orange). The goal of MLman was to acquire points by consuming dots and enery pills, or by capturing ghosts. The goal of the ghosts was to intercept and capture MLman. When MLman collected enough points, the game moved to the next level and a new board was loaded. If MLman was captured by a ghost, the game was restarted at the same level. The winning team was Robert Albright and Tyler Steele. [ Problem set handout]


Spring 2005: Multi-Ball

This semester the students implemented “Multi-Ball”, a modified version of the soccer game with players, goalkeepers, and two balls on the field. Players could capture, carry, and kick the ball. Capturing enough randomly appearing powerups allowed teams to add new players. The actions of each player and the movement of each ball were implemented in a concurrent functional programming language called CL. The previous assignment defined this language and students built an interpreter for it. The CL code controlling each player was fully executed on the interpreter. The team of Daniel Margo and Edward McTighe won the tournament.
[Problem set handout]

(click to expand)


Spring 2004: Lambda Shark CTF

As in Spring 2003, the goal was to implement a set of robots using RCL. This time the robots played a capture-the-flag game. The robots were actually robotic sharks packing lasers that they could use to shoot at each other. The board contained a maze that the robots had to find their way through. Picking up star powerups enabled the team to add more robots. The winning team was Justin Pease and Elliot Bäck.
[Problem set handout]

(click to expand)


Spring 2003: Lambda Ball

The goal was to implement a team of robots that could play a soccer-like game called "Lambda Ball". In addition to the ball, which robots could carry or kick, powerups would randomly appear on the board, enabling teams to create more robots or to go into overload mode. The board was a hexagonal grid with an interesting coordinate system. Robots were implemented in a special "Robot Control Language" programming language (RCL). In a previous problem set, student groups had finished the implementation of the RCL interpreter. The winning team was Sanjeev Kapur and Ian Hall.
[Problem set handout]

(click to expand)


Spring 2002: Pente

The tournament game was the board game Pente. The goal was to produce a Pente player. Strong competitors implemented search algorithms that used alpha-beta pruning to search several moves ahead. The winning team was Oren Yeshua and Asher Walkover.
[Problem set handout]