Projects
I have more ideas than time, and am happy to share! If you are interested in these projects, email me and we'll talk about it. If you have a project idea of your own, we can talk about that, too.
Rust Plumbing for Asynchronous Optimization
tools
POAP is a package of Plumbing for Optimization with Asynchronous Parallelism that I wrote in Python seven years ago. I would like to make a version in Rust, which I think may be particularly well-suited to the task. This project would involve writing a Rust version of the functionality in this package, building both on the abstractions in POAP and the asynchronous programming abstractions present in Rust.
This project would be a natural accompaniment to CS 4414/5416.
Quarto PPTX Filters
tools
Quarto can produce PowerPoint slide decks from Markdown inputs. Compared to the Reveal.js deck functionality, though, the PowerPoint functionality is a bit lacking. It’s hard to change fonts or font sizes, for example. This can be done by directly inserting OpenOffice XML directives, but this is rather a pain to do by hand. What I would like to do is to write a Lua filter so that I can do some simple formatting operations in the Markdown for PowerPoint that allow me to do things like change font sizes, add horizontal lines, etc into a generated PPTX deck.
Nonsmooth High-Order Quadrature
numerics
Gaussian quadrature rules provide very rapidly convergent estimates of the integral of a function (or a function times a weight) when the function in question is highly smooth. These rules tend to slow down dramatically when the function is not smooth. For a particular application in Bayesian optimization, we are looking at integrands that are non-smooth and expensive to evaluate, but the non-smoothness is of a particular type that should be easy to deal with.
This project will probably be easiest if you have had a numerical analysis course covering quadrature (e.g. at the level of CS 4210).
Optimization Under Stability Constraints
numerics optimization
We are interested in optimizing an objective function depending on some parameters, with the constraint that a certain dynamical system remains stable under those parameters. The motivating application comes from plasma physics, but this type of structure arises in other settings as well. The goal of this project will be to do a literature review of related work in the area, comparing a few methods (and implementing them for a simple problem).
This project will probably be easiest if you have had a numerical analysis course covering optimization and a little bit about eigenvalue problems (e.g. at the level of CS 4220).
Button Buzzer
physics
A button buzzer (aka a button whirlygig) is a traditional toy, made from a loop of thread passing through two opposite holes in a button. After “winding it up” so that the string is twisted on each side, you can pull on the spring ends to make the button spin rapidly (with a characteristic buzzing sound); it usually spins fast enough to re-wind itself in the other direction in this process. This is a great deal of fun to play with, and I think it would also be a lot of fun to simulate.
I expect this to be a hard project! It will probably be most tractable if you have some experience with mechanics (though computer graphics may be enough) and maybe a numerical analysis course.
Three.js and Stellarators
tools physics stellarators
A stellarator is a class of magnetic confinement systems for plasmas (particularly, though not exclusively, for fusion-relevant plasmas). Three.js is a Javascript-based system for rendering 3D graphics. I have some examples of putting these things together, using Three.js for rendering images of stellarators. I would like to extend that system, and I would like to use the extended system to make movies for when I give talks about these devices!
This project does not require knowing anything about stellarators or fusion. But some experience with computer graphics would probably be helpful.
Divertor Leg Optimization
numerics optimization physics stellarators
Charged exhaust particles in fusion devices are guided out of the plasma by a structure called a divertor. This can be modeled (without really understanding any plasma physics) as a type of invariant manifold in a class of nonlinear dynamical systems. The goal of this project would be to (robustly) optimize geometric properties of such invariant manifolds.
The project does not require knowing anything about plasmas. It does, however, require both some numerical analysis background (something like CS 4210 or CS 4220) and a good grounding in differential equations (at least at the level of Math 2940).
Adjoints and Roundoff Sensitivity
numerics tools
The idea of reverse-mode differentiation (aka backward mode or adjoint mode) has been re-invented many times. However, one of the earliest modern inventions was a paper by Seppo Linnainmaa in 1976 (based on his 1970 MS thesis), in which he introduced the reverse mode of automatic differentiation as a method of rounding error analysis. I have several things I would like to do that build on this idea, and would like a clean implementation in Julia of this automatic differentiation rounding error analysis framework.
This project requires an understanding of multivariable calculus and linear algebra, and well as a basic understanding of how computer languages are parsed and interpreted (at the level of CS 3110).
Rocq and Interpolation Bounds
numerics tools
As part of a project with Andrew Appel, we were looking for a proof in Rocq using the Mathcomp Analysis library of the standard error bound used in polynomial interpolation. It was suggested to us that this would make a fine master’s project, and so I am now passing on this suggestion. This would be a project that I would help administer, but would be done in concert with Appel or with another colleague working in formal methods.
This project probably makes the most sense for a student who already knows a little about formal methods and Rocq.
Optimizing Matrix Computation DAGs
numerics tools
One of the standard examples of dynamic programming is figuring out the order of associativity to use in evaluating a chain of matrix multiplications so as to minimize the overall cost. But in many interesting matrix computations, there is not a simple chain of multiplications, but a graph of multiplications for multiple outputs with shared intermediates. I believe that this can be tackled with equality saturation; I would like to try this out, and ideally embed it in a small language.
This project requires some understanding of algorithms, and probably makes the most sense for students who also have some experience with compilers.
Continuation Methods for Optimization on Surrogates
rbf tools
Surrogate methods for global optimization of expensive functions alternately sample the expensive function, update a model (a surrogate to the expensive function), and use the model to determine where to sample next. This last step frequently involves an inner global optimization problem that may be somewhat expensive in its own right. In this project, we propose to use a parameter continuation approach to solve this global optimization on the surrogate through a sequence of optimizations on smoother and simpler surrogates.
You should ideally have a course in numerical computing to take on this project.
Evans Functions and Nonlinear Eigenvalue Problems
physics eigen
The Evans function is a Wronskian-type construction that plays a role similar to the characteristic polynomial in the unbounded-domain spectral problems that arise in the analysis of 1D solitary wave stability. This construction has been used computationally to good effect for some problems; however, some preliminary results (and analogy to more conventional eigenvalue problems) suggests that this should be less numerically stable than an alternate method based on a nonlinear eigenvalue computation. I have coded variants of this before, and now have some nice theory to back up my favored algorithm. But I would love to have help in doing a systematic comparison between my favored algorithm and methods based on the Evans function. Ideally, I would also love to have a numerical error analysis of both methods, too.
You should have a course in differential equations and a course in linear algebra to tackle this project, and ideally a course in analysis and a course in numerics.