# Matthew Rocklin - Open source code

##### Computational Scientist, also person.

This page describes the open source projects on Matthew
Rocklinâ€™s github page. It may
be slightly out of date. You may prefer the standard github
page.

### Projects started by me

- PyToolz: A functional standard library for
Python. Largely modeled after the Clojure standard library.
- LogPy: Logic programming in Python. An
implementation of miniKanren.
- APE: Static scheduling of
array operations onto heterogeneous hardware. Wraps an MPI layer
around the Theano project. Uses tompkins (see below) for
scheduling.
- Matrix Algebra in
Maude: A tiny DSL
for simplifying matrix expressions. It is written in the Maude
system using rewrite rules. The eventual goal is to wrap the
complexity of using BLAS and LAPACK into an easily expressible
mathematical language.
- tompkins: A scheduler
for computations on heterogeneous architectures including
dependencies between tasks (represented as a DAG), and
communication times. It solves the problem using an integer
linear programming method described in an article by Tompkins.
This code attempts to translate his math into clear Python code.
Section and equation numbers are included. Uses the pulp library
to describe the ILP.
- heft: Yet another scheduler for
computations on heterogeneous architectures. This time a heursitic that
runs much faster than
`tompkins`

and usually gives decent results. See the
relevant Wikipedia
article
- Shallow Water: A
time dependent solver for the Shallow Water equations. This code
uses numpy or Theano for low level computation. It was designed
to demonstrate how mathematical solvers can be written clearly
in a high-level language and use libraries for efficient
low-level computation. This serves as an example of an important
computation that can be well expressed using only array
primitives.

### Projects to which I contribute (and people actually use!)

- SymPy: A symbolic
mathematics library within Python. Similar to Mathematica or
Maple. I am the main contributor to the statistics and symbolic
matrix expression modules.
- Theano: A library that
bridges the symbolics-numerics gap. My contributions in Theano are largely
based around graph manipulation, concurrency, MPI, and rudimentary
scheduling algorithms.