Book - 1.1) Introduction - Welcome

Welcome

Welcome to the general education course at Virginia Tech on computational thinking. This course grew out of the university’s asking and answering certain questions about what it takes to be prepared for living and thriving in an increasingly technological society. These questions and their answers are the starting point for the course.

Why Know About Computation?

Computing and its artifacts are everywhere and its influence touches everything. The easily recognized form factors of computing—desktop machines, laptops, tablets, smart phones—are commonplace. These forms of computation enable our communications, play our music, entertain us, provide directions, give us the news, stitch together the fabric of our social networks, and offer us things to buy, watch, learn, and read. In the periphery of our awareness are computers that control the operation of our cars and planes, regulate the power grid, monitor the appliances in our homes, control the robots that build things, and guide the weapons of military forces. It is difficult to imagine how many times each day we come in direct or indirect contact with computing. The envisioned “internet of things” allows even relatively mundane things to be connected to the Internet and to interact with all other things. This development is a forecast of the continued pervasive and universal presence of computation in our daily life.

Computation has altered the fundamental ways by which humankind explores the universe through scientific discovery and reshapes its world through engineered creations. Traditional forms of inquiry rest on experimentation (laboratory experiments and working with prototypes) and well-established paradigms of theory, often expressed in mathematics. For centuries, these paradigms have been the driving forces behind the growth in knowledge and progress from the Renaissance to the atomic age. Experimentation and theory are often called the “two pillars” of science and engineering supporting the ediface of research and development. Computing is now recognized as the “third pillar” - along with theory and experimentation - of science and engineering. Computational science and engineering enable discovery and innovation not possible in their absence. From the study of the human genome to the identification of planets orbiting other suns, computation is indispensable.

The rise of the “digital humanities” is a reflection of the intertwining of computation into the ways by which we understand and express humanity’s role in the world. Beyond simply providing better tools for doing the same work, computation has extended the modes of possible inquiry and expression. As biologists have used computing to move from studying one gene to studying an entire genome, so computing has enabled scholars to moved from only the “close reading” of one text to the “far reading” of all of an author’s texts or all of the texts of a period or genre. Computation provides the visual and performing artists with a new “canvas” and new “orchestras” to explore new forms of creative expression. Furthermore, computation can itself be “problematized” so that humanists can take computationally constructed processes and objects as subjects of study. For example, sociologists study online social networks as they have similarly studied human populations in “real” environments.

The widespread infusion of computation into virtually all facets of human activity has implications for the citizens and professionals of tomorrow. In order to be informed citizens and productive practitioners in professional occupations, we must possess the capabilities to think through our world critically and analytically, systematically and efficiently.

In short, we need to know something about computation because it is everywhere.

What is Computational Thinking?

The phrase “computational thinking” has come to describe a mode of thought that a report by the National Research Council says:

“... includes a broad range of mental tools and concepts from computer science that help people solve problems, design systems, understand human behavior, and engage computers to assist in automating a wide range of intellectual processes.”

More concretely, Jeannette Wing, Professor of Computer Science at Carnegie-Mellon University, writes that:

“Computational thinking is the thought processes involved in formulating problems and their solutions so that the solutions are represented in a form that can be effectively carried out by an information-processing agent.”

These definitions are made concrete in this course through two key concepts that will, for us, define computational thinking:

  • abstraction: using information to represent the relevant properties of a model of the real world, and
  • algorithms: manipulating the information in the model according to a precise set of rules.

Abstraction gives us the ability to cope with the complexity of real-world entities by focusing on their relevant properties. This allows us to construct models more simply, design solutions more effectively, and answer questions more easily. Algorithms give us the ability to create a process for a computer to follow. This way, the computer can manipulate the information we have defined in our model. The results (outputs and visualizations) help us to answer our questions. These ideas of abstraction and algorithms weave together, allowing us to see the world through a computational lens and understand something of how our automated devices function.

What is the Benefit?

Armed with the capacity to think computationally, we are better able to comprehend the world around us and participate actively in shaping that world. The National Research Council identifies a number of specific benefits to individuals and society that flow from a broadly shared sense of computational thinking. Among these are:

  • Succeeding in a technological society because we have a better understanding of the forces affecting our society.
  • Maintaining and enhancing U.S economic competitiveness because we can better deploy the power of computation in creating products and services of value.
  • Supporting inquiry in many disciplines because of the infusion of computation into virtually all fields of study.
  • Enabling personal empowerment because we add to our toolkit of problem-solving skills those that deal with managing complexity and structuring effective processes.

Naturally, this course cannot completely provide all of these benefits fully to everyone. But this course can create a solid and necessary foundation for further work and study.

What are the Learning Objectives?

This course is designed to achieve four learning objectives. They are to:

  1. Explain the application of computational thinking across multiple knowledge domains.
  2. Apply the foundational principles of computational thinking to frame a question and devise a solution in a particular field of study.
  3. Analyze a model based on computational methods to investigate complex or large-scale phenomenon.
  4. Identify the impacts of computing and information technology on humanity.

The first objective is to learn that computation has an impact in many (perhaps all) fields of study. In some fields, computation is a critical paradigm, while in other fields, computation is a valued instrument for exploration, as in the digital humanities, or creative expression, as in generative art.

The second objective is to learn how to use the techniques of computational thinking to answers questions in some field of study. This course is structured so that the field of study is relevant to each student’s major or interests. The course’s goal is to help each student see the relevance of computation to their career or interests.

The third objective is to learn how to apply the pragmatic tools of computation to deal with large-scale problems. The unique capability of computers is that they are designed to process large amounts of data quickly. This capability is at the heart of many efforts to use “big data” to help in gaining answers to real-world problems.

The fourth objective is to learn that computation generates a form of “professional power” which, whenever it is employed, has impact on real people. Through several case studies we will see examples of the nature of this professional power, encounter the real people who are affected, and explore several ethical frameworks that provide guidance on how to consider what ethical behavior means in such situations.

Your feedback throughout the class will help us determine how well we are meeting these objectives.

Why is Learning Computational Thinking Challenging?

The answer to this question stems from the three key words in the questions itself. Namely:

  • learning: for most people any kind of learning involves some effort to become acquainted with new thoughts and information. Adding to our knowledge structure is a challenge that requires some perseverance.
  • computation: as you will learn in the course, there is a major difference between the way people process information and the way computers process information. We are used to ways in which we explain to other people how to do something; we rely on the fact that we, the instructor, and the person we are instructing process information the same way. However, when a person is instructing a computer, the differences in how the person and the computer process information present a challenge to the person: how to say the instruction so that a computer will get it right.
  • thinking: computational thinking is a mode of thought that may be unlike other modes of thought that you already do well. This difference means that we have to develop new cognitive abilities. This is a challenging aspect of the course, but also a rewarding one because the more and varied modes of thought we have, the better we are at being creative and innovative.

The class is designed to help you meet these challenges and be successful.