I’m generally interested in efficient algorithms and their mathematical analysis.
When one computational method is consistently faster than another, there must be an intrinsic reason for that: I believe we can find a mathematical model to approximate running time where we still observe that difference, and by analyzing that model mathematically, we learn what makes one algorithm better than another.
Java nowadays uses a dual-pivot Quicksort, the Yaroslavskiy-Bentley-Bloch (YBB) Quicksort. I did the first average-case analysis of this algorithm, and an extension of the analysis of YBB Quicksort became my dissertation project.
To see dual-pivot Quicksort in action, check out the animated visualization of the algorithm (thanks to Brad Lyon)!
Rectification of Names. Note that I referred to YBB partitioning simply as Yaroslavskiy’s algorithm in my publications finished before 2016, but besides Vladimir Yaroslavskiy, also Jon Bentley and Joshua Bloch were involved in the development of the algorithm early on, so it is more appropriate to call their algorithm YBB Quicksort.
With a group of peers I’ve explored models for the evolution of cooperation.
Apportionment and Stick Cutting
Two seemingly unrelated problems can be solved by the same algorithmic idea.