PROGRAMMING LANGUAGES & SOFTWARE ENGINEERING

Software consists of programs written in programming languages.​

The flexibility and power of software enables billions of people around the world to connect, collaborate, and solve problems.​

However, as one of the most complex artifacts designed by humans, it is theoretically challenging and practically difficult to correctly program software.​

We study all aspects of the software development process, with the aim to improve the performance and reliability of these programs.

WHAT WE DO

Image

Study the foundational and theoretical aspects of programming languages and software engineering, exploring ways to improve program writing, as well as demonstrating the ‘correctness’ of programs.

Image

Explore practical and implemental aspects of programming languages, software engineering, and software education, developing tools and systems to improve software quality and security.

SUB AREAS:

Compilers​

Concurrency​

Constraint & Logic Programming​

Decision Procedures​

Formal Methods​

Functional Programming

Language-Based Security​

Probabilistic Programming​

Program Analysis​

Program Logics & Semantics​

Program Repair​

Program Synthesis

Programming & Software Engineering Education​

Software Security​

Software Testing​

Types​

Verification

OUR RESEARCH PROJECTS

SuSLik

Ilya SERGEY

Synthesis of Heap-Manipulating Programs from Separation Logic specifications

  • Program Logics & Semantics, Program Synthesis

Scilla

Ilya SERGEY

A functional language for safe smart contracts

  • TRL 9
  • Functional Programming, Language-Based Security, Types

Hippodrome

Ilya SERGEY

Static automated concurrency repair at scale

  • TRL 7
  • Program Analysis, Program Repair

Fuzzing and Symbolic Execution

Abhik ROYCHOUDHURY

  • TRL 4
  • Software Testing

Automated Program Repair

Abhik ROYCHOUDHURY

  • TRL 4
  • Program Repair

OUR RESEARCH GROUPS

STeAdS Virtual Group

Ganesh NEELAKANTA IYER

Software Engineering and Technological Advancements for Society. A virtual group that uses Software engineering practices (Agile, DevOps and Project Mgmt) and Technological advancements (Cloud computing, Artificial Intelligence (EdgeAI, Game Theory, ML/DL/RL)) for the benefit of various aspects of society (healthcare, education, art & culture). Looking for students to build a website for STeAdS.

  • Programming & Software Engineering Education, Types

Verified Systems Engineering

Ilya SERGEY, Mirela Andreea COSTEA

We do research in the design and implementation of programming languages (PL), mathematical models of computation, and computer-assisted formal reasoning. We investigate the theoretical foundations of programming and build tools for ensuring that certain kinds of costly software errors and vulnerabilities never occur in the real-world code, which many people rely upon in their everyday lives.

  • Compilers, Concurrency, Formal Methods, Functional Programming, Program Analysis, Program Logics & Semantics, Program Repair, Program Synthesis, Types, Verification

Trustworthy Software Systems

Abhik ROYCHOUDHURY

Past and present research team members in this group appear here: https://www.comp.nus.edu.sg/~abhik/students.htm

  • Program Repair, Program Synthesis, Software Testing