GSoC/GCI Archive
Google Summer of Code 2009

Portland State University

Web Page:

Mailing List:

We're the Portland State University Summer of Code team, hoping to participate in a fifth year of this fine activity. In the past four years, we've successfully mentored 22 students through projects in a variety of areas ranging from the immediately practical to the forward-looking esoteric. Our specialty is projects that clearly benefit the student, the open source community, and society in general, but have no obvious fit in the standard mentoring organizations. In particular, we tend to focus on small-scale or individual, risky but promising open source "seed" projects that we think will grow into something great. We like to mentor projects in the technology end of the open source space, including Linux kernel driver work and open hardware/software systems work with a solid code component. That said, a number of our projects have been at the applications level as well; one of our strengths is the ability to track down mentors for a wide variety of different kinds of activity. Portland, Oregon is an amazing place, and we're lucky to have access to a strong, diverse open source community.


  • Behavior Tree Library and Testbench for AI Programming I will write a thoroughly documented library for behavior trees, with usage examples. Behavior trees are a method of programming AI by creating a directed acyclic graph (DAG) where branch nodes evaluate the current condition of the agent and make decisions, and leaf nodes represent the action that was decided upon. This is a flexible, scalable, and modular system for implementing many different types of behavior. Behavior trees were used to write the Halo 2 AI, where they were successfully used to manage on the order of 50 behaviors per character.
  • PyDy: Newtonian Mechanics with Python PyDy is an analysis and visualization tool for studying and teaching the dynamics of mechanical systems. It allows for symbolic derivation of the equations of motion, their numerical integration, and animation of the motion, all within the Python environment. Built on top of Sympy, Scipy, and Visual Python, it enjoys the benefits of LaTeX output, web interactivity, and low overhead. PyDy is unique because all steps of simulating realistic motion are available to the user in one place.
  • Sandpiles The sandpile model is an automaton played on an arbitrary graph that gives rise to remarkable dynamic and algebraic properties. Originally proposed by Bak, Tank, and Wiesenfeld at the Sante Fe Institute to demonstrate self-organized criticality, Dhar demonstrated that the so-called recurrent configurations of a generalization of their model has a group structure. The sandpile model has since become a vibrant area of research, bringing together complex systems studies with graph theory, group theory, combinatorics, and algebraic geometry. Until now, however, no software has been developed that simulates the sandpile model on arbitrary graphs. The aim of this project, then, is to create a research-grade software package to fill this void.
  • Seamlessly Integrating Projected Images with Chalkboard Lectures I would create a free, open-source application that would allow anyone with a projector, webcam, and a computer to seamlessly integrate graphs, pictures, or any other image into lecture notes written on a chalkboard. This would be most applicable to the teaching of multivariable mathematics, where 3D graphs often help students grasp the concepts involve, but the difficulty of drawing said graphs limits their use in lectures.
  • SymPy new assumption system SymPy is a computer algebra system implemented in Python. It has a rudimentary assumption system, which has many weaknesses. This project aims to implement a new assumption system that does not suffer from these limitations. By assumption system I mean a framework in which we can specify (mathematical) properties about objects, simplify expressions binded to some properties and infer other properties from the original ones.
  • SymPy: Ordinary Differential Equation Solving Engine SymPy, a computer algebra system written and used in python, currently has all but no support for ordinary differential equation solving. My proposal is to expand the solution engine to include all common types of ordinary differential equations, including all the common symbolic methods, some approximation methods such as series and numerical solution techniques, and some systems of ordinary differential equations solution techniques.