関数定義周りで戸惑ってる学生もいるし、デバッグ実行不要なぐらい理解してる学生もいる

Share on:

プログラミング1もそろそろ終りが見えてきました。重要項目はdict型・バージョン管理あたりか。例外処理・関数オブジェクトあたりは後期にやるだけでも良いかなと思わなくもない。どちらかというと、もう少し復習兼ねたペアプロ演習の時間を取ったほうが良さげな気がする。解説聞くだけじゃ使えるようにならないし。

例えば、未だに return が分からず、

def hoge():
    return 1

def fuga(): print(1)

の違いがしっくり来てない学生がいます。説明はしているし、課題としてもやらせてるけど、まだゼロにはなってません。そこを別視点から理解させるつもりでユニットテストも教えているのですが、ここにきてようやく「違う」ことに気づいて、戸惑ってる(まだ理解にまでは至っていない)ようです。

他にも、

  • 関数の仕様として引数・戻り値指定しても、無視(?)したコードを書いて次に進み、辻褄合わなくて悩む。
  • 関数定義しただけのスクリプトファイルを実行しても、何も結果が出力されないことに悩む。
  • 不等号で数値比較できることは分かってても「処理結果が0〜100の範囲にあることを確認する」ことを想像できない。

とかとか、いろいろあって楽しいです。「はじめてのプログラミング」だし、いろんなケースに遭遇して、デバッグできるようになろう。

P.S.
デバッグ実行してる学生どのぐらいいるかアンケートとってみたところ、

  • 今のところ理解できてるので、デバッグ実行しようと思ったことがない。: 12.5% (8人)
  • 理解できないコードがあるが、デバッグ実行したことはない。: 51.6% (33人)
  • 1,2回ぐらい試したと思う。: 31.3% (20人)
  • 読めないコードがある都度試している。: 4.7% (3人)

でした。わからない人ほどデバッグ実行しようよ〜。(と、理由付きで伝えておきました)