あるくテック

「分かる」をつくりたい。

プログラミングの授業で大切にしていること

なぜプログラミングの授業は難しいか

今回は、プログラミングができるようになる授業とはどのようなものなのか、そしてそのためにどんな工夫をしているのかについて書いてみました。

まず、プログラミングを身に付けるために必要なものは何でしょう。

必要なのは、知識と考え方の両方

プログラミング言語の文法をただ覚えるだけでは、残念ながら自力でプログラミングできるようにはなりません。

英語を学習する場合に似ています。学校で単語や文法を覚えても、誰もが英語ですらすらと会話できるかというとそうではありません。話したい日本語をどう英語に直すのか、英語で表現するための考え方を身に付けて初めて、覚えた単語や文法を使うことができます。

画面上のキャラクターをクリックしたらジャンプするようにしたい。そのアイディアをプログラム言語で記述するには、プログラミングにおける「考え方」を身に付ける必要があるのです。

体験を通して初めて身に付く

プログラミングの勉強を、跳び箱の練習に例えてみます。

まず跳び箱を飛ぶ手順を確認しましょう。かなりおおまかですが、「走る」「ロイター板でジャンプ」「手をつく」「足を開く」「着地」といった感じでしょうか。

では、このような手順をもっと具体的かつとても分かりやすく紙に書いて跳び箱説明書を作ります。そして跳び箱を一度も飛んだことのない人に手順書を読んでもらったとして、その人は「飛べる人」になったといえるでしょうか。

実際には体育館で跳び箱を飛んでみて、もしできなかったら何度か練習して感覚を掴み、そこで始めて「飛べる人」になります。それが跳び箱を飛ぶことを『理解できた』ということだと思います。

プログラミングも実際に練習すること、試行錯誤してみる過程が非常に大切です。サンプルプログラムを見ながらただ入力してプログラムが動いたとしても、理解したとはいえず自力でできない段階に止まっているケースがほとんどです。

授業中の失敗を恐れない

授業では実際に自分の力でプログラムを書く体験を繰り返しながら、考え方を理解することを目指しています。しかし授業に後ろ向きな学生には、プログラミングに興味が持てない、強い苦手意識がある、などの課題があります。

かつては、授業で扱う教材プログラムを学生の興味の沸く面白いものにしようと工夫していました。もちろん今でもそれは続けていますが、それだけでは不十分です。どんなに面白いものでも、抵抗感を取り除かなければなかなか十分には試行錯誤できず力がつかないのです。

再び跳び箱の授業に例えてみます。もしも跳び箱の授業中にも関わらず全くチャレンジしなかったらどうなるでしょう。練習の機会が失われ跳び箱を飛べるようにはなりません。そしてそのときの生徒(または学生)はどんなことを考えているでしょうか。

「飛ぶのは怖い」

「怪我したら嫌だ」

「カッコ悪いところをクラスメイトに見られるのは恥ずかしい」

 そんな感じなのではないでしょうか。

プログラミングでも、周りを気にしたり失敗を恐れていると、一番肝心の試行錯誤をしないまま、結局は理解できないままになってしまいす。

授業で試みていること

授業としてプログラミングを学ぶとき、講義だけでなく実習がより重要で、かつ実習においては主体的に思考錯誤できているかどうかがカギになります。

実際にどんな授業を行っているかについては、今回は概要を述べるに止まりますが、まず特に力を入れているのが次の3点です。ただ上手くできているとは言えずまだまだ勉強中です。

試行錯誤できる授業に求められること

  1. 心理的な安心安全(周りを気にせず取り組める)
  2. スモールステップ(着実な理解)
  3. 効率が良く負担の少ない実習環境(考えることに集中できる)
1.心理的な安心安全

心理的な安心安全については、Googleの研究結果を根拠の1つとして説明しています。生産性の高いチームが持つ特性として挙げられた5つは

  1. 信頼性
  2. 構造と透明性
  3. 意味
  4. 影響
  5. 心理的安全性

です。

www.lifehacker.jp

授業でも各自の活動がより生産性の高いものとなるよう、構成的グループエンカウンターなどで信頼関係作りや安心安全な授業作りに取り組んでみています。これは学習効果を確実にするための学び合い(アクティブラーニング)の基盤作りでもあります。

2.スモールステップ

出来るところから積み上げていくこと、そして復習の機会も意識したスパイラルカリキュラムを目指しています。着実に理解しながら進むことで自信がつくため学習意欲の向上にも繋がります。

3.効率が良く負担の少ない実習環境(考えることに集中できる)

プログラミングにおいてあまりに覚える要素が多いと試行錯誤する前に挫折をするかもしれません。できる限り負担の少ない実習環境で授業を行い、同時に学生へのまたは学生同士のサポートも行いやすいようにしています。

実際の様子は、こちらの記事をご覧ください。

arukutech.hatenablog.com

その他配慮していること

学び合い(アクティブラーニング)

基礎知識の理解のために今年度から取り入れています。安心安全な授業であれば、お互いに助け合いながらより成長できます。また、話を聞くだけでは覚えないこと、話すことの大切さも伝えています。

ガイダンス

初回の授業でできる限り丁寧にガイダンスを行います。目的を学生と共有することで私と学生との信頼や学生同士の協力関係の基盤作りができると考えています。「安心安全な授業」を目指すこととその目的を私なりに明確に伝えます。

臨床心理学(カウンセリング)との関わり

授業はカウンセリングと通ずるものがあると考えています。

現在代表的な臨床心理学者カール・ロジャーズによる来談者中心療法の考え方では、カウンセラーとの信頼関係や、そしてカウンセラーによってあるがままに受け入れられているという心理的安全を得ることで、クライエントが自身の問題に向き合い解決し始めるとされています。

授業でも、特にこれまで苦手だったことを克服しようとする場合には、安心安全な授業やその基盤となる信頼関係は欠かせないと思います。プログラミングを単に覚えるのではなく、苦手を克服し成長する場にできたら本当に嬉しいです。

その上で気を付けている点をいくつか書いておきます。

学生を非難しない

学生の間違いや分からないところは当然教えます。

ただし、学生ができないことを非難するのは授業にとってマイナスにしかなりません。「先生に叱られたことで発奮して頑張る」ことを期待して言う場合もあると思います。ですがそれが成功する割合を考えるととても不確実な賭けだということを、「学び合い」の勉強などを通して気付かされました。かつて私は授業の中で至らぬこともたくさん言ったと思います。今でもとても十分とは言えませんが非難することは安心安全な授業には決して繋がらないと信じています。

カウンセリング・マインド

教育学では、臨床心理学でいうところのカウンセラーの三条件(ロジャーズ)である、受容・共感・自己一致に相当するものとして、カウンセリング・マインド(受容・共感・傾聴)があります。学生との信頼関係作りや、授業環境作りのために心がけるようにしています。

今後の授業では

より一層学生の成長を引き出す授業づくりのために、これからは授業の記録方法などを勉強し、振り返りに役立てて行きたいと考えています。授業は本当に奥が深いです。

 

よかったらフォローお願いします

励みになりますので、よかったらフォローやいいねをお願いします。