Abstract representation of code


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


Photo of Martin Erwig

Martin Erwig
Language design and domain-specific languages; functional programming; visual languages; end-user software engineering

Affiliated Faculty

Margaret Burnett

Margaret Burnett
Human issues of programming & software engineering: end-user programming, end-user software engineering, information foraging theory as applied to programming, how gender issues relate to software

Photo of Liang Huang

Liang Huang
Natural language processing, including parsing and translation; structured machine learning; programming languages; automata and formal language theory