Research in theoretical foundations formally defines both the types of problems that can be solved using a computer and the quality of their solutions. Computers are limited by space and time. The optimal solution to a computational problem often lies outside these limits, thus an approximate solution must be computed. Methods developed in this area define the plausibility of an optimal solution, the quality of the approximate solution, and the resources necessary to find each, thus leading the way to better utilization of a computer's resources or those of multiple computers in parallel. Specific research in this area encompasses a broad range of foundational topics in computer science including computational learning theory, complexity theory, algorithm and data structure design, parallel algorithms, geometric computing, cryptography, computational logic, programming languages theory, and matrix computations. Several group members are also engaged actively in leveraging their research into various application areas.