Mark Gillespie
About Me

Hi, I'm Mark. I'm a senior undergrad in math and computer science at Caltech. My research interests are in computer graphics and physical simulation. Right now, I am interested in variational integrators and the use of Discrete Exterior Calculus to discretize dynamical systems.

Here is a blog that I write with some friends. And here is my CV.


Programming Experience


  • C, C++
  • Haskell
  • Mathematica
  • Matlab
  • Java
  • Python


Magnetohydrodynamics (MHD) Simulation

Over the summer of 2017, I worked on simulating MHD using discrete exterior calculus. Following this paper by Kraus and Maj, I implemented a 2D MHD simulation in periodic domains. I then proved that the method conserves energy and cross-helicity, and I extended the method to domains with boundaries.

Below are some results of the simulation. The magnetic field strength is visualized by a glowing effect. You can see the fluid carrying the magnetic field upwards, where it collides with the container's boundary and starts to flow sideways.

I implemented the algorithm in HoudiniFX, and used Houdini to render these images.

Variational Integrators for Pendula

In the winter of 2016, I implemented a variational integrator for multiple pendula as a final project for a graphics class. I used the method of Marsden and West described here (also available here) to simulate a physical system with constraints.

Most of the work for this project was spent understanding the mathematical machinery that Marsden and West used to discretize classical mechanics. The algorithm was implemented in Mathematica.

Discrete Differential Geometry

Here are some interesting assignments that I implemented for a discrete differential geometry class in the fall of 2016.

I computed the normal modes of the discrete Laplacian on the Stanford bunny. Here are the first 4.

Using these normal modes, I numerically solved a Poisson equation to find the electric field induced by charges on the bunny's surface.

I also used the cotan Laplacian to perform mean curvature flow on surfaces. This creates surfaces with minimal surface area.
The largest project that I did in the class was computing smooth vector fields on surfaces using parallel transport via a trivial connection. I computed generators of the surface's homology using the tree-cotree algorithm. Then, I input the desired singularities and computed the Gaussian curvature on the surface. Using the Guassian curvature, I computed a trivial connection and then used the connection to transport the vector field across the surface.

Interval Analysis

Recently, I've been working with Professor Alan Barr on using Interval Analysis to solve root-finding and minimization problems. Interval analysis is the technique of doing computations with intervals representing uncertainty instead of regular real numbers. This provided guaranteed bounds on the accuracy of your results. Our code is available on GitHub.

Work Experience
Fall 2017

Teaching Assistant for CS 171, Introduction to Computer Graphics (Caltech)

Under Professor Alan Barr, graded problem sets, held weekly office hours, delivered recitation lectures

Summer 2017

Arthur R. Adams Undergraduate Researcher (Caltech)

Under Professor Peter Schroeder, implemented an energy-preserving integrator for 2D MHD on grids and proved its conservation properties
  • Analyzed conservation behavior of the algorithm using discrete differential geometry
  • Implemented algorithm in Houdini
Summer 2016

Arthur R. Adams Undergraduate Researcher (Caltech)

Under Professor Mathieu Desbrun, developed a new algorithm for computing polymer conformation using dimensionality reduction techniques.
  • Implemented algorithm in C++
  • Experimented with applying the algorithm to point cloud denoising
Jan. 2016 - 2017

Undergraduate Researcher (Caltech)

Under Professor Alan Barr, explored applications of interval analysis to root-finding and solving differential equations
  • Implemented interval analysis library in Haskell
  • Implemented graphical viewer for interval root-finding and minimization algorithms
Spring 2016,2017

Teaching Assistant for CS 38: Algorithms (Caltech)

I graded problem sets every few weeks and held weekly office hours.

Summer 2015

Software Engineering Intern (Google)

I prototyped a new credit card information input interface for an Android library. I wrote code in Java.



California Institute of Technology

  • Majors: Computer Science, Mathematics
  • GPA: 4.0

Selected Classes Taken

CS 177ab

Discrete Differential Geometry

discrete study of: differential forms, deRham cohomology, Poisson problems, variational mechanics
CS 176

Introduction to Computer Graphics Research

geometry processing, data visualization, vector fields and flows
CS 171

Introduction to Computer Graphics Laboratory

shaders, geometry processing, physical simulation, ray tracing
Ma 109bc

Introduction to Geometry and Topology

manifolds, vector fields, Gauss-Bonnet theorem, geodesics, differential forms
Ma 151a

Algebraic Topology

fundamental groups, covering spaces, homology
CS 150

Probability and Algorithms

analysis of probabilistic algorithms, the probabilistic method
CS 139

Analysis and Design of Algorithms

streaming algorithms, experts algorithm, SDPs, spectral graph theory
CS 151

Complexity Theory

nondeterminism, nonuniform circuits, randomized algorithms, polynomial hierarchy, interactive proofs, approximation
Ma 120a

Abstract Algebra

graduate course in commutative algebra

Selected Talks Given
Oct. 2017

2D Plasma Simulation via Discrete Exterior Calculus

Caltech Summer Research Seminar Day
15 minute presentation on the results of my summer research. Slides available here.
Sept. 2017

Combinatorics and the Probabilistic Method

Westfield High School Seminar in College Mathematics
30 minute presentation to a high school math class. Gave an introduction to elementary combinatorics and presented some simple applications of the probabilistic method. Notes available here.
Mar. 2017

Continuous and Discrete Mechanics for Variational Integrators

Caltech CS 177b
1.5 hour final presentation for a computer graphics class. Gave an overview of Hamiltonian/Lagrangian mechanics and how to discretize them to produce variational time integrators. Extended notes available here.