An experimental analysis of self-adjusting computation
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Adaptive functional programming
ACM Transactions on Programming Languages and Systems (TOPLAS)
Kinetic 3D convex hulls via self-adjusting computation
SCG '07 Proceedings of the twenty-third annual symposium on Computational geometry
A proposal for parallel self-adjusting computation
Proceedings of the 2007 workshop on Declarative aspects of multicore programming
Kinetic algorithms via self-adjusting computation
ESA'06 Proceedings of the 14th conference on Annual European Symposium - Volume 14
A novel SoC design methodology combining adaptive software and reconfigurable hardware
Proceedings of the 2007 IEEE/ACM international conference on Computer-aided design
Memory management for self-adjusting computation
Proceedings of the 7th international symposium on Memory management
Robust Kinetic Convex Hulls in 3D
ESA '08 Proceedings of the 16th annual European symposium on Algorithms
Self-adjusting computation: (an overview)
Proceedings of the 2009 ACM SIGPLAN workshop on Partial evaluation and program manipulation
An experimental analysis of self-adjusting computation
ACM Transactions on Programming Languages and Systems (TOPLAS)
A Library for Self-Adjusting Computation
Electronic Notes in Theoretical Computer Science (ENTCS)
A consistent semantics of self-adjusting computation
ESOP'07 Proceedings of the 16th European conference on Programming
Dynamic well-spaced point sets
Proceedings of the twenty-sixth annual symposium on Computational geometry
Self-adjusting computation with Delta ML
AFP'08 Proceedings of the 6th international conference on Advanced functional programming
Parallelism in dynamic well-spaced point sets
Proceedings of the twenty-third annual ACM symposium on Parallelism in algorithms and architectures
Adaptive Exact Inference in Graphical Models
The Journal of Machine Learning Research
First-order interactive programming
PADL'10 Proceedings of the 12th international conference on Practical Aspects of Declarative Languages
Functional programs that explain their work
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
Causality for free!: parametricity implies causality for functional reactive programs
PLPV '13 Proceedings of the 7th workshop on Programming languages meets program verification
Streaming big data with self-adjusting computation
DDFP '13 Proceedings of the 2013 workshop on Data driven functional programming
Dynamic well-spaced point sets
Computational Geometry: Theory and Applications
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
Lazy incremental computation for efficient scene graph rendering
Proceedings of the 5th High-Performance Graphics Conference
Functional reactive programming with liveness guarantees
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Higher-order functional reactive programming without spacetime leaks
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Generic representations of tree transformations
Proceedings of the 9th ACM SIGPLAN workshop on Generic programming
Hi-index | 0.00 |
This thesis investigates a model of computation, called self-adjusting computation, where computations adjust to any external change to their data (state) automatically. The external changes can change any data (e.g., the input) or decisions made during the computation. For example, a self-adjusting program can compute a property of a dynamically changing set of objects, or a set of moving objects, etc. This thesis presents algorithmic and programming-language techniques for devising, analyzing, and implementing self-adjusting programs. From the algorithmic perspective, we describe novel data structures for tracking the dependences in a computation and a change-propagation algorithm for adjusting computations to changes. We show that the overhead of our dependence tracking techniques is O(1). To determine the effectiveness of change propagation, we present an analysis technique, called trace stability, and apply it to a number of applications. From the languages perspective, we describe language facilities for writing self-adjusting programs in a type-safe and correct manner. The techniques make writing self-adjusting programs nearly as easy as ordinary (non-self-adjusting) programs. A key property of the techniques is that they enable the programmer to control the cost of dependence tracking by applying it selectively. Using language techniques, we also formalize the change-propagation algorithm and prove that it is correct. We demonstrate that our techniques are efficient both in theory and in practice by considering a number of applications. Our applications include a random sampling algorithm on lists, the quick sort and merge sort algorithms, the Graham's Scan and the quick algorithm for planar convex hull, and the tree-contraction algorithm. From the theoretical perspective, we apply trace stability to our applications and show complexity bounds that are within an expected constant factor of the best bounds achieved by special-purpose algorithms. From the practical perspective, we implement a general purpose library for writing self-adjusting programs, and implement and evaluate self-adjusting versions of our applications. Our experiments show that our techniques dramatically simplify writing self-adjusting programs, and yield very good performance even when compared to special-purpose algorithms, both in theory and in practice.