What to study in Computer Science? no comments
After looking for a reasonable definition of Computer Science and whether it can be considered a discipline last week, I wanted to focus on the different approaches to study the field this week. Initially I tried to do this with the help of an introductory book to Computer Science: Computer Science. An overview by Brookshear. I found that Brookshear explains more the different aspects of computers that can be studied. Therefore, I also looked at two other texts. Still, approaches in Computer Science do not seem as commonly separated as in Psychology. However, in the end of this post I will look at some approaches.
Brookshear starts in his book with explaining that algorithms are the most fundamental aspect of Computer Science. He defines an algorithm as “a set of steps that defines how a task is performed.” Algorithms are represented in a program. Creating these programs, is called programming (Brookshear, 2007: p. 18). Brookshear explains later in his book that “programs for modern computers consist of sequences of instructions that are encoded as numeric digits (Brookshear, 2007: p. 268).
Fundamental knowledge to understanding problems in Computer Science is to see how data is stored in computers. Computers store data as 0s and 1s, which are called bits. The first represents false, while the latter represents true. According to Brookshear, this true/false values are named Boolean operations (Brookshear, 2007: p. 36). Computers do not just store data, they also manipulate it. The circuitry in the computer that does this, is called the central processing unit (Brookshear, 2007: p. 96). Next to manipulating, data can also be transferred from machine to machine. If computers are connected in that manner, networks, this can happen (Brookshear, 2007: p. 164). The Internet is a famous example of an enormous global network of interconnected computers.
Computer Science has several subfields that are seen as separate studies. An example of this is software engineering. Brookshear claims that it “is the branch of computer science that seeks principles to guide development of large, complex software systems”(Brookshear, 2007: p. 328). Another example is Artificial Intelligence (AI). Brookshear explains that the field of AI tries to build autonomous machines that can execute complex tasks, without the intervention of a human being. These machines therefore have to “perceive and reason” (Brookshear, 2007: p. 452).
Tedre gives a couple of examples of other subfields in Computer Science, but does not say that those subfields are the only or even most important ones. He sums up complexity theory, usability, the psychology of programming, management information systems, virtual reality and architectural design. Tedre argues that there should be an overarching set of rules for research in these fields. However, later he also argues that computer scientists often need to use approaches and methods from different fields, because this is the only way in which they can deal with the amount of topics in Computer Science (Tedre, 2007: p. 107, 108). Computer scientists thus seem to deal with the difficult task of incorporating many different fields, but at the same time they need to learn how to use a similar set of rules to study these fields.
Denning et al. define the most clear set of subfields in Computer Science: algorithms and data structures, programming languages, architecture, numerical and symbolic computation, operating systems, software methodology and engineering, databases and information retrieval, artificial intelligence and robotics, and finally human-computer communication. They justify their selection, because every one of those subfields has “an underlying unity of subject matter, a substantial theoretical component, significant abstractions, and substantial design and implementation issues” (Denning et al., 1989: p. 16, 17).
Tedre argues, based upon the research of Denning et al., that there have been three ‘lucid’ traditions in Computer Science: the theoretical tradition, empirical tradition and engineering tradition. He argues that because of the adoption of these different traditions, the discipline of Computer Science might have ontological, epistemological and methodological confusion (Tedre, 2007: p. 107).
I can conclusively argue that it is not easy to present a concise image of Computer Science. After having difficulties last week in finding one proper definition for Computer Science, this week I had problems in finding comprehensive ways in which Computer Science is studied. Next time, I will look at how Psychology and Computer Science can be used to study online surveillance. Later, I will also look how the two disciplines overlap.
Sources
Brookshear, J. Glenn. Computer Science. An Overview. Ninth Edition. Harlow: Pearson Education Limited, 2007.
Denning, P. et al. “Computing as a discipline”. Communications of the ACM 32(1), 1989: p. 9-23.
Tedre, Matti. “Know Your Discipline: Teaching the Philosophy of Computer Science”. Journal of Information Technology Education 6(1), 2007: p. 105-122.