プログラミング教育における課題

プログラミングの講義を行う上で,なぜ学生ができないのかについての意見をまとめていこうと思ってます.
8
IGAKI Hiroshi @hirocell

その他の仮説や,できない学生事例みたいなのがあればコメントおまちしてますー.とりあえずとぅぎゃっておこう.

2010-07-09 12:23:18
IGAKI Hiroshi @hirocell

@yonaga 意外と(でもないか)難しいよね.ホワイトボードの前で,今からCでクイックソートを行うプログラム書いてっていわれて書ける人は普通に凄いと思う.

2010-07-09 12:25:07
@shinsuke_mat

@hirocell 仮説7 授業が悪い.もしくはカリキュラムが悪い.例のJava,OO覚え立ての学生にデザパタ教えるとか.学生「再利用?保守性?あうあうあー^p^」

2010-07-09 12:50:48
IGAKI Hiroshi @hirocell

@shinsuke_mat あるあるww 課題としては教員が前提とする知識と学生が持っている知識の乖離,かね.->結果として悪いカリキュラム,授業ができてしまう,と.

2010-07-09 12:53:20
@shinsuke_mat

@hirocell 最近「課題」の弊害ってのがある気がしてて,「課題を解けた」から「授業を理解できた」って誤解するケースが多い. この2つってほとんどの場合一致しないんだよなー. 授業の本質を理解せずとも推論とか改変だけで解ける課題ってのが悪因の一部なんだけろうど

2010-07-09 13:03:30
Kyohei FUSHIDA @kyoheif

プログラミングにおけるイディオムは,それを構成する個々の要素の意味がわかってから教えるべきものであって,そこをちゃんと教えず「おまじない」だの「定型文」だの言うのは止めて欲しい.それは怠慢だ.

2010-07-09 13:06:30
@kyoheif

ごちゃごちゃ文法レベルの話をする前に,ひとまず「逐次」「

2010-07-09 13:07:52
Kyohei FUSHIDA @kyoheif

ごちゃごちゃ文法レベルの話をする前に,ひとまず「逐次」「分岐」「繰り返し」の概念をたたき込んであげる必要があると思っている.そういう意味でフローチャートを使ってのお絵かきは有効かも.

2010-07-09 13:08:57
Kyohei FUSHIDA @kyoheif

そういや学部2年の時に受けてたデータ構造とアルゴリズムの授業,期末試験問題は「クイックソートのアルゴリズムを説明せよ」だった.もちろんペーパーの試験です.

2010-07-09 13:13:22
Kyohei FUSHIDA @kyoheif

@hirocell 教える方に問題がある場合も割と多いと思います.あと教科書がクソだったり.学部の時授業で使っていた教科書は,何をどう見ても間違っており,後日ぼっこぼこに叩かれていることで有名な教科書だということを知りました.http://bit.ly/aXY4sN

2010-07-09 19:25:18
Kyohei FUSHIDA @kyoheif

今日学生と話していて,「入学したときはプログラミングとかできるようになりたかったのに,授業がさっぱりわからなくてついていけなくなった」と言う4年生がいた.うーむ,やはりどこでわからなくなるかの分析は重要だと思う.

2010-07-09 19:31:05
Kyohei FUSHIDA @kyoheif

@YKoriyama 難しいところですが,講義によって興味を失わせている結果となっているのなら,それは何か申し訳ない気が(自分が教えているわけではないですが)します.もちろん,自学自習も重要なのですが,我々教員はおもしろいと思ってもらえるキッカケを与える仕事だと理解しています.

2010-07-11 00:30:10
koji-to @SavaMiso

昨日TLに流れてたプログラムの授業についての事をうだうだ考えてたら,なんか思考が明後日の方に飛び始めて脳汁出てきたので空気読まずに延々他人様のTLを埋めるよ!よ!

2010-07-11 03:36:03
koji-to @SavaMiso

俺は,プログラミング初学者向けには「いいから暗記しろ」を最上とするスタンスを取る.これは,新しい分野の勉強を始める上では暗記しなけりゃ話を始めることすらできないと考えるため.例えば国語は50音を暗記しなけりゃはじまらないし,数学は1+1=2を暗記しなけりゃはじまらない.

2010-07-11 03:39:40
koji-to @SavaMiso

注:こっからすごい勢いで話が逸れます.んでそうすると暗記するよりも理解した方が云々,という意見が出てくるんだが,じゃあお前は1+1=2を説明できるのかと問いたい.1+1=2を説明するためには,まず1と2の概念を説明する必要があるんだが,この時点で凶悪にめんどくさい.

2010-07-11 03:41:34
koji-to @SavaMiso

まず良くあるパターンが「ここにリンゴが1つあります」で始まるアレだが,そのリンゴを厚さ0のナイフで切ったら2になり,さらに分子間を強制的に結合する接着剤でその断面を貼り合わせたらまた1になるため,1=2=1とかいう訳の分からん式が成立してしまう.

2010-07-11 03:43:21
koji-to @SavaMiso

それを避けるためにはまず事象の抽象化の話をする必要がある.多分この時点で意味論とか概念論(イデア論だっけか)とかその辺の説明をせにゃならん.で,それができてようやく1の存在の説明が終了だ.次に1と2の間隔が1と0の間隔に等しいことを説明する必要が発生した.

2010-07-11 03:46:22
koji-to @SavaMiso

この場合にはまず2者の間隔が,4つの尺度(比尺度とかのアレ)に分けられることを説明した上で,さらに0の説明だ.0の存在を証明しないと0と1の間隔と1と2の間隔の説明がそもそも不可能だ.そういうわけで0という「存在しない事象」を説明するとかいう最悪にややこしい問題が発生する.

2010-07-11 03:48:58
koji-to @SavaMiso

で,これを乗り越えてようやく1+1=2だ.もしかしたら加算と等しいという概念についても説明がいるかもしれんが.んで,それでできるのは多分「=9」までなんだよな.二桁以上になったら今度は十進数と桁上がりの概念についての説明が必要になるから.

2010-07-11 03:51:15
koji-to @SavaMiso

んでここまでの説明ができるようになったとして,それを小学1年生に理解できるように翻訳できるか馬鹿!!!そういうわけで,プログラムに限らず初学者には「いいから暗記しろ」が最適解ではないかと思うのですよ.そしてここまでで俺が凄く満足しててもういいや感が漂ってるのをどうしたもんか.

2010-07-11 03:52:55
koji-to @SavaMiso

そういやテッド・チャンの「貴方の人生の物語」にその辺の話が一瞬出てきたな.1+1=2を証明しようとしたが本が一冊書けたとかいうのが.実在するのかどうかから一回調べてみよう.

2010-07-11 03:55:03
koji-to @SavaMiso

んーで,まあ,なんだ,プログラミングにおける教育について議論する場合の問題の一つは,どうしても各自の主張が自分の勉強過程に左右されるって点にあるような気がすんだよな.まーそもそもプログラミングの教育手法が確立してない以上しょうがねえんだが.

2010-07-11 03:59:44
koji-to @SavaMiso

俺の場合はC言語の「関数」が数学の「関数」と同一だと気づいた瞬間に,凄い勢いで色んなことが腑に落ちたんだが,それを微分も分からん某大学の学生に言っても伝わる気がしない.ただ,そういう「腑に落ちる」瞬間を引っ張り出すためには,その部分が記憶に残ってるってのは最低条件だと思うわけだ.

2010-07-11 04:03:41
koji-to @SavaMiso

そういうわけで「暗記しろいいから暗記しろ.ついでに授業時間中に課題をやれ.相談は禁止だ.質問も原則禁止だ.時間内にできなかったら単位は出ない.これ必修だから落としたら留年な.下駄履かせる?何それおいしいの?いいから半泣きになってもやれ」が個人的至上.現実には不可能だろうけども.

2010-07-11 04:08:07
IGAKI Hiroshi @hirocell

今期のプログラミング講義ではいくつか今までやっていなかったことをやってみたんだが,期末試験の結果それなりに効果が上がったことが分かった.一応整理してみる. #education

2010-08-11 19:13:33