プログラミング的思考

Computational Thinkingとは何かによると、その手順は、以下の通り。
1. Decomposition(問題の分解)
2. Pattern Recognition(パターンの発見)
3. Abstraction(抽象化)
4. Algorithm Design(手順化)

たとえば、以下のようなブロックを作るとして、

画像1

シンプルな問題なので、特に分解するほどではないので、パターンの発見からいうと、「同じ色のタイルが横に4つ並んでいて、それが4行ある」、または、「色の違うタイルが縦に4つ並んでいて、それが4列ある」というパターンを発見することができる。

抽象化ということでいうと、このタイルの並びを実現するには、要素は以下の3つで、その繰り返しで実行できることがわかる。
(1)タイルの色を決める
(2)タイルを置く
(3)移動する

アルゴリズムでいうと、例えば、色を変数で持つとすると、
(1)変数colorに色をセットする
(2)タイルを置く
(3)右に移動する
(4)(2)〜(3)を4回繰り返す
(5)(1)〜(4)を4回繰り返す

for文をネストするイメージですね。
このプロセスを考えるときに、フローチャート図を描いたりすろうと可視化できてよいですね。

こうしたプロセスを、日常的なプロセスに適応できるようになることが、Computational Thinkingやプログラミング的思考を学ぶということ。

例えば、探求学習をするときに以下のようなプロセスで学ぶということになっています。
(1)課題の設定
(2)情報の収集
(3)整理・分析
(4)まとめ・表現

本来は逆で、あるテーマについて探求活動を行いながら、そこからこういうプロセス(アルゴリズム)に気づいて、それを自分の中のメソッドとして再現できるようになるという形で学べると良い。

ちなみに、科学的研究でいったら、以下のようなプロセスもある。
(1)先行研究の調査
(2)課題設定と仮説立案
(3)仮説検証方法の立案
(4)実験の実施

本を読んでも身につかない人は、情報収集や先行研究の調査を一生懸命やるけど、その先のプロセスにつながっていかないということなんだろうと思います。その後、仮説を立てて、検証方法を考えて、実験して確かめるということをやらないと、いつまで立っても身につかない。そういうことを学生のうちに学んでおくと、どんな仕事についても役に立つ。

Computational Thinkingとは何か
https://tannomizuki.hatenablog.com/entry/2016/10/18/125818

計算論的思考 - Carnegie Mellon School of Computer Science
https://www.cs.cmu.edu/afs/cs/usr/wing/www/ct-japanese.pdf

Computational Thinking
https://www.computationalthinkers.com/classes/our-classes/computational-thinking/

ちなみに、抽象化の概念はわかりにくいが、以下の表現がわかりやすい。

Abstraction: modeling, decomposition, and generalizing
A key challenge that is addressed in computational thinking is the scale and complexity of a problem. The main technique used to manage this complexity is abstraction. Complexity is dealt with by hiding complicated details behind a simple abstraction, or model, of the situation. For example, a map of a train system is a simple model of a complex reality — but it is a model that contains precisely the information necessary to plan a route from one station to another.
Computational Thinking
https://www.computationalthinkers.com/classes/our-classes/computational-thinking/


この記事が気に入ったらサポートをしてみませんか?