Shriram Krishnamurthi

Shriram Krishnamurthi

Professor of Computer Science

Contact Information

Contact Page
Personal home page:

Research Areas

Programming Languages
Software Engineering
Theory of Computation
Verification and Reliable Systems

Courses Taught

CSCI1730   Design and Implementation of Programming Languages
CSCI2950-X   Topics in Programming Languages & Systems
CSCI1900   csciStartup
CSCI2340   Software Engineering

Research Interests

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.

All publications by Shriram Krishnamurthi