Computing Foundations
The Computing Foundations cluster investigates the theory, tools, and practices that enable all areas of computing. Topics include the theory of computation, logic, algorithms, architecture, programming languages, software engineering, and parallel and high-performance computing.
Current Faculty
- Sunita Chandrasekaran, Associate Professor: parallel computing; parallel programming models; validation & verification; deep learning; accelerator programming; compiler and runtime.
- James Clause, Associate Professor: software engineering: software testing and analysis; documentation; energy efficiency.
- Lena Mashayekhy, Associate Professor: edge computing; edge intelligence; internet of things; cloud computing; cyber-physical systems; game theory.
- Lori Pollock, Alumni Distinguished Professor of Computer and Information Sciences Emerita: automatic analysis and mining of software artifacts (codes, question and answer forums, chats, …) to use in building tools to improve software engineers’ efficiency and effectiveness; automation in software testing.
- Ilya Safro, Associate Professor: algorithms; quantum computing; artificial intelligence; machine learning; combinatorial scientific computing; network science and graph mining; large-scale optimization; multiscale methods.
- Stephen Siegel, Associate Professor: software verification, concurrency theory and practice, model checking, symbolic execution for program testing and analysis, all with applications to high performance and scientific computing.
- Guangmo (Amo) Tong, Associate Professor: statistical learning, combinatorial optimization, computational social science.
Courses
- CISC 601 Elements of Theory of Computation
- CISC 604 Logic in Computer Science
- CISC 614 Formal Methods in Software Engineering
- CISC 615 Software Testing and Maintenance
- CISC 621 Algorithm Design and Analysis
- CISC 672 Compiler Construction
- CISC 675 Software Engineering Principles and Practices
- CISC 689 Introduction to Network Science
- CISC 801 Advanced Computability Theory
- CISC 805 Computational Learning Theory
Computing Foundations Labs
Computational Data Science Lab
220 Smith Hall, Professor Guangmo Tong.
We are the Computational Data Science lab at the University of Delaware. We are working on developing algorithmic and machine-learning solutions for effective and efficient decision-making in various systems, such as computational social networks, real-time embedded systems, and autonomous systems.
Computational Research and Programming Lab (CRPL)
417 FinTech Innovation Hub | 591 Collaboration Way, Professor Sunita Chandrasekaran.
The Computational Research and Programming Lab (CRPL) explores the different aspects of high performance computing (HPC) including parallel programming models – its design and implementation of features in the compiler/runtime environment such as LLVM/MLIR, leveraging exascale computing for large scientific applications and advancing predictability of real-world scientific problems using ML and AI. We also develop validation and verification test suites for directives such as OpenMP and OpenACC programming models and have been exploring the usability for LLMs (Large Language Models) to automate some parts of the testsuite generation process. We are very grateful to our funding organizations that include NSF, DOE, NCAR, Nemours Children Health, OpenACC CASUS (Center for Advanced Systems Understanding in Germany) and the Frederick National Lab of Cancer Research/National Cancer Institute.
Program Analysis and Debugging Laboratory
429 Smith Hall, Professor James (Jim) Clause.
This research group focuses on developing tools and techniques to improve software quality by simplifying the detection and debugging of software faults. Current projects include investigating how dynamic tainting can be used to help guide developers in fixing common programming mistakes such as memory leaks and other types of failures. The group is also investigating how information can be safely and efficiently collected from software users and how such information can be used to improve the software development process.
Safro Research Group
221 Smith Hall, Professor Ilya Safro.
Safro’s research group is advancing algorithms and computational science across several key areas. They are exploring the potential of quantum computing, focusing on the development of quantum algorithms and their integration with classical computing systems, which could dramatically impact fields ranging from medicine to finance. In machine learning and data mining, the group addresses large-scale problems that involve algorithms, aiming to optimize processes that handle vast numbers of variables and complex optimization issues. Their work in AI, literature-based discovery, and text mining focuses on scientific hypothesis generation and uncovering hidden relationships within large datasets to accelerate research in biomedicine and healthcare. Additionally, the team focuses on network science and graph algorithms, working to analyze and interpret complex networks in various disciplines, enhancing methods for pattern recognition, community detection, and network evolution. Their research in combinatorial scientific computing targets discrete optimization to boost the efficiency of scientific computing. They also develop multiscale and multigrid-inspired approaches to tackle large-scale problems that traditional methods cannot manage due to the number of variables involved.
Software Analysis and Compilation Laboratory
213 Smith Hall, Professor Lori Pollock.
Our research focuses on software artifact analysis to automate and semi-automate tedious and error-prone tasks typically performed by software engineers, testers, and scientists. Current research projects include applying natural language processing and machine learning techniques to perform textual analysis of software artifacts and using that information for automatically generating documentation from source code, improving code search, and improving other software maintenance tools. We mine and analyze the code itself, question and answer forums, and chat forums where software developers communicate regularly to share and learn knowledge.
Verified Software Laboratory
421 Smith Hall, Professor Stephen Siegel.
The VSL conducts research into one of the most important problems in software engineering: how to develop verifiably correct software systems. Currently, the VSL is focusing on parallel programs used for scientific and high-performance computing and is developing tools that can find defects in these programs or establish their correctness. These tools are based on techniques from logic, compiler theory, symbolic computation, and model checking. The open-source CIVL Model Checker is our flagship product.