David graduated with highest honors from the University of Notre Dame in June of 1990. While at the University of Notre Dame he was enrolled in an Arts and Sciences honors program as well as an honors program within the Mathematics Department. He took nearly every undergraduate mathematics course offered at the University of Notre Dame, as well as graduate courses in complex analysis and logic. He also took five semesters of physics, including a semester of classical mechanics.
While at the University of Notre Dame David participated in an research project with Dr. John Kozak, a physical chemist, developing mathematical models for chemical reaction rates on molecular organizates and colloidal catalysts. This research resulted in two publication in the Journal of Physical Chemistry. David also worked for the biocore facility setting up and maintaining their molecular modeling computer lab. This work involved programming in Fortran and C, TCP/IP networking, and system administration for both Unix and Vax/VMS computers.
In 1990 David was admitted to Stanford University with a National Science Foundation Graduate Fellowship. At Stanford University he studied algebraic topology and homotopy theory. In addition to the usual coursework on abstract algebra, complex analysis, real analysis, differential geometry, and topology, he also participated in several reading courses on classical mechanics, gauge theory, and general relativity.
David's Stanford Ph.D. thesis, The Floer Homotopy Type of Grassmann Manifolds (1995), attempted to give a geometric interpretation of Floer cohomology in terms of stable homotopy theory following a program laid out by Cohen, Jones, and Segal. The interpretation was complete for the case of height functions on complex Grassmann manifolds. For the case of the action functional on the loop space of a complex Grassmann manifold the flow category was described in detail, but the compactification of the morphism spaces needed to define the Floer homotopy type was discussed only for the case of complex projective spaces (following CJS).