David Van Horn
Visiting Assistant Professor
350 West Village H |
Calendar: HTML,
iCAL
Links: DBLP,
ACM,
ArXiv,
CiteULike
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 whenver 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.
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. To be published by No Starch Press. Written with Matthias Felleisen, Conrad Barski, and The Roquets, a group of Northeastern undergraduate students.
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 Abstractions of JavaScript.
With Matthew Might.
[ PDF | Abstract | arXiv ]
Abstract Reduction Semantics for Modular Higher-Order Contract Verification.
With Sam Tobin-Hochstadt.
[ PDF | Abstract | arXiv ]
Systematic Abstraction of Abstract Machines.
With Matthew Might.
Accepted with minor
revisions, Journal
of Functional Programming. To appear, 2012.
[ PDF | Abstract | 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, Harry Mairson, Jan Midtgaard, Matthew Might, Olin Shivers, Christian Skalka, Yannis Smaragdakis, Scott Smith, Sam Tobin-Hochstadt, and Mitchell Wand.
![]()
Valid XHTML
&
CSS
Last
updated by dvanhorn: Fri Dec 2 17:54:59 EST 2011