Abstract
Tools for software engineers, such as programming languages and IDEs, should reflect the needs of their users. Unfortunately, designers of programming languages lack strong guidance regarding how to make these tools most effective for users. Though there is a well-developed theory of programming languages, there is little evidence regarding how to use this theory to build languages in which software engineers are most productive. I propose to develop methods for programming language design that fuse results from programming language theory with methods from human-computer interaction so that designers can create effective tools for users.