The Software Engineering (SE) research in EECS targets key problems in effectively constructing and evolving modern complex software systems. This area is focused on understanding how developers create software and on developing new ways to enhance the development productivity and the quality of the resulting software product.
- Human factors in SE:
To understand how human factors impact the cost and quality of the software they develop, we employ methods and technologies from cognitive science and educational psychology.
- Developers’ productivity:
Leveraging techniques from Natural Language Processing (NLP) and Machine Learning (ML), we build techniques and tools to help developers in their daily tasks.
- Program analysis techniques:
Static, dynamic, and data-driven program analysis algorithms that provide practical scalability and cost-effectiveness so as to fundamentally empower quality assurance applications for industry-scale software systems.
- Software and system security:
Techniques and tools for defending against real-world security risks and threats in key software domains such as mobile applications and distributed systems.