1. A method for an adaptive computer program comprising: populating one or more modifiable references with task information; employing idle resources to cooperate with said one or more modifiable references and process assigned tasks in a background mode using said task information; providing task results on an as-needed basis; tracking system state changes by said one or more modifiable references; generating an execution trace as a binary tree of said one or more modifiable references, said trace describing nodes where data is created and consumed, and where different control and data-flow dependencies leading to said nodes are created and consumed; exposing said dependencies through sequence and split primitives in said binary tree; generating two total orderings based on the binary tree, wherein the two total orderings include a first total ordering comprising a depth-first ordering and a second total Hebrew ordering; sequentially comparing the order of the nodes of the two total orderings to determine at least one exposed dependency, wherein an exposed dependency is when a first node precedes a second node in both total; and using the exposed dependencies to identify computations of nodes to parallelize.