Why Computer Science Works
Depending on your interest or background you may find it valuable to investigate the potential of getting a degree in Computer Science, but for this read I will offer why many of the principles, concepts and disciplines of computer science works and why it helps us create simplicity out of complexity.
Computer Science has and will continue to allow individuals to use information in conjunction with computing devices to combat complex problems by making them easier and easier to use. We are not merely talking about how to make the computer easier to use by creating more user-friendly devices with specialized user interfaces but rather making it easier to build solutions by individuals from both the business and IT community working in conjunction to create more innovative and dynamic ways to help the business or individuals excel.
As with many innovations and engineering accomplishments we as a civil society have been able to produce wonderments that have allowed us to live more productive and fulfilling lives. There are many things in nature that provide building blocks for continued purposes such as the leaves falling from the tress to nurture the soil for the coming spring. We have been able to create engines that are used to drive manufacturing plants to produce products. The evolution from plants to medicines to synthetics have produced the eliminations of deadly diseases and making great strides in suppressing others. Even man’s mind has an evolutionary capacity to invent itself by building upon knowledge and experience, yet there are few innovations with the potential for diversity, and extensibility as the inventions in the world of computer science.
Some might ask, “Where do computers operate in today’s society?” But a better question would be “Where don’t they exist?” Of course, an even more present and elusive question would be, “Where will they be tomorrow, next year, next decade?” We can remember the first introductions to computers and computer science. How in the world do these things work, how is it possible to store and retrieve massive amounts of information from mechanical devices, how in the world could it be possible to create a “programming language” out of bits and bytes, seemingly out of thin air. How long did it take to create the languages that humans speak – thousands of years? We have created dozens of programming languages in the last half and first decade of these centuries and no doubt others will evolve. Each language and its subsets provide the ability to perform and create solutions as services using logic that are driving our everyday existence. New user devices, stationary devices, switches, controls, inanimate objects, almost anything of substance can operate in some form of “information” usage.
Let’s start out by discussing the information, then proceed to the service, and finally end with the logic.
Information
The “information era,” for those that remember, where did it go? Nowhere, it has been shrouded in marketing hype and the ever evolving technological innovation sphere. It is not lost just hiding behind the scenes - without information there would in fact be no need for computers or computer science for it is the information that drives the world. So we ask ourselves, how do we synthesis information in order to maximize its usefulness whether we are using it via some computing device or just sitting and thinking, writing or communicating. For these answers we must look back at the lives of our early thinkers – those that taught us how to think about things through categorization in order that we provide some form of structure and ability to compartmentalize our world. Without such abilities we would have immense difficulties in thinking and communicating in ways that allow us to function efficiently and with precision. In this way we have been able to establish patterns for how we can find, delete, retrieve or update information from some form of persistent storage mechanism such as a data base, how we move it from the data base, possibly manipulate it along the way, and then finally have some application present it to a user or device for usage. In essence then, there are three basic areas where the information we use in our daily ‘computer-lives” must be “stored”, “mediated”, and “presented”. Before we discuss each area let’s take that trip back into the past to see how the categorization of things has influenced the ways in which we, today, use computing innovations to manage our information.
Looking back in history we see that scientists have been “classifying” living things for centuries and as each new thing comes into existence it gets classified. The more common term for a “classification system” is known as taxonomy. Overtime they have grown in complexity and cross many disciplines, such as biology, botany, zoology, and of course into the worlds of defense, finance, healthcare, manufacturing, and telecommunications for example. While the disciplines of nature are no doubt complicated their initial early days of classification have allowed us to extend these patterns into the worlds of economics, government, history, law, and engineering – where many folks actually categorize computer science. It is no coincidence that the term “taxonomy” comes from the Greek words “taxis”, to mean “order”, and “nonos” to mean “law” or “science”, because the early works of Aristotle. It was Aristotle who divided organisms into the well-known taxonomies of plants and animals. He had created a very systematic classification system to identify different kinds of plants and animals based upon characteristics or attributes. Plato continued in his master’s steps and it was their student Theophrastus who developed the first classification system for plants known as the Plant Kingdom.
As George Lakoff, in his book, “Women, Fire, and Dangerous Things”, states, “Categorization is not a matter to be taken lightly. There is nothing more basic then categorization to our thought, perception, action, and speech. Every time we see something as a kind of thing, for example, a tree, we are categorizing. Whenever we reason about kinds of things - chairs, nations, illnesses, emotions, any kind of thing at all – we are employing categories. Whenever we intentionally perform any kind of action, say something as mundane as writing with a pencil, hammering with a hammer, or ironing clothes, we are using categories. That particular action we perform on that occasion is a kind of motor activity (e.g. writing, hammering, and ironing), that is, it is in a particular category of motor actions.[1]” These concepts and those of the great thinkers of our early civilizations have not gone unnoticed in computer science, yet, as Lakoff observes, “Most categorization is automatic and unconscious, and if we become aware of it at all, it is only in problematic cases.[2]”, we tend to always be in a state of extreme solution dysfunctionality rather than what we would consider agile solution functionality. We can see this as computer science has evolved and our ability and inability to “store”, “mediate”, and “present” information for usage.
So let’s take a look at this. From the plant kingdom, we have a very simple example of the categorization of multi-cellular plants (Figure 1.1).
Figure 1.1 – Simple Plant Categorization
Above the line we have a number of different categories used to categorize information, and below the line we finally reach a point in the lineage where we have some atomic entity, in this case, a daisy. We have also introduced another concept known as “Metadata”, and later in this book we will discuss its immense value, but, for now, let’s define it simply as information or data that further describes information or data.
Above the line, we have something called “Dicotyledons”, it has some metadata that further describes it. It is a “category”, it is a type of category known as a “lookup” category, it is a sub-type of a “lookup” category known as “Dicotyledons”, and it has a description that is used to fully describe it. Below the line, we have something called “Daisy”, it has some metadata that further describes it. It is a “lookup”, it belongs to the “Dicotyledons” category, it has a code “DsyFlwr”, it has a value of “Daisy”, and it has a description that is used to fully describe it. Of course, the metadata that is shown here could provide more describing attributes but this is just an example for simplicity sake.
Next I will associate this with computer science and see where we have been, where we are now, and where we are going. Again, we will concentrate on a three tired approach; the storage of information, mediating the information, and presenting the information. We will not go all the way back to the days of punched cards to “program” the computer but we will go back to a point where there are still businesses and others using some dated technologies to manage their information as well as looking at newer ways in which to exploit information.
Hi Thomas. I'm at Weber State. Are you writing a book here?
Cool ... and you explained it with only two colors :-)