We develop new approaches to programming, whether that takes the form of programming languages, tools (like compilers), or methodologies (like ways to collect requirements or formulate designs). Advances in these ingredients can improve many aspects of applications and systems infrastructure.
New programming languages can improve developer productivity and allow new categories of users to tackle complex programming challenges. Improved compilers can boost program performance through automatic program analysis and transformation. Formal methods can build confidence in system correctness through logical arguments about complex code bases (whether through automated reductions to harness SMT solvers or through more manual construction of proofs of deeper properties using computer proof assistants like Coq).
Programming tools are relevant to most parts of computer science, and this area is therefore rich in collaborations with others, including the two-way interplay between machine learning and programming. Another popular thread is applying formal methods to classes of hardware and software systems whose correctness and security matter most: computer processors, operating systems, databases, and cryptographic libraries.
Founded in 2019, The EECS Alliance program connects industry leading companies with EECS students for internships, post graduate employment, networking, and collaborations. In 2023, it has grown to include over 30 organizations that have either joined the Alliance or participate in its flagship program, 6A.
This ongoing listing of awards and recognitions won by our faculty is added to all year, beginning in September.
Undergraduate engineering and computer science programs are No. 1; undergraduate business program is No. 2.
The co-founder and director of CICS, which later became LIDS, blended intellectual rigor with curiosity.
The department is proud to announce multiple promotions this year.