わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

プログラミング学習は,成功体験・問題解決・真理探究の3点セットで

4月で2年または3年に上がり,前期にプログラミング科目を履修することになる,大学生のみなさんへ.
新たな科目では,それまでと同じPCであっても,プログラミング言語や開発環境が変わったりするかもしれません.変わらない場合には,課題がもっと高度なものになるはずです.
先生方の期待も,高まります.とくに情報系の学科などでは,卒業までに身につけてほしい知識・能力を指導する科目が,2〜3年次に集中します.また研究室で,学生を受け入れることも意識します.実際,「研究室に来た学生はプログラムが書けない」と愚痴をこぼす先生もいらっしゃいます.
学生からすると,面倒な話あるいはピンチに見えて,これはチャンスなのです,研究室配属の際(先生が,面談やそれまでの成績をもとに,配属の可否を決める方式であればですが),プログラミングの能力や実績をアピールすれば,講義科目の成績面の不安をカバーできることもあるからです.
2年や3年で,より高度な課題を進めていくにあたって,心に留めておいてほしいことを,これから書いていきます.
計算機室(演習室または実験室でしょうか)にて,先生方の解説もあるかもしれませんが,1年生の科目よりもその頻度・時間は減少することになり,多くの時間は自分で手を動かし,「問題解決」をすることが望まれます.仕様を満たすコードを完成させ,提出すれば,1件の「問題解決」です.
しかしながら,仕様を完全に満たしていないだとか,コードが汚い(インデントに一貫性がないなど),グローバル変数を使用しているといった理由で,再提出を指示されるかもしれません.そのときは素直に従い,次の課題では細心の注意を払うとしましょう.
「同じミスを2回する」ことは,大学の先生も,会社に入って先輩・上司からも,叱られたり,「こいつは使えん奴だ」と思われたりします.どんなミスをしたか,そしてどのように解消したかというのは,ノートに手書きするか,またはテキストエディタで記録しておき,後日に見直せるようにしましょう.
さて,授業や,プログラミング学習に話を戻しまして,先生の言われた通りに「問題解決」をしていればいいのか,というのも,気になるはずです.もちろん課題を期限内に終える(答案,おそらくプログラムコードを提出する)ことは,合格点を取るために,大事な活動です.そして,それ以外のことにも,目を向けてみましょう.
ここまで何度も「問題解決」と書いてきましたが,授業で与えられた1つの課題を終えるまでに,細かな作業に分かれるのが一般的です.
テキストエディタまたは統合開発環境を開いてファイルを編集できるようにし,サンプルコードがあればそれを一度実行してみたり,なければ新規に作成したりすることになります.
自分で書いたコードが一発で動くことは,なかなかなく,エラーメッセージを見て修正したり,エラーが出ないけれども結果がおかしなときは,どこが原因か考えて,バグを退治したりする必要もあります.
そう書いてみると,プログラミングというのは面倒なこと,ゴールが必ずしも見えない活動のようにも思えてきます.
ここで発想を転換して,「成功体験」を積み重ねるのはどうでしょうかと,提案します.
サンプルコードが実行できれば,一つの「成功体験」です.手を加えたコードが,思うように動けば,これもまた「成功体験」です.
エラーが出たり,思うように動かなかったりしても,「成功体験」と考えるのです.「失敗は成功の母」なのです.
そういうふうに考えると,1つの課題達成(問題解決)は,多数の成功体験で構成される,と言うことができます.おそらく1回の授業で数十個,15週だと,人によっては千を超える「成功体験」をすることにもなると思います.
「問題解決」の先にも,目を向けてみます.なぜその課題を実施したのかを,単位や成績のためというのでもなく,先生方の事情ではなく,自分はどうなのかという視点で,見直してみるわけです.
その際のキーワードとなるのが「真理探究」です.
アルキメデスが「ヘウレーカ!」と叫んだような,壮大なものでなくてかまいません.「こういうときにはこうすればいいんだ」という知識を,自分の中で作ることが,「真理探究」の基本的な営みとなります.
ところで,コンピュータやプログラミングにおける「真理」とは,何でしょうか? 情報科学情報工学に携わる人々みんなが同意する命題,あるいは探し求めるゴールが,あるのでしょうか?
これについては,「コンピュータが,我々の生活を豊かにする」というのを設定したいところです.
もし情報系以外に所属していて,コンピュータやプログラミングを,道具として使用する(単位のため授業をとる)のであれば,「○○は,コンピュータを活用することで,我々の生活を豊かにする」に置き換えてください.
画面とにらめっこしながら,私もあなたも一時期に苦労してプログラムを書き,たびたび失敗してときには成功することで,あなたも私も大学において,生活を豊かにしてくれます.
野心を持って,あるいはささやかな好意として,自分が作ったプログラムなどを世に示し,運(タイミングも)によって多くの人に利用されれば,その人々の生活も豊かになります.成果を論文として出せば,読者は幸せになれます(卒業論文だって,指導教員や家族が見れば感慨深いのです).特許になれば,短期間では企業などを潤し,長い目で見れば産業発展の一助となります.
と,大風呂敷を広げてみましたが,「真理探究」して何らかのこと(「知見」とも呼ばれます)を得るのは,毎日毎日というわけにもいきません.プログラミングの授業で,考察せよという課題が入っていても,答案に書いた「知見」は,課題に限定されたものであり,それを「真理」と言うにはふさわしくないかもしれません.
思うに,「真理探究」の頻度は,「問題解決」よりも,少なくなってもかまいません.
そして「成功体験」が最下層,「問題解決」が中間層,「真理探究」が最上位層となるような,ピラミッド型をイメージして,授業に限らず,プログラミングをしていくことを,おすすめしたいと思います.
このピラミッド型は,プログラミングあるいは何らかの活動における「頻度」の違いです.「成功体験」がもっとも多く,「真理探求」で適切な「知見」を得る機会は少なくてもよいのです.
別の見方として,円を描いてその円周上に「成功体験」「問題解決」「真理探究」を配置し,相互につながっているという見せ方も,可能だと思います.真理を得ることは,壮大な成功体験なのです.
ピラミッドと別に,「成功体験」「問題解決」「真理探究」を縦に並べ,例えばその左には,「自分にとっての」成功体験・問題解決・真理探究を,右には「自分の外の」成功体験・問題解決・真理探究を書くことも,可能です.「できた!」という叫びを通じて,自分の成功体験を,教員・ティーチングアシスタントや,クラスの他の学生に伝播することとなります(逆もあるでしょう).問題解決と真理探究についても,同様です.