David Van Horn
Research Assistant Professor
350 West Village H |
Calendar: HTML,
iCAL
Links: DBLP,
ACM,
ArXiv,
CiteULike,
Github,
Twitter
My work supports scientific foundations for software construction and understanding. I am interested in the design, implementation, and use of programming languages. In particular, my research has focused on the analysis of higher-order programs and its complexity. I have proved novel upper and lower bounds for a number of important program analyses and used these insights to design better program analyzers. I have also developed type systems for inferring and verifying temporal models of programs.
Applications deployed on mobile devices play a critical role in the fabric of daily life. They carry sensitive data and have capabilities with significant social and financial effect. Yet while it is paramount that such software is trustworthy, these applications pose challenges beyond the reach of current practice for low-cost, high-assurance verification and analysis. The primary goal of this project is to enable sound, secure, automatic program analysis for the elimination of security vulnerabilities in mobile applications written in high-level programming languages.
This work is supported by the DARPA Information Innovation Office, Automated Program Analysis for Cybersecurity program.
Behavioral software contracts express invariants and agreements between components of a program (procedures, modules, classes, even different languages) and assign blame to the appropriate party whenever these agreements are violated. As such, contracts form a rich specification language, allowing arbitrary properties to be encoded a programs. This richness is crucial for constructing reliable components, however the expressivity of contracts thwarts static reasoning and incurs significant run-time monitoring costs. This work rectifies the situation by providing foundations for modular and compositional automated reasoning about behavioral contracts.
This work is supported by the National Science Foundation, Software and Hardware Foundations program.
The main thesis of this project is that by making language mechanisms available to programmers that capture more design knowledge, this knowledge can be leveraged to qualitatively improve automated reasoning about programs. As part of the GnoSys project, I am investigating the interaction of analysis with language design, formal methods, and operating systems to enable mutually beneficial combinations for constructing robust systems. The focus of my work is to design program analysis tools for capturing domain knowledge and to design program abstractions that can be exploited by the components of the system such as the operating system and automated theorem prover.
This work is supported by the DARPA Clean-slate design of Resilient, Adaptive, Secure Hosts (CRASH) program.
This book explores programming interactive video games in Racket. Available for pre-order from No Starch Press and Amazon. Written with Matthias Felleisen, Conrad Barski, and a group of Northeastern undergraduate students: Forrest Bice, Rose DeMaio, Spencer Florence, Feng-Yun Mimi Lin, Scott Lindeman, Nicole Nussbaum, Eric Peterson, and Ryan Plessner.
I believe understanding computation to be a basic component of literacy. Many of my students have not only mastered this aspect of literacy, they teach it! Dozens of my students have gone on to teach middle school students in the Boston area as part of the Bootstrap program, which empowers students to program their own video games using purely algebraic and geometric concepts.
Pushdown Exception-Flow Analysis of
Object-Oriented Programs. With Shuying
Liang, Matthew Might, and Thomas
Gilray.
[ arXiv ]
Correctly Optimizing Abstract Abstract Machines.
With J. Ian Johnson,
Nicholas Labich,
and Matthew Might.
[ arXiv ]
Pushdown Abstractions of JavaScript.
With Matthew Might.
[ PDF | Abstract | arXiv ]
Higher-Order Symbolic Execution via
Contracts.
With Sam
Tobin-Hochstadt.
The ACM SIGPLAN Conference on
Object-Oriented Programming, Systems, Languages, and Applications
(OOPSLA'12), Tuscon, Arizona, October 2012.
[ PDF | Abstract | ACM | arXiv ]
Introspective Pushdown Analysis of Higher-Order
Programs.
With Christopher
Earl, Ilya
Sergey, and Matthew Might.
The 17th ACM SIGPLAN International Conference on Functional Programming (ICFP'12), Copenhagen, Denmark, September 2012.
[ PDF | Abstract | ACM | arXiv ]
Systematic Abstraction of Abstract Machines.
With Matthew Might.
Journal
of Functional Programming, 22(4-5). September, 2012.
[ PDF | Abstract | CUP | arXiv ]
Abstracting Abstract Machines.
With Matthew Might.
Communications of the ACM, Research Highlights, 54(9), September 2011.
[ PDF | Abstract | ACM | arXiv ]
A Family of Abstract Interpretations for Static
Analysis of Concurrent Higher-Order Programs.
With Matthew Might.
The 18th International Static Analysis Symposium (SAS 2011), Venice, Italy, September 2011.
[ PDF | Abstract | Springer | arXiv ]
Semantic Solutions to Program Analysis Problems.
With Sam Tobin-Hochstadt.
FIT Session, The ACM SIGPLAN 2011 Conference on Programming Language Design and Implementation (PLDI'11), San Jose, California, June 2011.
[ PDF | Abstract | arXiv ]
Abstracting Abstract Machines.
With Matthew Might.
The
15th ACM SIGPLAN International Conference on Functional Programming
(ICFP'10), Baltimore, Maryland, September, 2010.
[ PDF | Abstract | ACM | arXiv ]
Pushdown Control-Flow Analysis of
Higher-Order Programs.
With Christopher Earl and Matthew Might.
The
2010 Workshop on Scheme and Functional Programming
(SFP'10), Montréal, Québec, Canada, August, 2010.
[ PDF | Abstract | arXiv ]
Evaluating Call-By-Need on the
Control Stack. With Stephen Chang
and Matthias
Felleisen.
Symposium
on Trends in Functional Programming (TFP 2010), Norman,
Oklahoma, May, 2010.
Best student paper award.
[ PDF | Abstract | Springer | arXiv ]
Resolving and Exploiting the
k-CFA Paradox. With Matthew Might
and Yannis Smaragdakis.
The ACM
SIGPLAN 2010 Conference on Programming Language Design and
Implementation (PLDI'10), Toronto, Canada, June 2010.
[ PDF | Abstract | ACM ]
The Complexity of Flow Analysis in Higher-Order Languages.
PhD dissertation, Brandeis University, August 2009.
[ PDF | Abstract | UMI ]
Subcubic Control Flow Analysis
Algorithms. With Jan
Midtgaard.
Roskilde Unversitet, Computer science research
report #125, May 2009. Presented at the Symposium in
Honor of Mitchell Wand. Accepted to appear in revised form
in the journal Higher-Order
and Symbolic Computation.
[ PDF | Abstract | RUC ]
Deciding kCFA is complete for EXPTIME. With Harry G. Mairson.
The 13th ACM
SIGPLAN International Conference on Functional Programming
(ICFP'08), Victoria, British Columbia, Canada, September
2008.
[ PDF | Abstract | ACM ]
A Few Principles of Macro
Design. With David Herman.
The ACM Workshop on
Scheme and Functional Programming, Victoria, British Columbia,
Canada, September 2008.
[ PDF | Abstract | WSFP ]
Flow Analysis, Linearity, and
PTIME. With Harry G. Mairson.
The 15th
International Static Analysis Symposium (SAS 2008), Valencia,
Spain, July 2008.
[ PDF | Abstract | Springer ]
Types and Trace Effects of Higher
Order
Programs. With Christian
Skalka and Scott
Smith.
Journal
of Functional Programming, 18(2), March 2008.
[ PDF | Abstract | CUP ]
Relating Complexity and Precision
in Control Flow Analysis. With Harry G. Mairson.
The
Twelth ACM SIGPLAN International Conference on Functional Programming
(ICFP'07), Freiburg, Germany, October 2007.
[ PDF | Abstract | ACM ]
Algorithmic Trace Effect
Analysis.
MS thesis, University of Vermont, 2006.
[ PDF | Abstract | UVM ]
A Type and Effect System for
Flexible Abstract Interpretation of Java. With Christian Skalka and Scott Smith.
The
ACM Workshop on Abstract Interpretations of Object-Oriented
Programs, Electronic Notes in Theoretical Computer Science,
Volume 131. January 2005.
[ PDF | Abstract | Elsevier ]
Stephen Chang, Christopher Earl, Matthias Felleisen, David Herman, J. Ian Johnson, Harry Mairson, Jan Midtgaard, Matthew Might, Ilya Sergey, Olin Shivers, Christian Skalka, Yannis Smaragdakis, Scott Smith, Sam Tobin-Hochstadt, and Mitchell Wand.
![]()
Valid XHTML
&
CSS
Last
updated by dvanhorn: Tue Apr 2 11:54:20 EDT 2013