Lesson 0.1: Computational Thinking
Learning Objectives:
Computational thinking is about looking at a problem in a way that a computer can help us to solve it.
Students will learn why computational thinking is important.
Students will learn basic computational thinking concepts, approaches and vocabulary.
Do Now:
Watch: Computational Thinking
Read:
Computational thinking is not thinking about computers or like computers. Computers don’t think for themselves. Not yet, at least!
Computational thinking involves 6 different concepts and 5 approaches to working:
Explore:
Activity 1: Read
Why is computational thinking important?
Computational thinking and the concepts behind it, form the basis for much of computer science. Computer scientists are interested in finding the most efficient way to solve problems. They want to find the best solution that solves a problem correctly in the fastest way and using the least amount of resources (time / space).
Is this the most efficient way to solve the problem?
Is this the fastest way?
Does it require the least amount of resources?
Does it solve the problem and give the right answer?
Can it be used to solve other problems?
What can you do with computational thinking?
Although computational thinking describes the sort of thinking that computer scientists and software developers engage in, plenty of other people think in this way too, and not just when it comes to using computers. The thinking processes and approaches that help with computing are really useful in many other domains too. For example, the way a team of software engineers go about creating a new computer game, video editor or social networking platform is really not that different from how you and your classmates might work together to put on a school play or assembly.
In each case:
you take a complex problem and break it down into smaller problems
it’s necessary to work out the steps or rules for getting things done
the complexity of the task needs to be managed, typically by focusing on the key details
the way previous projects have been accomplished can help.
Activity 2: Vocabulary:
While the class reads the concepts aloud, use this worksheet to take notes. Be prepared to discuss in class using your notes.
Computer Science Concepts:
Logic - Logic is fundamental to how computers work: deep inside the computer’s central processing unit (CPU), every operation the computer performs is reduced to logical operations carried out using electrical signals. It’s because everything a computer does is controlled by logic that we can use logic to reason about program behavior. Software engineers use logical reasoning all the time in their work. They draw on their internal mental models of how computer hardware, the operating system (such as Windows 8, OS X) and the programming language they’re using all work, in order to develop new code that will work as they intend. They’ll also rely on logical reasoning when testing new software and when searching for and fixing the ‘bugs’ (mistakes) in their thinking (known as debugging) or their coding when these tests fail.
Algorithm - An algorithm (pronounced AL-go-rith-um) is a procedure or formula for solving a problem. The word derives from the name of the mathematician, Mohammed ibn-Musa al-Khwarizmi, who was part of the royal court in Baghdad and who lived from about 780 to 850.
Patterns - In computer science when you see a common pattern in a problem, you look to create a single common solution to reuse many times, so that you only have build the common solution once, rather than designing and building many versions. Common modules of code are sometimes called functions; and many programming languages have shared libraries of these functions.
Abstraction - Abstraction is about simplifying things; identifying what is important without worrying too much about the detail. Abstraction allows us to manage complexity.
Evaluation - making judgements, in an objective and systematic way where possible.
Computer Science Approaches:
Tinkering - Tinkering means trying things out. When tinkering, we try things and and may do things in many different ways. Tinkering builds perseverance. Tinkering helps us to see our use of technology as being about developing our understanding rather than getting the ‘right answer’. When tinkering we look at things from many different angles. We try ideas that seem wrong just to see have happens.
Creating: Creating is about planning, making and evaluating things; e.g. animations, games or robots. Programming is a creative process. Creative work involves both originality and making something of value: typically something that is useful or at least fit for the purpose intended.
Debugging - Errors in algorithms and code are called ‘bugs’, and the process of finding and fixing these is called ‘debugging’. Debugging can often take much longer than writing the code in the first place.In real life, we debug all the time: it’s just spotting mistakes and fixing things. For example we may check a sentence to makes sure it makes sense and then fix it; we try and work out what to do to calm an upset baby and then calm them.
Persevering - Persevering is never giving up, being determined, resilient and tenacious.
Collaborating - Collaborating means working with others to ensure the best result.
Lesson 0.1 Wrap Up:
Reflection: Computational thinking is a way of solving problems, designing systems, and understanding human behavior that draws on concepts fundamental to computer science. To flourish in today's world, computational thinking has to be a fundamental part of the way people think and understand the world. Let's discuss the Computer Science Concepts Vocabulary from your notes!