computational thinking1
イギリスの教科コンピューティングでは,コンピュテーショナル・シンキングの育成が重要です。それはどういうものなのでしょうか。
コンピュテーショナル・シンキングは,

  • 技能:コンピュータ等を活用した問題解決の定式化,データの論理的構成と分析など
  • 態度:複雑さを処理する自信,難しい問題に取り組む根気強さなど
  • 思考・表現抽象化アルゴリズム設計など

で構成されます。

単に,プログラムを作るときに発揮されるものではありません。生活のあらゆる場面の問題解決に生かせるものです。

本稿では,コンピューテーショナル・シンキングの中身について考えます。






1 教科「コンピューティング」の核「Computational thinking」

イギリスでは,プログラミング教育の内容として,教科「コンピューティング」を取り入れています。

このことは,ナショナルカリキュラムで示されています。

コンピューティングでは,Computational thinking の育成が中心です。

コンピューティングのねらいをつかむためには,Computational thinking の意味を明らかにする必要があります。

そこで本稿では,Computational thinking とは何かを Google for education の資料をもとに考えていきます。

2 Computational thinking の日本語訳

(1)「Computational thinking」の訳語

Computational thinking の日本語訳については,中島秀之氏(公立はこだて未来大学)が「計算論的思考」と訳しています。

Jeannette M. Wing(Microsoft Research and Carnegie Mellon University)の講演内容を翻訳した際に,「計算論的思考」と命名しています。

また,次のように,その他の訳語についても所感を述べています。

以下は,英語の語感をとらえる参考となります。

英語の“compute”の語感は日本語の計算よりは広範囲を指し示すように感じている。日本語としては情報を操作する感覚に近いものである。しかしながら,“computer”には計算機という定訳があり,いまさら情報処理装置と呼ぶわけにもいかない。悩んだ末,“compute”は「計算する」,“Computational thinking”は「計算論的思考」と訳すことにしたが,それ以外の“computer”は「コンピュータ」とした。ゆえに,“computer science”は「コンピュータ科学」,“computer scientist” は「コンピュータ科学者」とした。

中島秀之「計算論的思考」2015年1月14日, [online]https://www.cs.cmu.edu/afs/cs/usr/wing/www/ct-japanese.pdf(参照2017/05/01)

この訳語の「計算論的思考」については,プログラミング教育が語られている現在,協力者会議の答申にも登場していません。

このことから,まだ定訳となってないと考えられます。

協力者会議の答申では,「プログラミング的思考」という言葉を用いています。それとComputational thinking との関係も述べられていません。

これらから,本稿では混乱を避けるため「コンピュテーショナル・シンキング」と表記することとします。

音をカナカナに直しただけですが,英単語より読みやすいという理由からです。

(2)訳語の定義の仕方,考え方

① 参考となる中島氏の思考の流れ

Computational thinking の訳語については,訳語を決めていく経緯を中島氏が説明されています。大変参考なります。

中島氏が,訳語を考えるに当たっては,定訳となっている言葉を基に,新しい言葉を約束しています。

この考え方は,演繹的・統合的思考です。まさに,研究者らしい定義の仕方です。

筆者は,Computational thinking をコンピューター的思考としました。

「-tional」の形容詞の語感を「的」とし訳したのです。

ただ,これは「コンピューター」の部分が明らかになっていません。

中島氏はこれを「計算論」と訳されました。

「計算的」思考ではなく「計算『論』的」思考です。

「計算論的思考」とすれば,単なる箱物のコンピューターの思考にとどまりません。

学問としての体系から見た思考方法と広がりが読み取れます。

② コンピュテーショナル・シンキングに含まれるプログラミング的思考

コンピュテーショナル・シンキングは,問題解決能力やコミュニケーション能力なども含んだ範囲の広い考え方です。

一方,プログラミング的思考は,プログラムをつくる過程で発揮する考え方等です。

そうすると,答申で示されたプログラミング的思考は,この中に含まれると考えられます。

③ 一意対応が必要な研究的言葉

言葉の意味が一意対応していると,コミュニケーションはスムーズにとれます。

同義語と思っていたコンピュテーショナル・シンキングとプログラミング的思考とは,包含関係にありました。

研究を進める上で,言葉の定義を明確にすることは重要です。

今回,そのことをあらため実感しました。

なお,本文は下記に示している通り,Google for education からの引用です。

翻訳にはGoogle翻訳を利用しています。

筆者には,正誤の判断のできない訳があり,誤訳の可能性があります。部分的に筆者が若干の知識を交えて加筆修正もしています。そのため,原文も併記します。

3 Computational Thinking

CT Overview

Computational Thinking (CT) is a problem solving process that includes a number of characteristics and dispositions. CT is essential to the development of computer applications, but it can also be used to support problem solving across all disciplines, including math, science, and the humanities. Students who learn CT across the curriculum can begin to see a relationship between subjects as well as between school and life outside of the classroom.

CT involves a number of skills, including:

  • Formulating problems in a way that enables us to use a computer and other tools to help solve them
  • Logically organizing and analyzing data
  • Representing data through abstractions such as models and simulations
  • Automating solutions through algorithmic thinking (a series of ordered steps)
  • Identifying, analyzing, and implementing possible solutions with the goal of achieving the most efficient and effective combination of steps and resources
  • Generalizing and transferring this problem solving process to a wide variety of problems

These skills are supported and enhanced by a number of dispositions or attitudes that include:

  • Confidence in dealing with complexity
  • Persistence in working with difficult problems
  • Tolerance for ambiguity
  • The ability to deal with open ended problems
  • The ability to communicate and work with others to achieve a common goal or solution

CT concepts are the mental processes (e.g. abstraction, algorithm design, decomposition, pattern recognition, etc) and tangible outcomes (e.g. automation, data representation, pattern generalization, etc) associated with solving problems in computing. These include and are defined as follows:

  • Abstraction: Identifying and extracting relevant information to define main idea(s)
  • Algorithm Design: Creating an ordered series of instructions for solving similar problems or for doing a task
  • Automation: Having computers or machines do repetitive tasks
  • Data Analysis: Making sense of data by finding patterns or developing insights
  • Data Collection: Gathering information
  • Data Representation: Depicting and organizing data in appropriate graphs, charts, words, or images
  • Decomposition: Breaking down data, processes, or problems into smaller, manageable parts
  • Parallelization: Simultaneous processing of smaller tasks from a larger task to more efficiently reach a common goal
  • Pattern Generalization: Creating models, rules, principles, or theories of observed patterns to test predicted outcomes
  • Pattern Recognition: Observing patterns, trends, and regularities in data
  • Simulation: Developing a model to imitate real-world processes

Google for education”Exploring Computational Thinking  breadcrumbCT Overview”, [online]https://edu.google.com/resources/programs/exploring-computational-thinking/#!ct-overview(参照2017/05/01)

4 コンピューテーショナル・シンキングのとらえ

(1)技能

コンピュテーショナル・シンキングは,問題解決過程で発揮されるものです。

プログラムの開発ばかりでなく,数学,科学,人文科学などのあらゆる分野にわたって問題解決を図る手段となります。

カリキュラムを通して学べば,教室の外の学校と生活の間だけでなく,教科間のつながりを考えることができるようになります。

コンピュテーショナル・シンキングには,次のような技能があります。

  1. コンピュータ等を活用した問題解決の定式化
  2. データの論理的構成と分析
  3. モデルやシミュレーションなどの抽象化によるデータの表現
  4. アルゴリズム的思考による解決の自動化(一連の手順)
  5. 手順とリソースを最も効率的効果的に組み合わせる解決策の特定,分析,実施
  6. 問題解決過程の一般化転移

(2)態度

上記の技能は,次のような態度によって支えられ高められます。

  1. 複雑さを処理する自信
  2. 難しい問題に取り組む根気強さ
  3. あいまいさに対する耐性
  4. きまった答えのない問題対処する能力
  5. 共通の目標や解決策を達成するコミュニケーション能力行動力

(3)思考・表現

コンピュテーショナル・シンキングの概念は,コンピューティングの問題を解決することに関連する思考と表現で構成されます。

思考は,抽象化,アルゴリズム設計,分解,パターン認識などです。

表現は,例えば,自動化,データ表現,パターンの一般化などです。

これらには,以下が含まれ定義されています。

  1. 抽象化: 主要なアイデアを定義するために関連情報を特定して抽出する
  2. アルゴリズム設計:類似の問題を解決するため,またはタスクを実行するための一連の命令を作成する
  3. 自動化:コンピュータや機械に繰り返しの作業をさせる
  4. データ分析:パターンを見つけたり洞察を深めたりしてデータを理解する
  5. データ収集:情報の収集
  6. データ表現:適切なグラフ,図表,言葉,または画像でデータを描き,整理する
  7. 分解:データ,プロセス,または問題を小さく管理しやすい部分に分割する
  8. 並列化: より大きなタスクからより効率的に共通の目標に到達するための小規模なタスクの同時処理
  9. パターンの一般化:予測された結果をテストするために,モデル,ルール,原則,または観察パターンの理論を作成する
  10. パターン認識:データのパターン,傾向,規則性を見出す
  11. シミュレーション:実世界のプロセスを模倣するモデルをつくる
イギリスでは,コンピューティングを教科とし,Computational thinking の育成を中心としています。それは,以下で構成されます。

  • コンピュータ等を活用した問題解決の定式化やデータの論理的構成と分析という技能
  • 複雑さを処理する自信,難しい問題に取り組む根気強さという態度
  • 抽象化やアルゴリズム設計という思考・表現

単にプログラムを作るときに発揮されるものではなく,生活のあらゆる場面の問題解決に生かせるものです。

Google for education”Exploring Computational Thinking  breadcrumbCT Overview”, [online]https://edu.google.com/resources/programs/exploring-computational-thinking/#!ct-overview(参照2017/05/01)