Better tools for better software by Angela Herring October 4, 2012 Share Facebook LinkedIn Twitter Trustee Professor Matthias Felleisen researches program languages and software design. Photo by Brooks Canaday. In recognition of the impact his work has had on the field, computer science professor Matthias Felleisen received the 2012 Achievement Award from SIGPLAN, the Association for Computing Machinery’s special interest group on programming languages. When a computer scientist creates a new programming language, he’s doing exactly that: creating a new language. People invent new languages, Felleisen explained, “because it’s a lot easier to express knowledge in your own language instead of translating into a low-level programming language.” In the mid-1990s, that concept inspired Felleisen to develop a language called PLT Scheme, which he later renamed Racket. It allows programmers to turn familiar vocabulary into a programming language — for instance, a program designed to solve physics problems would use the actual mathematical language of physics. “What we achieve,” said Felleisen, “is programmers can think at a much higher level about the problem.” After visiting a high school programming class in Houston, Felleisen realized that such a tool could also be useful for teaching both computer programming and mathematics, since it didn’t require learning a third, abstract language. “There was a girl who had written down a perfect solution for an algebra problem,” he said. “But in C++ you have to write it the other way around. She could not comprehend that and she started crying. That girl hated computers from that point on — it’s obvious why.” Originally developed as a research tool, Racket is now used as both an educational platform and an actual programming language found in a variety of real-world, computational settings. Felleissen said the overarching goal of his work is to develop better tools for better software. Racket is one such tool. Another tool developed in Felleisen’s lab, which has become pervasive in the programming world, is a kind of referee system that helps programmers find the source of errors. “It specifies what a software component promises to do for you and what it expects from you in return,” said Felleisen. The referee checks whether or not it actually happens. As he put it, “It can pinpoint exactly where some component broke its promise.” Felleisen also received SIGPLAN’s Most Influential Paper award for his 2002 paper on the referee system, which recognizes a paper’s influence in the decade after its publication. Essentially acting as a fact checker, the referee system (officially called a software contract) is a key step in developing a sound programming language, according to Felleisen. His educational programs, which have been implemented in schools and universities across the globe, follow six steps from defining the problem to checking the work. The approach is based on mathematical problem-solving procedures, he said, but people have used it to develop everything from programming languages to poetry.