ゆうなんとかさんの雑記帳的な。

Twitterで踊ったり音ゲーしたりしてるあの名前がよくわからない人が書いてるらしいよ。

初級者向けの勉強会をすることになりそうです。

あるところから「ちょっとやってみたほうがいいんじゃないかな」って話があったので、ネタ出しも兼ねて簡単に企画をしてみます。今回TAをやっていた授業を参考にしつつ、さくっと書いて見ました。

対象者

タイトルにもある通り、プログラミングの初級者です。具体的には、私の通っている大学に入学してから、1年から2年くらい演習でプログラミングをしたものの、置いてけぼりを食らってあまり良くわかってない感じの人を対象とします。ひとつ以上のプログラミング言語の、

  • 変数の宣言
  • 制御構造の構文
  • 関数

くらいは何も見ずに書くことができるという想定しています。なので全くわかっていない人については個別指導でフォローすることになります。

目標

  • コメントも含めた70行くらいのソースコードをさくっと書けるようになる

私が前期にTAをしていた授業よりも少し長いくらいのコードは読み書きできるようになったらいいなと思います。すくなくとも2年の少し難しい演習問題でなんとか可は取れるくらいになってほしいです。万が一それが無理だとしても、コンピューターとお話する抵抗感が少しでも緩まってくれればよしとします。
ただ、あまり無理ができない人が多いようなので、実際は大幅に予定が狂うかもしれません。様子を見つつレベルを調整する必要がありそうです。
それとなく遊べる簡単なプログラムが組めるレベルに到達してくれれば発表会をしたいなとも思っていますが、これは無理かもしれません。

進め方

まずテーマを説明した上で問題を見せ、どう解決するか考えてもらいます。それから、実際にコードに落としこむというプロセスを踏むようにするといいかなって思います。PCを触りたい人には退屈かもしれませんが、この前の記事の通り、考える癖をつけるのは重要だと思うので。
コーディングの最中は私も含めた指導者が回って、適宜質問の受け答えやデバッグの手伝いなどをします。
言語はC言語になると思いますが、私自身あまり見たくないぱっと書いてぱっと結果を表示させることでサイクルを早めたほうが良さそうだなと思ったらインタプリタ系の言語を使うのもありでしょう。GUIアプリが組みたいという話になるのであればイベントドリブンなプログラムを組みやすいVisualBasic.NETか、のちの演習でお目にかかるJavaを使ってもらいましょう。

問題の内容

大きい問題を解くために必要な問題をいくつか作っておきます。はじめのうちは簡単に、でも少しずつ難しく。コードを積極的に再利用するような問題を考えたり探してきたりしたいと思います。例えばこんな感じに。

  • 以下の関数を用いて、任意の日からある日数だけたった日を求めるプログラムを作りなさい
    • 与えられた引数の年がうるう年かどうか判別する関数を作りなさい
    • 与えられた引数の月が大の月か小の月かを判別する関数を作りなさい

ついでに教えたいこと

プログラミングをする上で役に立ちそうなものをバシバシ覚えてもらいます。なるべくキーボードにかじりつけるようになってくれればいいなって。コーディングの最中や、それとはまた別にちょっと時間を設けて紹介するようにしたいところです。

今のところ思ったことを書きなぐっただけなので、ツッコミどころは多々あると思います。少なくとも話を持ちかけてきた人は協力してくれると期待して、もう少し相談を重ねて調整してみようと思います。