Computer Science is the academic discipline concerned with computing. The intellectual processes of the discipline combinetheory, abstraction, and design. Problems are solved in a distinctive manner, with an overall goal of identifying and applying recurring conceptual principles. Although these intellectual processes derive from other disciplines, a computer scientist’s perspective offers a unique and important voice in a community of learning such as a liberal-arts college.
The Computing Curricula 1991 recommendations, a joint effort of the two major computing professional societies, characterize the discipline of Computer Science in terms of the three intellectual processes cited above, a collection of subject areas, and a list of recurring concepts. Subsequent curriculum documents, particularly A Revised Model Curriculum for a Liberal Arts Major in Computer Science and Computing Curricula 2001 (both of which inform St. Olaf’s CS curriculum), have affirmed this characterization, while adapting the subject areas to recognize ongoing changes in Computer Science’s body of knowledge. To express the nature of Computer Science, we examine some of its main traits:
- Computer Science draws the “process of theory” from the field of Mathematics. The approach of making formal definitions, conjecturing theorems, and creating proofs occurs at all levels in verifying correctness of hardware and software, analyzing performance of particular designs, and establishing the theoretical limitations of computation.
- The “process of abstraction” involves recognizing patterns in comparable situations and distilling models that express common characteristics, while discarding attributes that differ from case to case. While many fields employ abstraction, Computer Science’s particular focus on the abstraction process resembles that of the natural sciences, where theories are postulated from experimental observations.
- The “process of design” in Computer Science, while rooted in engineering, is deeply interrelated with the processes of theory and abstraction. In Computer Science, one designs to understand the principles and possibilities of computing; designs of systems and programs employ theoretical results and apply abstract notions, frameworks, and methods. In Computer Science, design aims more for better comprehension of the nature of computing than for production of a particular product.
- The subject areas of Computer Science have expanded throughout the discipline’s history. For example, network-centered computing, graphics and visual computing, and social and professional issues have emerged as distinct subject areas in national curricular recommendations over the past ten years. Among the long-term standard topics in Computer Science are algorithms and complexity, characteristics of programming languages, intelligent systems (artificial intelligence), and human-computer interaction.
- A number of broadly applicable concepts become apparent as a computer scientist explores the nature of computing. For example, an evolutionary approach to development that recognizes the reality of change and its implications offers considerable advantages in many computing situations, such as the creation of abstract models, the production of software, and the exploration of new technologies such as “the Web.” The Computing Curriculum 1991 document proposed twelve such “recurring notions,” principles of Computer Science that transcend particular computer systems and technologies. Although few are unique to Computer Science, collectively they help characterize the discipline. See the page on principles of CS for a list of these recurring notions.