Lesson 1 - An Introduction

Overview

  1. Introduction to Lesson 1
  2. Computers
    Assignment: Should computer programming be required in high school?
  3. Computational Thinking
    Assignment: Computers vs. Computational Thinking
  4. Why Study Computational Thinking?
    Assignment: Which driving route is "best"?
  5. Computational Thinking at Scale

An Introduction to Computational Thinking, Lesson 1

Over the course of the next four lessons, we're going to be examining the subject of Computational Thinking.

Through a series of short readings, short videos, and exploratory activities, you'll learn a little bit about what Computational Thinking is and how it can be applied to solving problems.

Computers

A. Using Computers

We use computers to get digital things done. Sending email, surfing the Internet, streaming music, sharing updates on Facebook and Instagram. Most of us use a computer of one kind or another (smartphones are computers, too!) on a daily basis.

B. Programming Computers

Some people know how to program computers. Writing code to get the computer to do what you want it to do is a skill used by game programmers, website development teams, software engineers, and others who need to have a high degree of control over the computer and how it interacts with data.

Everybody needs to know how to use a computer. Does everybody need to know how to program a computer? Some high schools now require students to take a computer programming course as a graduation requirement, and some schools offer Foreign Language credit for learning a programming language.

1.a. Think about it

What do you think about computer programming? Should everyone know how to write a computer program? Why or why not? Give evidence to support your reasoning.

Computational Thinking

Somewhere between using computers and programming computers is the subject of computational thinking.

Definition: Computational Thinking

Computational thinking is a problem-solving process that involves critically analyzing problems and considering strategies for solving them, with special attention given to solutions that might involve using a computer.

You don't need to know how to program a computer to do computational thinking. But you do need to be able to look at a problem and observe it, notice patterns, and think critically. Analyzing a problem using computational thinking will produce a solution that can be used to solve that problem and other ones like it.

Think about it

What are the similarities and differences between computer programming and computational thinking?

Similarities: Programming and computational thinking both have to do with figuring out how to solve a problem, and using an algorithm to solve the problem, and a consideration of how computers might help to solve the problem.

Differences: Programming involves actually working on a computer, while Computational Thinking doesn't necessarily require that. Programming involves knowing a programming language that can be used with the computer, while Computational Thinking is more about the process of solving the problem.

Why Study Computational Thinking?

Let's answer that question with a series of similar questions.

Why study English?

Why should we study reading and writing in high school? I'm not going to be a writer!

It's true that many of us have a fairly decent proficiency with the English language by the time we get to high school. However grammar, vocabulary, reading, literary analysis, and writing of all kinds are skills that you will use throughout your life.

There's a reason that you're required to study English for four years in high school. It's one of the most important things that you'll ever learn!

Why study Science?

Why should I study science? I'm not going to be a scientist!

You may not become a professional scientist, but everyone needs to have a solid understanding of the fundamental principles that govern our world. You may not design electronic circuits, but when you walk into a room and turn on the lights, you need to know that you've completed an electrical connection, that the light bulb uses energy, that a circuit breaker protects your house from catching on fire if there's a short circuit, and that the energy you use is related, directly or indirectly, to global climate change.

These ideas are fundamental to you being able to engage in a conversation with other well-educated people.

So why study Computational Thinking?

Not everyone needs to program a computer... but using hardware and software is increasingly a part of most people's lives. When using computers, or engaging with others who use computers, some knowledge of computational thinking is essential for you to be able to participate in that discussion.

Computational Thinking is thought of by many people as "critical thinking with computers in mind." Problem analyses that take into account solutions that are especially efficient, or that may be suitable for adapting to computers, are often more useful than those that don't.

Example of Simple Computational Thinking

I have two different routes I can drive to get from my house to my local gas station, shown here:

Which route—the East route or the West route—is the better one to take, and why?

Solution:

The East route is shorter, but it requires me to take a series of left turns, including from my house (where I have to wait for both of lanes of traffic to clear), at each intersection (where I have to wait some more), and at the gas station as well.

The West route is a bit longer, but allows me to take right turns every step of the way. I only have to wait for one lane of traffic to clear before leaving my house, I can turn right on the red lights, and it's an easy right turn in to the gas station itself.

But the final answer may depend on other factors as well: What time of day is it? How bad is traffic? Is the sun rising or setting, making it hard for me to see when I'm driving in its direction?

We haven't gotten very deep into the idea of Computational Thinking, but something that we'll be seeing soon is the idea of an algorithm.

Definition: Algorithm

An algorithm is a series of systematic steps that can be used to solve a given category of problem.

So what advice would we give to our driver above?

Think About It: The Driving Algorithm

So what's the algorithm for the best route in going from one place to another (based on our example above)? What series of steps would we recommend?

Think about it for a moment before you click on the answer.

Solution:

One answer might be:

  • If there's not a lot of traffic, choose the route that travels the shortest distance.
  • If there IS a lot of traffic, choose the route that has the most right turns.

The average driver may not think about these things. And maybe a smart driver would think about these things, but only have to worry about it once in awhile.

But every time you use Google Maps, or Apple Maps, or Waze, or any GPS application on your phone or in your car, that program is looking at where you are, and where you want to go, and it's trying to figure out the best way for you to get there, based in part on at least some of these factors.

Computational Thinking at Scale

If you had to try to repeatedly solve the problem of quickly calculating the best route to a destination and get the answer right most of the time, you'd want to try to find an algorithm that you could code into the program.

And you would arrive at that algorithm using Computational Thinking.

Over the course of these few lessons, we'll be looking at some relatively simple and concrete examples of how Computational Thinking can by used to analyze a problem. These problems are designed to be interesting and manageable, and to illustrate the process of Computational Thinking.

It's important to understand, however, that Computational Thinking skills apply to problems of all scales. A simple question:

"What's the fastest route I should take to drive to a restaurant for lunch today?"

may use the same solution that would apply to a larger question that affects thousands or millions of people:

"How should Amazon most efficiently deliver 'Two Day Free Shipping' packages to clients?"

Some problems will have relatively simple solutions, some of them might be slightly more complex... and some problems that we try to solve have no known solutions (an interesting and frustrating fact).

Computational Thinking is ultimately about trying to wrap your head around a problem to figure out a way to solve it, especially if that solution involves some ordered or systematic process that can be implemented by computers.

Summary of Computational Thinking - Lesson 1

In this first lesson we've introduced the idea of Computational Thinking, a problem-solving strategy that includes considering problems critically, with an eye toward finding solutions that might be solved using a generic sequence of steps, ideally steps that might be carried out by a computer.

Next time, we'll be examining four specific aspects of Computational Thinking, and how we can apply CT techniques to analyzing specific problems.

We'll see you then.

Assignment: Computational Thinking - Lesson 1

Assignment: Lesson 1

To complete this lesson, create a Word document to answer the questions here.

  1. What is an algorithm? Write a one-sentence definition in your Word document.
  2. Examine these instructions to make a peanut butter-and-jelly sandwich. Place them in the correct numbered order, being sure to fill in the missing steps as needed. Write this correct order in your Word document.

Upload your completed Word document to Canvas.

 
Unordered steps in algorithmCorrectly ordered steps in algorithm
Spread jelly on one side of the other piece of bread1.
Put knife in sink to be washed later2.
Put jelly jar away3.
< Missing step, not necessarily on this line> 4.
Get jar of peanut butter5.
Get jar of jelly6.
< Missing step, not necessarily on this line > 7.
Use knife in jar to get peanut butter8.
Place two pieces of bread together, peanut butter facing jelly9.
Open jar of jelly10.
< Missing step, not necessarily on this line > 11.
Get two pieces of bread12.
Clean knife13.
Get knife14.
Close peanut butter jar15.
Spread peanut butter on one side of one piece of bread16.
Close jelly jar17.