School of Engineering and Computer Science
What is Computer Science?
Computer Science is a discipline that explores how to use computers to solve real world problems. Computer scientists create algorithms and write computer programs that help other people do their work more efficiently, understand scientific phenomenon, and make new discoveries that were not possible before the computer age. Chances are, whenever you use an electronic device, a computer scientist wrote the program that controls its behavior.
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?
The famous computer scientist Edsger Dijkstra
said:
"Computer science is no more about computers than astronomy is about telescopes."
This seems like a curious statement, since you might expect that computer science is the study of computers. Dijkstra's point is that computer science is really the study of computation, and that computers are simply the best available tool for expressing and implementing computations.
Computational Thinking: More than anything, studing computer science is about developing a way of thinking, an approach to solving problems. Jeanette Wing at Carnegie Mellon has written an excellent article on this subject that you can read here
.
Sofware 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 efficienty 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 successfull 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.
Subdisciplines, Looking Inward: Computer science is an increasingly broad field, with an expanding set of subdisciplines. Computing professionals generally specialize in one or more of thes subdisciplines. The Wikipedia article
on computer science gives an extensive list of specializations within the field of computer science.
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.
For more information on computing careers, you might start with "Computing Degrees and Careers"
from the Association for Computing Machinery.

