The motivation for this post stems from several personal experiences. Specifically, I’ve often been asked by friends and family for help with computer repairs, software installation, virus removal and shopping advice for gadgets. Admittedly, I’ve often failed miserably at menial repairs and virus removals, and the ensuing taunts have prompted me to question my knowledge of technology.
However, deeper thought reveals a disconnect between the general belief of what computer scientists/engineers are expected to know about technology, and what is actually taught in CS programs. There are several reasons for this disconnect, but that makes a good topic for another blog post. Back to the topic at hand. There seems to be a disconnect among what the general public thinks computer scientists are capable of, and what they actually are capable of, and that is hurting young people venturing into this unchartered territory, who do not know what to expect in an academic CS program. The actual purpose of computer science is a very deep topic, one that I’ve recently been thinking of a lot.
One may argue that science deals with naturally occurring phenomena, and since computers are man-made, “studying” computers is not really a science. Engineering, sure, but not science. This line of thinking is naïve, and instantly disqualifies social science (e.g., history, economics and psychology) from being a science too (because, arguably, it does not study naturally occurring phenomena in the way that, say, physics does). In what follows, I discuss three key fields in which Computer Science can be classified, based on insights gleaned from a course that I took in grad school (instructed by the incredibly knowledgeable Dr. Mark Wineberg).
CS as Engineering:
This is probably what most people think Computer Science is, due to the extent to which its applications have invaded (is invaded the right word? That makes for another blog post!) our daily lives. The image of CS among the general public has been reduced to programming. However, every software application in existence is based on solid research in CS as well as other fields of science. The continual progress on building today’s cutting-edge CPUs relies on advances in physics, electrical engineering, VLSI design and parallel computation. Recommendation systems for movies, shopping and otherwise are based on artificial intelligence, statistics and distributed systems research. The revolutionary new VR technology is based on advances in computer vision and image processing, among others. Thus, while technological applications surround us, they are only enabled by aggressively growing research in CS. In Canada, several universities include CS under their Faculty of Engineering, including the University of Ottawa, McMaster University and York University.
CS as Mathematics:
Several subfields of CS study the mathematical principles underlying all of CS theory. In these subfields, computer science is as formal as it can get. Topics include studying mathematical tractability of algorithms, computational complexity, data structures, information theory and learning theory. Research in these fields may not have an application in the immediate or even distant future. Fun fact - performing theoretical CS research does not even require access to a computer (except to write papers using of course)! In Canada, universities that include CS under their Faculty of Mathematics include the University of Waterloo and Mount Allison University.
CS as Science:
Unlike pure math, which attempts to model the observed universe and everything in it, and theoretical computer science, which focuses on mathematical principles of computing, empirical computer science studies algorithmic processes. Such algorithms are typically not mathematically tractable, making it necessary to study their behavior empirically. In such cases, the behavior can only be observed while the system runs. The goal of such research is not necessarily to facilitate practical applications; thus, it cannot be classified as engineering. Research in computer science follows the quintessential scientific method - a rigorous problem definition, precise and meticulous recording of observations, formulation of hypotheses to test observed phenomena, verification or falsification of formulated hypotheses, and finally the development of a generalized, mathematically formulated theory to explain observed phenomena. Canadian universities that include CS under their Faculty of Science include the University of Guelph and Queen’s University.
In conclusion, it is a major misconception that computer science is the study of computers. A computer is to computer science as a telescope is to astronomy; it is merely a tool used to facilitate a study. In computer science, we study information acquisition, representation, storage, processing, retrieval and communication. With this in mind, computer science can be loosely defined as the study of information processes. Since information processes occur in all fields of science, computer science in turn facilitates aggressive progress in these fields. Therefore, like all other sciences, computer science is not only a rigorous science in itself, but also a facilitator of other sciences.
Note: This post is a work in progress, and I will modify and/or refine it over time.