What are the concepts that underlie computational thinking? Well, maybe it seems silly, but one fun way, to look at possible definitions of complex ideas is to do an in-Google image search. So I did that that, let me show you a few of the results. So here's one, this actually comes from Wikipedia, lots of words on there. Let's just look at the three big ones. Abstraction, that's a word that has a lot of meanings in different ways. Analysis, also generic word. Automation, that seems to have a lot to do with computers. But then, let's also look at the middle there, and now we've got this yin-yang thing going on. We've got human abilities and computer affordances. Well, hey, here is human part, reflects back to what we were just talking about in the previous video. Let's look at another one. Here's something that claims is the key concepts to computational thinking. Let's start at the top. Decomposition, looks like maybe breaking things up, also just going off the English definition of that. Pattern recognition, that's something that sounds familiar to me from computers in the world, there's these QR codes that we can scan now and things like that, maybe that's what they're talking about. Abstraction, there's that word, it came up a second time. Again, I don't even know what that image is referring to. Then finally, algorithm. Now, that's a word you might have heard in conjunction with computer science. In fact, I might have accidentally used it in the previous video, but I'm not sure we necessarily know what that means. Let's try one more. Very spiffy image. Hey, some of the words repeat here. Top left, decomposition, breaking big problems into smaller easier to manage problems. Not so good, I think I can understand what that means. Pattern recognition, that's the same as well, analyze and look for a repeating sequence, well, maybe that doesn't have to do with QR codes or maybe it does, I don't know. Abstraction, that's there too, remove parts of a problem that are unnecessary and make one solution work for multiple problems. That's maybe still a little abstract to me. Then there's an algorithm design. So, they had just had algorithms previously, this one's really talks about design and they call that step-by-step instructions on how to do something. "Hey, we've been doing that, haven't we?" Yes, we have. So, one of the key things to know about computational thinking is that this term actually was coined fairly recently, as we mentioned by Jeannette Wing, I don't think I mentioned that she actually coined that term. But the current definition of computational thinking really will depend on who you ask. For example, the college board that makes the advanced placement courses, they have lot of definition of computational thinking, and the computer science teachers association which is an international organization of K-12 Computing Teachers, they have a definition of computational thinking. But what you will find is that there are many parts that overlap to this. In particular, I want to let you know that in this course, although we will be touching on all and developing your skills in all of these thinking processes, the core and at the heart of everything that we're going to be doing is this idea of algorithm design. That's why we've been focusing you on this idea of giving step-by-step instructions on how to do something, and in this course in particular, we'll be doing that in programming languages so that the computer can make our design happen for us. So, let me just give some highlights of what we're talking about. So algorithm, we maybe didn't necessarily know exactly what that was, but an algorithm relates to a real-world human problem. They describe solutions that we come up with as humans to our problems that we have, that we want to solve. But when it comes to computers, computer programs that we we'll learn to write, they execute these algorithms or plans to perform specific tasks that the computer can carry out to make what we want to have happen happen. All right. So, algorithms are really about a human's way of describing a solution to a problem, and then we design a computer program to execute or implement that algorithm such that the computer can solve that problem for us. So obviously, algorithms are about real life, trying to really emphasize that. So what algorithms, as you think about teaching students, what algorithms from real life do you think your students may already have experience with? All right, let's finish up with one more thing, and that is the relationship between this new term, computational thinking, and what most of us talk about, is like we want our kids to have computer science classes. So, computer science and computational thinking maybe are not the same thing or maybe they are, or I guess that's not an option I provided in here. So, below I've got some somewhat basic Venn diagrams of the possible relationships between computer science and computational thinking. What do you think is the best representation of that relationship? All right. I've selected my answer and I can have an argument for it. But let me just tell you, I think you could probably make some arguments for other things as well. The way I think about it is that I think about everything I know of that is involved in the field of computer science, whether that's software engineering, developing apps or whether that's designing the processor chips that are inside our computers, and that's computer science. You need to use computational thinking for everything that I can think of that's in computer science. But I do think computational thinking extends and applies beyond simply the realm of computer science or writing programs, and it's something that can help us see the world around us and help come up with solutions to problems in the world around us. So that's my argument, you can feel free to share yours in the discussion forum.