Abstract representation of code

Overview

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

  • Domain-Specific Languages
  • Functional Programming
  • Language Design
  • Type Systems
  • 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
 

Faculty

Photo of Martin Erwig

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

Photo of Eric Walkingshaw

Eric Walkingshaw
Domain-specific languages; functional programming; type systems; variability; extensibility; human factors

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