Hey again. In this section, we're going to explore what computational thinking is. Well, here's a working definition. Computational thinkers can solve problems, create artifacts using computing technology. Very simple. We often use this phrase, solve problems, and people generally think it's a good thing to be a problem-solver. I guess all we mean here is that we can achieve some task using computing technology that we're interested in. We're going to introduce a framework to think about the separate parts of computational thinking and problem-solving using computing technology. The first part is that, the problems that we want to solve and they exist in some context and I need to know something about that context. The problem is always set within some context. Then beneath that, we have the computing technology, the particular computing technology that we're going to use to solve this problem. That's another world that's like the computing world got a real-world with the problems in, and we've got the computing world with a particular technologies that we are going to be using. Then what the computational thinkers do is they're really model builders. They basically take the problem in the real world and they build a model of it using the mechanisms in the computing world and that's it really. We've got those three parts and we'll build on these three parts throughout this talk. What do I mean by modeling? Well, here's a fairly familiar modeling context. Let's say I've got a real-world car. Here it is, and I've got a typical modeling system for 3D shapes. We're all familiar with lego I'm sure, building blocks. What do I need to do to go about trying to build a model of that car using these blocks? Well, firstly, I need to know something about cars because I need to be able to pick out the important bits of the car that I want to model in the thing that I'm going to build. What's important about this car? What's important about a car or any car that we need try and capture? Well, the first thing, I'm just going to pick a bunch here. We've got a windscreen, we've got the bonnet, in this particular sporty car, it looks like that grill at the front is quite cool and exciting. We've got wheels, we need to make sure we model the wheels. We've got some air intake on the side there to try and capture that's not that particular cause, we've got windows and the roof, and then we've got a boot (trunk!) to the back. We've got all these different pieces. The important aspects of the car that we want to try to model and I need to know about cars in order to appreciate what those important parts are. Then I'm going to get on and do my best to build some representation of this car using what I have, which of these blocks. Again, I need to know now about the world of blocks. I need to know how the blocks fit together, what things I can make with them. Do I have anything like a wheel? How am I going to model a window? Go think about all those things with these blocks, and perhaps I come up with something a bit like this and it's yellow. We've got the color right at least. It's got blackish looking wheels. It's got wheels. That's a good thing. We've modeled some idea of the air intake bit of a soft fat wheel arch down here. We haven't actually got windows in our building blocks, but the absence of any blocks, but with blocks around represents a window idea and we've got the other components in here as well. It's by no means a perfect model, but you can see the process I've gone through there. I've gone from the real-world thing in its context of cars, and I've picked out the important bits of this car that I want to try and model and then I've done my best to build it using the tools I have, the blocks that I have. That's a very concrete example of a thing, building a real thing. Here is an information modeling example and this time, the problem is again going to be in real world. The modeling system is going to be some mathematics, which is a modeling system for making models about information. Here's the problem. There's a three kilometer tailback on the motorway, how many cars are involved? In order to try and build a model of that situation that's going on. I'm going to try and build a mathematical model of the motorway and the cars on it. I need to know quite a lot about motorways and cars in order to think about that. The things I might need to know about the motorway, I need to know that the motorway has multiple lanes. It's not just one lane, how many lanes are involved? I'm going to need to know that the cars tend to sit in lanes and that each car is a certain length and there'll be a gap between the car and the next car. You can see I'm starting to build up a model, I need to know number of lanes. I know how long the whole tailback is. I'm going to assume here that all the lanes are completely full and that's going to help my model. I end up putting together something like this in terms of maths and where I'm taking the length of the tailback and dividing it by the length of the car and the gap and that should give me the number of cars in one lane. Then I multiply that by the number of lanes. That's my mathematical model. Now you'll have heard sometimes that computers are referred to as information processors, they process information. Let's have a look a little bit about what I mean by an information process. We'll use simple arithmetic as an example. Now here, we're modeling how to do multiplication. The problem is to multiply 23 by 17, which is for many they can't do it immediately in their head. Our modeling system is going to consist of a human with pencil and paper, and the ability to do some simple arithmetic. We've got a process for doing this. We don't need deep analysis because somebody else's has already done that for us. But they've set up a process that we're going to follow. Here's the process. As you know, we'll write down 23, write down 17 underneath, draw a line, and start doing multiplication. First the tens and then the units, multiply 7 by 23 to give us the rest of our calculation. You can see that there's a fairly straightforward process there, that's an information process. We're processing information and we're making use of a collection of tools, pencil, and the paper, and the human's ability to do the simple mental arithmetic involved in that particular example. The reason the information processing is important to think about is when we're thinking about how to model the tasks that we're interested in, we're going to need to consider the process that's involved in whatever it is that we're trying to model and what information is involved in that process. We'll come back to that in detail later. Here's our model again, A, B, C, the world of problems, the world of computer technology, and our ability to model the problems using the technology. What do we need to actually learn about in order to become good at that process? Well, clearly we need to understand the context of the problem and also particularly how we're going to pick out the important parts of a problem and that's going to tend to be what information is involved and what's the process involved in the task that we're interested in. We need to understand concepts like information and process and we need to see how they appear in our problem context. In our case, we're going to be looking at in this course, graphics and animations in particular. We're going to need to look at what's the process in drawing something or animating something and what information is involved there. We also need to understand how we're going to automate that process. I could draw something by hand, but we're going to get a computer to do it so we need to understand the mechanisms that are going to enable us to get the computer to do whatever the task is we set out, in this case, the graphics and animation. In this whole specialization, the particular language and computer system that we're going to be using is called JavaScript, as you know. We'll use that across all the courses, not just for the graphics and animation. Then finally, once we know about those two, we can go ahead and actually learn the appropriate techniques and patterns to be able to analyze our problems and represent these important aspects using the computer technology. These are going to be skills that aren't really particular only to JavaScript or say to graphics and animation, this is a set of skills that you'll develop over time and that you can use on any particular computing technology to solve problems in any particular problem domain. Here we have a framework for for learning computational thinking. Remember our working definition, computational thinkers can solve problems and create artifacts using computing technology. You don't solve problems in a vacuum, you need to actually know some stuff. You need to understand something about the world of the particular problems, and you need to understand the mechanisms, and the tools that you're going to use to model the problem, and therefore solve it. Then once you know those two, once you understand the problem world and you understand the computing world, then you can go ahead and develop your skills to solve problems themselves. Well, that's all I want to say about this general introduction to computational thinking. What we'll go on to is now to actually look at our first problem. We then go to solve it using the JavaScript language.