The goal of an academic research effort in any field is to establish outer boundaries. Commercial efforts demonstrate what is profitable; academic efforts show what is possible. In physics, mathematics and the other large, long-established areas, most research gains lead to relatively small changes in the character and perimeter of the field. Computer science is different. It’s brand new. When a few researchers parachuted into this field in the 1940’s, they had no territory to extend. They invented computer science from scratch, more or less. They faced basic questions in science, algorithms, design, and philosophy; and by answering them, they established the intellectual basis of the field. What does “computable” mean? How do we classify computations, distinguish practical from impractical from impossible? How should programming languages be designed, and what difference do they make? Is it possible in principle to build a mind out of software? And so on.
When Yale’s Department of Computer Science was founded in 1969, the fledgling field was viewed as consisting of four primary areas: Theory of Computation, Artificial Intelligence, Numerical Analysis, and Systems. Over the years, these areas have developed so quickly in both depth and breadth that each now consists of many sub-areas. Within Artificial Intelligence, areas such as machine learning, natural language processing, robotics, computer vision, neural networks, and many others have grown. Systems research now includes graphics, databases, operating systems, networking, and the entire sub-field of programming languages, which includes formal semantics, compilers, programming environments, logical frameworks, software engineering, and object-oriented, functional, and logic programming. Similarly, Theory of Computation now includes computability, complexity theory, design and analysis of algorithms, cryptography, distributed computing, discrete mathematics, mechanism design, and more. Each of these many new areas now boast their own conferences, journals, federal and international research programs, and so on.
Each of these areas also has developed into both theoretical and experimental disciplines. For example, security theory establishes the correctness and robustness of idealized cryptographic protocols, but real systems need to be built and fielded to ensure that the protocols withstand realistic attacks. Type theory and category theory help establish the foundations of programming languages, but real languages need to be designed and built to ensure that programmers can use them productively. And learning and planning theory tells us what the limits of automated intelligence are, but robots need to be built to demonstrate the viability of these results. At Yale, both theoretical research and applied research are valued highly.
Computer Science has also grown beyond its own bounds to become a multidisciplinary field that touches many other sciences as well as arts and humanities. Aside from the obvious overlaps with engineering and mathematics, there are natural connections with physics, economics, law, management, psychology, biology, medicine, music, philosophy, and linguistics. Indeed, members of the CS faculty have engaged in collaborations with each of these areas. These efforts have affected our curriculum through the establishment of cross-listed courses, interdisciplinary majors (such as Cognitive Science), special “tracks” and dual majors, and the creation of the Applied Math program.
At Yale, the focus of Computer Science research is primarily in the following areas: Artificial Intelligence, Computer Graphics, Computer Systems and Networking, Database Systems, Distributed Computing, Machine Learning, Natural Language Processing, Operating Systems, Programming Languages, Robotics, Scientific Computing and Applied Mathematics, Security and Cryptography, and Theoretical Computer Science.
Yale’s Department of Computer Science has been and will continue to be a leader in redefining the outer boundaries of the field. But computer science in general, and Yale’s Department in particular, faces many challenges. Key research areas emerge quickly, and the Department must stay flexible enough to respond to them. The undergraduate curriculum in computer science, unlike that of older sciences, can change significantly within the career of a single student. The Department’s educational mission is to stay tuned to the needs of young computer professionals. Our undergraduate program has been steadily growing for the past several years. Yale undergraduates are the best in the country, and are a deep pool of talent whom the Department can draw on for advice and collaboration. In addition to the PhD program, we also have a Master’s Degree program, which provides new educational options to students, and also to career computer scientists who have a professional need for further training.