Programming languages and software engineering

Programming languages and software engineering

Improving the performance and reliability of computer programs and systems that allow billions of people around the world to connect, collaborate and prosper.

Research in programming languages and software engineering at Microsoft enables the efficient development, verification and optimization of computer programs and systems. Logical and empirical foundations help to streamline software development, analysis and maintenance, which are increasingly focused on ensuring the availability and integrity of software running in the cloud.

Today’s cloud represents both a real-world lab and proving ground for pioneering research in programming languages and software engineering and an opportunity to impact the rapid evolution of technology that connects billions of people around the world to the infrastructure they use to do more.

Tools, techniques and languages developed by researchers across Microsoft are shared with the global computing community to foster the production of secure, reliable and robust computer programs and systems. This outreach extends to educational platforms and programs to advance the field of programming languages and software engineering.

Focus areas


Formal methods

Designing mathematical models to guide the development of dependable and reliable computer software and systems.

Programming productivity

Creating programming languages and methods that ensure code correctness, improve developer efficiency and automate coding tasks.

Program analysis and verification

Developing tools and methods to analyze programs for potential runtime errors, suggest fixes to identified problems and verify the code will execute correctly.

Software security

Building tools and languages to root out potential security vulnerabilities in software before it ships, maintain vigilance against attacks during use and expedite patches.

Cloud computing

Developing languages, methods and models that simplify programming and optimize performance for the flexibility, scale and distributed nature of the cloud environment.

Programming for everyone

Empowering non-programmers to leverage the power of computers by automatically synthesizing code and by introducing them to key computational principles including programming skills.