Shriram KrishnamurthiProfessor of Computer Science
Contact InformationContact Page
Personal home page:
|Theory of Computation|
|Verification and Reliable Systems|
|CSCI1730||Design and Implementation of Programming Languages|
|CSCI2950-X||Topics in Programming Languages & Systems|
Shriram Krishnamurthi is a computer scientist who builds software applications. Some of his applications have been highly influential, with users ranging from labs hunting gene loci to high schools introducing computer science to students.
Building, distributing, and supporting these applications has provided him with a personal sense of the many ways in which the same software that is so valuable can also go horribly wrong. His analyses of systems others have built, from email suites to corporate Web software, have reinforced this understanding. He has concluded that progress in software methods depends on research that integrates software engineering, programming languages and verification. Failing to exploit any one of these three will lead at best to weak solutions and at worst to bad investments on the entirely wrong problem. In the big picture, he is driven by the desire to make computer science more like other engineering disciplines—replacing disclaimers with warranties.
Prof. Krishnamurthi’s early work in programming languages tackled foundational problems in language design for extensible software construction. This work yielded both improved language-modularity mechanisms and working solutions for conventional languages, both of which have withstood the rigors of daily use in the DrScheme programming environment.
At Brown, he came to realize that software verification had fallen well behind advances in languages and that the gap was growing steadily. He began to devise modular verification techniques for the novel module systems he others have designed. He showed that these module systems not only solve some traditional modular-verification problems, but also introduce a fascinating range of new challenges.
Prof. Krishnamurthi’s programming language work has shifted to a study of interactivity. Modern applications are fundamentally interactive, yet traditional programming languages have little to do with interaction. For interactive Web applications, he first exploited connections to the theoretical foundation of continuations, and has since invented new compilation techniques, control operators, and notions of state. Complementarily, he is building a new dynamic dataflow programming language centered on interaction.
He is also deeply involved in improving introductory computing curricula at the high school and university levels. He believes computing belongs at the fore of any modern liberal arts education. Unfortunately, most introductory curricula fail to convey the centrality of computing. He works on the PLT Scheme programming system and TeachScheme! computing curriculum, which aim to provide educators with alternatives to the current pedagogy.