Transcript

So this isn’t anything new from what mathematicians do but in computing we don’t just invent abstractions for the beauty and elegance of the abstraction as mathematicians tend to strive for. We have other concerns that constrain the abstractions we choose. So in particular I would like to talk about the measures of a good abstraction in computational thinking. The first and foremost typical question a computer scientist would ask is, ‘how efficient is this. Is this the most efficient way to solve the problem’, and when I talk about efficiency I talk about it in terms of space and time. Is this the fastest way to get from here to there? Is this a procedure which is going to require the least amount of space for that space and time? And I think what is most interesting right now is there is a lot of interest in what I would call the third dimension of analysing the complexity of the kinds of abstractions that we invent and that has to do with energy. There is so much interest now in a society and the administration on energy and I think of computing as a discipline needs to revisit a lot of the abstractions we have invented already in terms of this third dimension. So for those of you who are researchers in computer science I advocate that we are going to have to throw out all our algorithm text books and rewrite them all in terms of these three dimensions now. The other measure of goodness for the abstractions that computer scientists like to invent is correctness. After all when you are writing a program or building a system you want it to do the right thing and so we always ask not only how fast does this, say algorithm, perform but does it do the right thing? And what does, does it do the right thing mean? We usually ask does the program compute the right answer and asking that question alone opens up a lot of research questions. But we also wanted it to do something useful so it is not enough that it does the right thing we actually want the answer to be spit out eventually and that is the question, does the program produce an answer? There are complexity results that show that this is not always an easy question to answer, and then of course there is the other ‘ilities’ if you will when we look at a particular abstraction and judge whether it is good or not. Simplicity and elegance as we have for mathematics, usability, modifiability, maintainability, cost and so on. Now if you look at this list you will say, well that is no different from good engineering, and so in fact computational thinking or computing very much draws on mathematical thinking and draws from engineering thinking and comes together in terms of the automation of the kinds of abstractions we build. What I would like to … I promise that I will say a few more high level remarks and then I will get into some concrete examples. But I like to think that computational thinking really does draw on mathematical and engineering thinking, it draws on mathematics certainly as its foundation but we in computing are unconstrained by the physics of the underlying … we are constrained by the physics of the underlying machines. So, in the end there is going to be some machine or there is going to be some human brain and we are in terms of what we can execute or automate are going to be constrained. So a typical computer like this is going to have finite memory, it can only go so fast and so it is constrained by the physics of this device. The brain scientists are trying to understand the physical and intellectual limitations of our brain as an automaton. Computational thinking certainly draws on engineering since our systems interact with the real world. However we in computing can build virtual worlds, worlds that are unconstrained by physical reality and so when you interact in a virtual world. So how many people have heard of second life. Second Life is a virtual world which you can enter and this virtual world defies the laws of physics. You have avatars who fly around, you have corpse-like beings that die and come alive again. That’s not like in the real world so what is it in computing that enables this kind of defying the laws of nature, building worlds that are virtual. It’s the software. Software enables these physical devices to be beyond the real world. When I talk about computational thinking, I really mean the concept and not the artefact that computer scientists produce. This is a little abstract, I promise to get a little more concrete. And finally, I talk about computational thinking as being something for everyone everywhere. It will be a reality when it is so integral to our endeavours that it disappears as an explicit philosophy. So being more specific, here is unfortunately a laundry list of what I would say computational thinking concepts and those of you who are computer scientists or engineers or mathematicians will recognise many of these classes of abstractions. What I mean by putting this list down is not for all you to understand all this of this, but just to say that I distinguish between computational thinking and computer literacy, that is how to use Word, or Excel, PowerPoint. Computational thinking is not that and I distinguish between computational thinking and computer programming because computing is a lot more than computer programming. Ideally I could come up with a better list if you will rather than this potpourri of concepts. I’m actually working on that as I speak.