Programming Languages


The Programming Languages group studies the design, implementation, and formalization of programming languages. Our research includes work on language design, type systems, functional programming, and visual languages. We specialize in developing domain-specific languages that support solving and communicating difficult problems in a particular area by raising the level of abstraction, focusing on essential complexity, and empowering domain experts who may not be professional programmers. We also apply programming language techniques to solve problems in software engineering and end-user programming.

Sub Areas

  • Functional Programming
  • Domain-Specific Languages
  • Type Systems
  • Language Design
  • Visual Languages

Related Courses

  • CS 581: Programming Languages I
  • CS 582: Programming Languages II
  • CS 583: Advanced Functional Programming
  • CS 584: Human Factors of Programming Languages
  • CS 585: Domain-Specific Languages
  • CS 589: Special Topics in Programming Languages


Martin Erwig

Martin Erwig

Stretch Professor of Computer Science

Electrical Engineering and Computer Science
Programming Languages | Computer Science Education