I now work at Veracode on security-related static analysis of binaries.
My mission is to make it easier to construct and reason about correct, secure software. I'm particularly interested in modern statically typed programming languages, automated theorem proving, and static & dynamic program analysis. I'm also interested in combinatorial optimization & heuristic search.
I have included copies of my publications, along with the corresponding presentation slides and software where possible. I would be happy to hear from people using code from these projects!
Publications
-
Bradford Larsen. Simple Optimizations for an Applicative Array Language for Graphics Processors. Proceedings of the Sixth Workshop on Declarative Aspects of Multicore Programming, DAMP '11. 2011. Paper (PDF) Slides (PDF) Code (gzipped tar)
Array programming allows high-level use of fast graphics processors for general-purpose computing. This work shows a few powerful optimizations that are especially simple to implement given a functional source language.
I also presented a poster (available as a PDF) on this work at Tuft's Graduate Research Symposium. I used Apple's Pages to create the poster, something I would strongly recommend against: I encountered far too many bugs and limitations in Pages to make it a pleasant experience.
-
Bradford Larsen, Ethan Burns, Wheeler Ruml, and Robert C. Holte. Searching Without a Heuristic: Efficient Use of Abstraction. Proceedings of the Twenty-fourth AAAI Conference on Artificial Intelligence, AAAI-10. 2010. Paper (PDF) Slides (PDF) Code (gzipped tar)
The A* algorithm is the grandfather of many heuristic search algorithms that find cheapest paths through a graph. A* must be supplied with an admissible (i.e. non-overestimating) heuristic to find optimal solutions; in many domains such heuristics are hard to invent. This paper presents Switchback, a novel hierarchical heuristic search algorithm—which derives an admissible heuristic from a domain abstraction function as it executes—that avoids inefficiencies of its predecessors, Hierarchical A* and Hierarchical IDA*.
-
Bradford Larsen. Misconceptions and Computer Science. University of New Hampshire Inquiry online journal of undergraduate research. March 2009.
This misnamed article is a short retrospective on distrubted systems research I did in Germany in 2007, and briefly explores the pragmatic issue of striking a balance between slowly writing code that is perfect and quickly writing code that is mostly functional and usually correct.
-
Ronald Veldema, Bradford Larsen, and Michael Philippsen. A DSM Protocol Aware of both Thread Migration and Memory Constraints. Proceedings of the 20th IASTED International Conference on Parallel and Distributed Computing and Systems, PDCS '08. 2008. Paper (PDF)
A distributed shared memory system allows a computer cluster to appear to the programmer as a single multicore computer. Such a system must handle access of remote data, typically through either replicating shared data (which costs memory) or through migrating the relevant data or computation (which can take time). This paper shows how data replication and migration of computation can be effectively combined in a distributed shared memory system designed for out-of-core computation in memory-intensive applications.