 Good afternoon, and thank you for joining us for this insight and ideas session. I'm Gary Regan-Streve, special project editor at Thomson Reuters. With me is Jeanette Wing, who's been head of the Computer Science Department at Carnegie Mellon University in the United States. She's also held a leading role at the National Science Foundation, which funds the majority of research in that country. And she recently joined Microsoft as vice president and head of research at international labs. She comes in that way. Thank you, Gary. Tell us first, quite simply, what computational thinking means. Computational thinking is a thought processes in formulating a problem and expressing a solution in a way that a computer, human or machine, can effectively carry out. Now, I know that's a packed definition, and perhaps later we can unpack it. Well, we're certainly going to explore that first. But I want to go back further in time to understand what got you here today. Tell us a little bit about when you're growing up. Is this what you knew, what you would be doing, or how did you get here? Well, I think what I knew ever since I was four years old is that I would be a teacher. When I was four years old and growing up, I used to play with my parents' friends of parents' children and my brother's friends who were all older than I was. And I would line them up in chairs right in front of me, and I'd have my little black board behind me. And I would pretend I was teaching, and they would indulge me and pretend they were learning whatever I was teaching. And so I think ever since I was four years old, I knew I wanted to teach. So in a way, it was predestined. But your passion evolved over time. So my passion for computational thinking certainly evolved over time. I think I've always loved mathematics. And when I was growing up, I loved doing math and workbooks that my father would give me. And I loved studying math and solving problems, doing puzzles, solving logic problems. And so I think that probably laid the foundations for me to go into a field like computer science. And then from there, of course, my idea about why computational thinking is so important for everyone. But that wasn't immediately what you were going to go into. You actually started studying something else, didn't you? Well, yes. I started studying electrical engineering, and that's probably because I was very influenced by my father, who was a professor of electrical engineering. He used to teach at Columbia University. And as I was growing up, of course, I knew that my father was a professor of electrical engineering, but I actually didn't know what that meant until one late dinner conversation after dinner, I asked my father, well, what is engineering anyway? And the reason I asked is I've always loved math and science, and I was in 11th grade thinking about what I was going to major in, thinking about what college is to apply to. And I finally asked the obvious question, what is engineering? And he told me about how it's grounded in math and science, but it's applying those principles to solving real world problems. And that appealed to me a lot, because then I could do the math and science, but I could actually be addressing real world problems. And so I decided I would study engineering. And then once you were in it, something else peaked your interest? Well, so then once I decided I would study engineering, of course, I only applied to engineering schools when I was applying to college, and my first choice was MIT. I got into MIT and went to MIT. And at MIT, I guess, course six is where electrical engineering and computer science majors are, and I decided to major in course six. I started out as an electrical engineering major. And as an electrical engineering major, and as a computer science major, you're required to take at the time four courses, two in doubly, two in computer science. So I took the first of each, and at the same time, it was my first term sophomore year. I was an electrical engineering major. And I realized that all the ideas and concepts that I was learning in my computer science course were mind-boggling. They were ideas I'd never heard of before, I'd never seen before. And I really fell in love with some of the concepts that I was learning. In fact, there's one particular kind of theory in computer science called lambda calculus, which we were taught in this first course of computer science. And I used to have dreams about lambda calculus. And that's when I realized, well, maybe I'm a really, maybe inherently I'm a computer scientist at heart. So I, do you want me to tell the rest of the story? Well, I called up my father, who's an electrical engineer. And I asked him, I was thinking about changing majors. I'm thinking about changing from electrical engineering to computer science. But I wasn't sure because I thought, well, I asked him, is computer science gonna be around for a while? Or is it just a fad? And of course, he was very supportive. He said, yes, computer science is a good major. And don't worry, you can switch into computer science. And it will be around, and it's a good major. So I haven't looked back since. Well, you follow the adage about following your dreams. And in this case, literally you did. Well, computer science has certainly shown it's not a fad. And then it's certainly gonna be here for some time to come. Let's flesh out a little more your idea about computational thinking. And if I understand it's a bit about deconstructing problems in a way to find small solutions to bigger solutions. Give us some more, talk a little bit more about that. And how perhaps you can give us some examples about how we may apply that at home and at work. Yeah, so one aspect of computational thinking is the approach for dealing with complex systems or complex problems. And the natural way a computational thinker would approach complexity would be to decompose the system into smaller pieces. Solve the smaller piece and then combine the solutions to the smaller pieces to solve the larger problem. And so that's a very first step, decomposition and composition. Those are standard techniques in computer science for designing a system, for solving problems, for understanding human behavior. So one way I can try to relate computational thinking to everyday life is considering how people might cook at home. And at home when you're in the kitchen and you have to cook, say, dinner, you're actually operating in some sense computationally. The idea is you have a finite number of resources. Maybe you have four burners on your stove. You have only so many pots and pans. You have some ingredients that you have to mix and cook dinner. And at the end, you want the vegetables and the meat to come out at the same time. You don't want the meat to get cold as you're cooking the vegetables. So as the cook, you have to think ahead and prepare when to put the ingredients together or when to start cooking what. And to make sure that at the end, you have this nice gourmet meal. So how this relates to computer science is that when one studies, say, what an operating system is, it's the same problem. There are finite number of resources that each, and there are certain tasks that you want to accomplish in a finite amount of time. And at the end, you want the task to complete. And so the kinds of concepts one learns as a computer scientist are analogous to what one does in the kitchen intuitively. There are, for all of us who awake at four o'clock in the morning with major problems, and we can't see the forest for the trees as the proper goes. Tell us a little bit, basically we can extract from that that any problem or most problems can be broken down if we break them down into smaller tasks. That could then be solved as a way of solving the bigger issue. Well, that is the ideal. Sometimes, and so yes, you have a large problem and you can break it into sub-problems, solve the sub-problems. And the solutions to the sub-problems then are composed to solve the larger problem. That only works, first of all, if it's easy to break a big problem into smaller tasks and if the solutions, the tasks can be independently solved. Things get a little complicated when there are dependencies that are inherent to the problem, then it's harder to break things down into independent sub-problems. But there is a recommendation there to individuals who, and that may be to. And I think another kind of question a computational thinker would always ask when presented with a solution to a particular problem is, is this the most efficient way I can solve a problem? So that's why in computer science we study the efficiency or time and space complexity of algorithms. When we are given a problem, we come up with a method for solving that problem. But we always want to improve on that method by making it the most efficient with respect to how long does it take to solve? Or how much space does it take to solve? Let's translate this to the workplace where companies, organizations go through a number of processes, have a number of projects, have a number of tasks they have to complete to achieve their objectives. Well in the workplace, one way to apply computational thinking is to think about the workflow in an organization. So you can model the workflow in a formal way such that you can algorithmically determine whether it's the most efficient with respect to some measure like time or space or energy usage even. And so a company may very well want to know are there bottlenecks in the my organizational structure where if I could identify those bottlenecks, then I can actually put some resources there to make the workflow more efficient or make things go more smoothly. Another thing that you can do with a mathematical model of say processes in the workplace is to look for inconsistencies or ambiguities. And so again, in the end, computer science and computational thinking is grounded in mathematics. And anytime you can formalize something in terms of a mathematical model, then you get all the properties that of determining completeness, consistency and precision and so on that you get from mathematics. Is that not something that the ordinary project manager would typically be doing or is that more innate and they're not thinking as much about the process of structuring something either with a formal algorithm or some other workflow process that allows us to achieve the best solution? I suspect that project managers actually do that either informally or intuitively or maybe even formally. When systems or processes in a large organization get very complex, it helps to have some kind of automation or some kind of computational tool that will help them at least express what the process is. Maybe not to a point where it can be analyzed through a computer but at least written down using computational tools. So there's a message there also for those companies that aren't employing more formal algorithms and that is there are great efficiencies to be gained by using a more formalized approach and how they look through their processes and workflows. Yes, and I think this comes to play even more when you're considering not just one process or one workflow but you want to model all of them and you want to look at all the interactions that they may have with each other. That gets pretty complex because the number of interactions can be exponential. And that's very hard to fit in one's head. But it's very easy for a computer to analyze the different interactions between the different workflows. Are there models, algorithms that are typically sold in the market for certain kinds of industries and certain kinds of businesses that can help them achieve that kind of efficiency through this result? Or typically people will hire their own computer scientists or? I think actually there are software packages that will let product or program managers represent these kinds of workflows I'm talking about. So what I'm suggesting that managers do is probably already done very easily with software packages. The kind of analysis may, the sophistication of the analysis may vary across these software products. Let's talk about the benefits of computer science and computational thinking outside the strict confines. I mean, how has, how is this being applied in disciplines other than computer science and what kind of success has it had in other disciplines? Well, I'm glad you asked me that because in my role at the National Science Foundation, which is a funding agency for basic research in science and engineering in the United States. I was able to help spread computational thinking to all science and engineering disciplines through a program that the foundation ran a few years ago. And it's actually a given. Today, if you look at any science and engineering discipline they use computational methods. They use computational thinking or computational methods and tools in order to advance their own science. So if you look at a field like biology, it's very natural now for biologists to look at algorithmic solutions, to look at computational models for representing dynamics of biological processes, to actually advance their own field to discover new biology. That's just biology. This is true of every other science and engineering. But I actually am promoting a vision beyond the application or the use of computational thinking in science and engineering. I think computational thinking can be used in all disciplines and the humanities and the arts and the history. And the insight is that a computational thinking through analysis of large data. Big data is the hot topic now. Can discover new patterns that probably one could not discover without the use of these computational methods. We're gonna get there. Let's just go back to biology, for example. Since you mentioned it, what kind of success has this idea brought to biology? Well, I think the first success, at least in my own mind, and I'm not a biologist, was the sequencing of the human genome. When it was an algorithm that expedited the sequencing of the human genome. And it was then the biology community sitting up and saying, well, maybe computer science has something to add to my repertoire of thinking skills to my repertoire of scientific methods. And so that's when I believe the computer science community and the biology community started working together. Because problems that biologists face could be viewed from a computer science perspective. And once you view a problem from a different perspective, you bring in all the solution methods from that other field. And now you have new ways of discovering, in this case, biology or facts about biology. So without it, without this extra component, it would have taken. It would have taken years to sequence the human genome. There was obviously a parallel effort going on that wasn't using this algorithmic approach, and it was moving on at its own pace. So I think people do recognize the value that the shotgun algorithm brought to the sequencing problem. I mean, I'm intrigued by your desire to extend this out to even fields that we wouldn't expect, like the arts and humanities. Tell us a little more about how you think this could benefit in those two fields. Well, first of all, we're already seeing this. If you look at programs at universities and colleges, if you look at different disciplines, you'll hear terms like digital journalism, digital humanities, digital archeology. All of these fields are recognizing the importance and value of computational methods in their own discipline, in the very conduct of their discipline. And so it's in some sense happening already. But why is it happening? Partly, it's because there's massive amounts of data. And using techniques from computer science can help people analyze this massive amount of data to discover new patterns, to discover where things cluster, and actually cross different disciplines. So imagine if you wanted to understand some trend in history, but you brought in all aspects of literature and language and science that was happening throughout that historical time you're interested in. Then you get a much richer view of the world at that time. And then you can start perhaps hypothesizing ideas that you would never have thought of to hypothesize before. So that's just one example. I think in reality, it's just natural for many of these fields, whether they're arts and science, to be using digital technology in creative ways. Are there any other areas in particular that you thought, if they only used algorithms, if they only used computers, our knowledge would be this much richer? Well, I think one area where I have been pushing recently, and I think we're making inroads, is the whole area of healthcare. I do think that there's a lot of interest in using more computational tools and digital technology for making our healthcare system more cost effective. More efficient and so on. But I think that the healthcare industry has yet to understand how far the computational methods can actually take them. In fact, I believe that advances in computer science can transform the very conduct of healthcare. One of the limitations of course is the discipline of medicine is cautious and rightly so in adopting technology because first and foremost, it's making sure that patients are treated and you don't want to endanger the patient in any way. It seems as though a number of things need to happen before we see the kind of extension of this thinking to so many other disciplines. A number of things need to come, it would appear such as one kind of a willingness to embrace this as a certain education of others. But also equipping people from a younger age to have the skills necessary to think this way and approach problems in different ways. What are some of the takeaways that you would like to leave in terms of what needs to happen? Well, first of all, I like to think about computational thinking is for everyone and I do believe that at the level of colleges and universities and above, it's a given. I've seen the transformation on campuses in terms of other disciplines adopting and using computational methods in their teaching and so on. I think the real challenge is at the pre-college level, what in the United States we call K through 12. What would it mean to teach computational thinking or more simply, what would it mean to teach computer science to K through 12 students? Certainly at the high school level, you can look to what freshman or sophomores might learn in college. So that might take care of the high school level. But what would it mean to teach computer science or what would you teach of computer science to a nine year old? And in fact, that's actually a deeper question than figuring out what the curriculum ought to be. Because we'd have to first figure out, well, what can nine year olds learn? How sophisticated is their analytical ability? How sophisticated is their reasoning skill? How sophisticated is their ability to abstract? And in the end, computational thinking is very much about ability to abstract or to define abstractions and to reason about them. And so my favorite example is, we in the United States at least, teach long division to nine year olds, very common arithmetic operation. Long division that we learn as nine year olds is just an algorithm. So why don't we use that word algorithm? If we taught nine year olds that the long division method that they're learning is just one algorithm for dividing one number into another number, then, and we use the word algorithm, then we empower them with the bigger concept. But maybe at nine years old, children aren't ready to learn that more abstract concept. I don't actually know. I'm a computer scientist. I think it would take learning scientists and cognitive scientists and education scientists to come and to work with computer scientists to figure out what computer science concepts make sense to teach to nine year olds versus five year olds versus 18 year olds. But I think where you're going is you suspect your intuition suggests that there's a lot more we could be doing from a much younger age to be instilling in them. Is there a best practice somewhere else that we can look to to say they're doing interesting things there we should look to their approach? Well, first of all, I should say that in the US we have been as a community, the computer science community has been promoting teaching computer science to K through 12 at all levels. But it's actually difficult to change the K through 12 public school system in the US. Where I'm most impressed by progress made in this space is in the UK. And the United Kingdom in last year, the British Royal Society published a report that basically promoted computational thinking for K through 12 students. Now the advantage in the UK is they already have an ICT requirement. But currently what is taught for that ICT requirement is computer literacy, how to use Word and Excel and maybe how to use a keyboard. That's hardly what I mean by computational thinking. And fortunately there's some computer scientists in the UK who have tried to transform and update this curriculum with true honest to goodness computer science concepts. So this is happening as I speak. And I look to them as a real leader for the rest of the world. They are currently developing a curriculum that would make sense for K through 12 and I'm very optimistic. That requires a certain commitment both to resources of having computers in schools as well as having the teachers who have the appropriate skills to be teaching them. So that is probably the major practical limitation. It's wonderful to have this ideal curriculum design. But in the end someone has to teach the to the curriculum, teach this material to the students. And right now there are not enough teachers trained in the understanding of these concepts to actually convey the material. So the first step after, maybe the first step is to get the curriculum. The second biggest step and that's the biggest hurdle is training the teachers. Look ahead for us five or ten years. What's your vision for what it can be like? I think in ten years we will see different countries around the world having seriously adopted teaching computer science to K through 12 students. That's the educational front. I think in ten years it's a given that every discipline, every profession, every sector in our daily lives, in our life will be using computational methods or computational thinking without even realizing it. Jeanette Wing, thank you for your insights and joining us today. Thank you.