I recently read an article called “Computer. Science. Paradox?” by Ben Rockwood which pointed me to a phenomenal project called “Great Principles of Computing.” The project’s founding principle is that Computing, not Computers are the center of our study and that the Science of Computing is, indeed, a natural science. This project touches on so many issues in the teaching of Computer Science and how we index our knowledge. It also provides solutions to so many frustrations I felt while working my way through the undergraduate Computer Science curriculum at the University of Akron.
In Ben’s post, he expressed his uneasiness with relating the words computer and science in one field and I now understand why. I had never really thought of the problem from that angle, but I was always disgruntled with the fact that most of my scientific knowledge came from my Anthropology curriculum, and almost nothing from Computer Science. Currently, Computer Science is not taught with a Jewels First approach, but I hope this will change with a different mind set of what it is.
The first thing which came to mind is how this relates to my education, my job and also to the recent cultural phenomenon called DevOps. I have concluded that this is because the field in which I work, large operations and deployments, are becoming more common and these deployments require a huge breadth of knowledge. This knowledge spans both practice and principle in the roles of the technician, engineer, and scientist. Those of us who participate in these functions welcome the chance to use such knowledge and welcome the challenge to grow. Though, my Computer Science education has helped, it did not get me here on a path free from frustration.
Science, Technology, Engineering
The following two quotes offer an excellent summary of my complaint with the teaching of Computer Science in it’s current state.
In the 1989 ACM report, Computing as a Discipline, we noted that the three processes of theory, abstraction, and design are intricately interwoven into computing. These three processes are inheritances respectively from mathematics, science, and engineering. Although people are less concerned today about these historical roots, the roots are real. It is not our intention to emphasize any one of the three over the other two.
In most current curricula, little distinction is made between a fundamental principle and a practice; students don’t appreciate the difference. Many people think that practices are the applications of principles, and therefore a grounding in principles is necessary for effective practice. In reality, there are competent practitioners who cannot say what principles they use, and there are competent intellectuals who can’t build software well. Most of our curricula do not offer a good balance of principles and practice.
In summary, you are left to understand the aspects of the field that are technology, science, and engineering on your own. Second, you are taught the practice and principle in a convoluted mix which is never quite clear until some years after graduation.
Relation To DevOps
In 1608 Galileo constructed his first telescope. At first, he tried to use commodity lenses. When he realized that he could not get lenses which would produce a telescope with better than a 3X magnification, he set about learning to grind his own lenses. This is the case in many technical fields, but it is especially true in large modern web operations and development teams, such as Google, Facebook, Yahoo, and Twitter. They are blazing trails and building their own tools like Galileo. I think these folks are hungry to use their skills as scientists, technologists, and engineers. These are the people that have learned the right balance of each to get their job done and they have a passion for computing. I think if Computer Science was taught differently a lot more people would be this passionate about computing.
Computer Science did give me a background that couldn’t have been easily obtained any other way, but many programs don’t come close to giving you a solid foundation in science if you want to work in the field right out of school. The thesis of the Great Principles of Computing project is to realize that the science of computing is what we do, computers are what we use to do it. I hope this takes off in the academic world.