My name is Ethan Burns. I recently graduated from the University of New Hampshire with my Ph.D. in Computer Science. I will be working at Google beginning in August 2013.

While at UNH, I was a member of the UNH AI Group, where I worked with Professor Wheeler Ruml in the area of heuristic search. My interests include automated planning, heuristic search, parallel search, combinatorial optimization, and model checking, among other things. My full CV is available here.


Planning for Robots

Parallel Heuristic Search

Other Search and Planning

High-Performance Network Storage



  • Understanding Your Data Through Plots
    University of New Hampshire, CS 900 Graduate Seminar, September 13, 2012
    A talk about plotting, SPT, and Plotinum

    Abstract: Graduate students tend to generate a lot of data, both to understand their new ideas and to demonstrate to others which of their ideas work well. It is often tempting to display this data in an easy-to-create raw format such as a table filled with numbers. Unfortunately, such formats fail to truly show the information that the data provides, because it is difficult to see trends in a mess of raw numbers. Luckily, there are many effective techniques for displaying data graphically that allow us to quickly and clearly see what is really going on. I will present a set of useful methods for plotting data along with a brief introduction to the tools that I have used in my own research to help me see the results of the many, many experiments that I have run over my career as a graduate student.


Research Assistantship

From the fall of 2008 to the fall of 2012, I was a research assistant for Professor Wheeler Ruml. During this time, I did research on parallel heuristic search, disk-based heuristic search, hierarchical search, state space size estimation, continual planning with goal arrivals, and robot motion planning.

Palo Alto Research Center

During the summer of 2011 I worked as an intern at the Palo Alto Research Center (PARC). While there, I did research with Dr. Rong Zhou on parallel search for model checking with the Spin model checker.

Teaching Assistantship

I have been a teaching assistant at the University of New Hampshire for a variety of courses including: Algorithms (2010), Introduction to Artificial Intelligence (2009), and Object-oriented Methodology (2006-2008).

University of New Hampshire InterOperability Lab

I worked for the UNH-IOL for most of my undergraduate and master's degrees. While I was at the IOL I worked in the following consortia:

  • iWARP - Here I worked on development for UNH-iSCSI (with iSER) and SoftWARP (a software iWARP implementation for the Linux kernel).
  • iSCSI - I did some of my work on the iSCSI Extensions for RDMA (iSER) in the iSCSI group.
  • IPv6 - I worked in the IPv6 consortium adding support for IPSec and IKE over IPv6 to an in-house testing tool.
  • IPv4 - I worked in the IPv4 consortium adding support for the Border Gateway Protocol (BGP) to an in-house testing tool.


Current Projects

  • My heuristic search research code is available on github.
  • Feedme is a simple RSS and Atom feed reader with an acme-like look and feel. It is written in the Go programming language, and runs on the Google App Engine. The source code is available here
  • Plotinum is a plotting package for the Go programming language.
  • SPT is a simple plotting tool written in Objective Caml. SPT serves as an OCaml library for plotting and it comes with a tool called spt-it-out for plotting from the command-line using a simple input file format.

Previous Projects

  • Mid is small adventure game that I worked on for a bit with Steve McCoy. It is a 2D platform game, however, each 'level' has doors leading back and forth between z layers making for a 3D-style maze. The automatic content generation uses a pipeline allowing you to plug in different programs to generate the different level features such as the maze, interactive environment objects, items, and enemies. Steve did all of the art so it looks better than any other games that I have ever worked on.
  • liblinuxkernel is a small library that Dr. Russell and I wrote while I was working on my Master's thesis. Basically, it implements some of the Linux kernel API in user space to allow some kernel code to compile completely in user space. We used this library to enable the UNH-iSCSI driver for Linux to run completely in user space.
  • My CS830 final project was a bot that will play the old BSD hunt the wumpus game. The bot uses an algorithm based on maintaining arc consistency along with a tiny CSP solver to make inferences about the locations of pits and the evil wumpus. Using this information, a planner selects rooms to explore that it suspects are safe. Eventually the bot can often locate and shoot the wumpus to beat the game. The bot is better than the average human player who and is about on par with a good human player (but obviously, the bot is much faster than any human).
  • When studying for the compiler design qual., I made a simple lexer generator called lexit. It reads a simple description and builds an automata to do string tokenizing.
  • Glutboard is a project that I did while I was an undergrad in order to experiment with OpenGL and computer graphics. It is a 3D chessboard front-end for gnuchess which uses the OpenGL and Glut libraries. It supports both simple and projected shadows, reflections, full-scene anti-aliasing, highlighting of in-danger pieces, and highlighting legal moves.


Some useful configuration files:

  • My .screenrc file.
  • My .acme file with acme configuration.
  • My .emacs file. Automatically does setup for the UNH-AI research machines if you are logged in from one.
  • tla-mode for emacs ( TLA+). This is a modified version of a file that I found in the tubes. I fixed this because the syntax highlighting was broken. Additionally, this appears to have TLA+ indentation support and a few small functions like "comment-region" and "un-comment-region".
  • tla.vim for TLA+ on vim (thanks to Matt Sherman for most of this and minor modifications/additions by Zoe D.).