  We develop a correspondence between the theory of sequential algorithms and
classical reasoning, via Kreisel's no-counterexample interpretation. Our
framework views realizers of the no-counterexample interpretation as dynamic
processes which interact with an oracle, and allows these processes to be
modelled at any given level of abstraction. We discuss general constructions on
algorithms which represent specific patterns which often appear in classical
reasoning, and in particular, we develop a computational interpretation of the
rule of dependent choice which is phrased purely on the level of algorithms,
giving us a clearer insight into the computational meaning of proofs in
classical analysis.
