The Institute

Overview

Research and teaching in programming languages and systems engineering tackles fundamental problems to improve the design, construction, and analysis of software. It is often motivated by the needs of industry and society, such as the ever-growing demand for reliable, secure, and efficient software or the need to develop applications for a wide range of platforms from mobile devices, web sites, and cyber-physical systems to highly-parallel data centers and supercomputers. The Institute of Programming Languages and Systems at ETH covers a wide spectrum of research in this area from theoretical underpinnings to practical tools supporting today's ambitious software projects. Topics of particular attention include:

  • Software development: We design programming languages, models, methods, and tools for high-quality software development, especially in the difficult case of concurrent programs. Research topics range from domain-specific languages (DSLs) and novel concurrency models to new kinds of probabilistic programming systems which combine machine learning and program analysis techniques to solve challenging problems in software development.
  • Software performance: We aim at understanding and improving software performance by exploring novel optimization, synthesis, and parallelization techniques. One research direction is the automatic production of highly-optimized, platform-tuned code for ubiquitous mathematical functionality. The approach combines DSLs, symbolic computation, compilers, and machine learning. 
  • Software reliability and security: We develop a variety of program analysis techniques that effectively detect software errors at large scale or even guarantee the absence of certain defects. These techniques include static analyses such as abstract interpretation, program verification, and type systems, as well as dynamic analyses such as software monitoring and testing.
JavaScript has been disabled in your browser