Skip to content
  • Print

What is Computer Science?

Computer science is the study of computation. Computer scientists look for answers to questions such as:

  • What can (and can't) be computed?
  • How can we devise general, reusable solutions to common classes of problems?
  • How can we describe computations in a manner that can be understood by both computers and humans?
  • How can we make computers more user-friendly?

Computational Thinking: More than anything, studying computer science is about developing a way of thinking, an approach to solving problems.

Software and Hardware: Typically, computer science is more focused on software than hardware. Our friends in computer engineering design and build the hardware. Computer scientists focus on what computers can do and how to create applications that make them do it.

Programming: Most people assume that computer science is all about programming ... writing code to tell a computer what to do. While all computer scientists need some understanding of programming, this is really just a skill or tool that enables us to express the result of our work in a manner that a computer can understand.

Mathematics: The early years of computing research were dominated by mathematicians. This was natural and necessary since the first step in beginning to build and use computers required mathematical techniques for expressing processes and data in the binary language understood by computers. Unfortunately, this has resulted in a perception that computer science is a highly mathematical field. While some of the theoretical subfields of computer science remain highly mathematical, many other aspects of computer science do not require excessive mathematics.

Science and Engineering: As many of the fundamental questions about computing have been answered, the focus has shifted from "How can we do this thing that no one has ever done before?" to "How can we reuse and improve on what has already been done?" and "How can we define processes for developing software systems efficiently and reliably?". This is reflected in a shift from a scientific approach to an engineering approach.

People and Processes: As computers have become faster, with large capacities, software systems have become larger and more complex. This is great, since it allows for greater functionality and more user-friendly interfaces. However, larger systems require more labor and larger teams of people to develop them. The consequence is that the skill set required to be a successful computing professional is increasingly built on "soft-skills" such as communication, management and teamwork. Working in larger teams also requires shared knowledge of common processes and methodologies for developing software.

Computing Domains, Looking Outward: One thing that makes computing particularly interesting is that it reaches into virtually all aspects of society and our personal lives. Specialized domains for software applications are everywhere: finance, health care, entertainment, government, science, education ... virtually every possible domain has some need for specialized computing. The consequence is that most computing professionals actually need to understand two fields: computer science and the application area. Often, this second area of specialization comes through practice on the job, but aspiring computer scientists often select elective courses or minor programs aimed at particular application domains.