- About Us
- Quick Links
Faculty and students in the Computer Science Department are engaged in a wide range of research topics. This page is just an overview of the research being done in the department; please visit the web pages for individual research groups for more detailed information.
The goal of theoretical computer science is to understand the underlying principles of information processing, principles that are invariant with respect to technological change.
The ever-increasing demand for faster, more powerful computer systems requires the coordinated development of many interdependent technologies. Modern computer systems, with their parallel and distributed components, cannot be designed or used effectively without full consideration of hardware, software, and their combination. Research at UCSC is addressing issues of fundamental significance to the development of future computer systems.
Machine learning (ML) and Artificial intelligence (AI) address the challenging task of developing systems whose behavior may be learned by machines and termed intelligent. AI techniques have been applied to problem domains including natural language processing, robotics, expert systems, automatic programming, combinatorial problem solving, perceptual problems, computer vision, image processing, and geo-spatial visualization. Despite the diverse nature of these domains, they all benefit from AI methodologies developed for knowledge representation, efficient search, deduction, and learning.
Research in this area is concerned with the design and analysis of programming languages. This research includes investigations of core topics, such as type systems, and also deals with applications in software engineering and security. It combines theory (often based on methods from logic) and experimental work (often overlapping with software engineering).
Our research focuses on developing tools and techniques for improving the reliability and evolution of large software systems. Specific areas of interest include software defect detection (especially concurrency analyses), software bug prediction, software evolution, programming languages, computer security, type systems, pair programming, and automatic construction of software systems.