I explore all aspects of program design and programming language design. My current research involves work on behavioral software contracts, gradual typing of scripting languages, language interoperability, language extensibility, and module systems. I also engage in educational outreach work. For the past 20 years, I have worked with middle schools, high schools, after-school programs, and college faculty on injecting design ideas into mathematics and computer science courses. Such educational interactions often inspire our research, and many research efforts end up improving my educational work.
Joined University of Maryland, College Park, 2002
Ph.D, University of California, Berkeley, 2002
I am a Professor in the Department of Computer Science at Tufts University. The goal of my research is to develop fundamental new ways to make it easier to build more reliable, secure software. I am interested in programming languages, software engineering, and security. I am a member of TuPL. Previously, I was a Professor in the Department of Computer Science and UMIACS at the University of Maryland, College Park, as well as a member of PLUM.
Joined University of Colorado, Boulder, 2006
Ph.D, Indiana University, 2005
Associate Professor of Computer Science in the School of Informatics and Computing at Indiana University. Jeremy teaches courses in programming, programming languages, compilers, logic, and other areas of computer science. Jeremy designs new language features to help programmers create and use software libraries and domain-specific languages, especially generic and high-performance ones. In particular, Jeremy invented the gradual typing approach to mixing static and dynamic type checking within the same language. Prior to that, Jeremy authored the Boost Graph Library and attempted to add concepts to C++. Jeremy is a member of the Programming Languages Group at IU and the Center for Research in Extreme Scale Technologies.
M.Sc., Indiana University, 2016
Former Ph.D Student