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.
I am a Professor in the Computer Science Department and UMIACS at the University of Maryland, College Park. I am a member of the programming languages group at Maryland. The goal of my research is to develop practical tools and techniques to improve software quality. I am interested in programming languages, software engineering, advanced static type systems, scalable constraint-based analysis, and building tools that implement my ideas.
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