The two major takeaways from the readings and other materials this week is the common ground that computational thinking shared with mathematical thinking and engineering thinking, but more importantly, as they do share many of the patterns and visions, they somehow developed their own characteristics on top of the factors they took from each other.
For the intersections between computational thinking and mathematical thinking, it’s easy to understand that since mathematics serves as the foundation of the computational thinking, there would be a major indication and representation of mathematical way of thinking in computational thinking, but the one identical difference is that “when we execute our solutions on a machine or as human we are constrained by the physics of the machine – we can’t represent or reason about all the integers because we are only representing a finite number of them in our machine.”
As for the distinction between computational thinking and engineering, thinking is that when we are dealing with computational thinking, we are talking about building a program – in which you are building a system, you would be engineering an artifact, so it’s reasonable for you to borrow from all the discipline of engineering. But as we – the human are the ones to define the system, there’s one thing, in particular, we could manipulate – the software. In software, you could do anything you could build virtual worlds that define the laws of nature or laws of physics because it’s a virtual world, you could invent your rules. This means you are not constrained by the physical world.
The way I take this is to think beyond the tangible layer of the computer. The hardware is getting fancier every day – faster processor, bigger memory, but that’s not the core of computational thinking – not even close. We should think in the way that: what the hardware we have in hand would allow us to do, but what we need and what we want to do, and try to make the hardware to incorporate that.