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, Assistant Professor: Parallel Computing; Parallel Programming Models; Validation & Verification; Deep Learning; Accelerator Programming; Compiler and Runtime.
- James Clause, Associate Professor, Software Engineering.
- Lena Mashayekhy Associate Professor: Edge Computing; Edge Intelligence; Internet of Things; Cloud Computing; Cyber-Physical Systems; and Game Theory.
- Lori Pollock, Alumni Distinguished Professor: 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 validation and verification in HPC.
- Guangmo (Amo) Tong, Assistant Professor, Algorithms, Data 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
2020 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 towards effective and efficient decision makings in various systems, such as computational social networks, real-time embedded systems, and autonomous systems.
Computational Research and Programming Lab
221 Smith Hall, Professor Sunita Chandrasekaran.
The Computational Research and Programming Lab (CRPL) focuses on exploring programming models and its language features to parallelize real-world scientific applications on large scale computing processors consisting of hundreds to thousands of CPUs and accelerators such as GPUs or Intel Graphic cards even specialized processors such as DSPs, FPGAs. Applications of interest include nuclear physics, plasma physics, biophysics, bioinformatics, and solar physics. We explore compiler and runtime techniques to optimize data movement for High Performance Computing (HPC). We also explore machine learning and deep learning techniques to build predictive models for medical outcomes based on genomic and EHR data. We also develop validation and verification suites to check for validation and corrections of programming models’ implementations in compilers.
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
101 Smith Hall, Professor Ilya Safro
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 complex software systems. Currently, the VSL is focusing on parallel programs used for scientific computation 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.