Peter J. Denning, Matti Tedre

Historical Notion
- Before the modern computer age, there was a profession of mathematically trained experts who performed complex calculations as teams. They were called "computers."
- The idea that languages cater to particular ways of thinking about problems came to be called "programming paradigms": ★
- Imperative Programming ("procedures"): saw as series of modules whose instructions commanded the machine. (FORTRAN, COBOL, ALGOL)
- Object-oriented programming treated programs as collections of relatively self-sufficient unite, "objects" that interact with each other and with the outside world by exchanging messages. (Java, Smalltalk)
- Functional programming treated programs as sets of mathematical functions that generated output data from input data. (LISP)
- The Boeing 777 was the first commercial airline design using simulation as a substitute for wind tunnel testing in 1994
Computational Thinking
- There is no information without representation. To be processable in the digital world, data must be represented as signals in the machine. ★
- 🗯 Representation is a way of translate the information to a computer.
- Simulations also opened the door for a new way of exploring the inner workings of nature. By interpreting natural processes as information processes and simulating them in order to understand how they work.
- Designers schooled in the underlying von Neumann architecture think in terms of instructions and have trouble understanding how a quantum computer works. ★
- 🗯 One of my fears is to lose how I connect dots in the digital world today when a new paradigm as a quantum computer arrived.
- There are fast heuristics algorithms that do a good job but not necessarily the best.
- 🗯 Deep blue playing chess is an example of not a thinking machine, but brute force all possible movements using heuristics (approximate solutions) to speed up the processing time.
- While machines have eliminated some kinds of error, a whole horizon of new errors has appeared.
- 🗯 Racial injustice, political manipulation, filter bubbles
- Self-learning machines have raised another concern: explainability. Designers and users want to know how the machine reached its conclusion.
- It is perturbing to our computational thinking to be unable to "explain" how a computational network (AI) generated its conclusions
- Programming itself is a complex network of skills, including mathematical abilities, conditional reasoning, analogical reasoning, procedural thinking, temporal reasoning, and memory capacity.
- Questions for AI future:
- What cannot be automated? What should be automated? ★
- How can AI generate more jobs through automation than displaces? ★
- How can we help people whose jobs are displaced by software and hardware we have designed?
- How will we discourage the development of an automated surveillance society?
- How we prepare people to appreciate the difference between wisdom and abundance of information?
Software design
- The less the ambiguity, the more trustworthy the method was in the hands of non-experts.
- 🗯 Language should be clear.
- 🗯 Well defined inputs and outputs.
- 🗯 Avoid doing the same thing in different places.