「新卒向けカリキュラムを考え中」の話ですが、始めることにしました。受講者がまじめにノートをとれば、ぼくが死んだら、ソシュールのように受講者が講義ノートを元に出版してくれるでしょう。
講義を聞くだけでプログラマにはなれないので、毎回課題を出す予定です。とりあえず手を動かすのは重要です。写経(コードの書き写し)でもいいから手を動かすべきです。次の課題を出す予定です。
基礎
– リンクトリスト
– ハッシュマップ
– ツリー(binary, B-tree)
– 各種ソート
– バイナリサーチ
– 8クイーン
– ハノイの塔
– ライフゲーム
– GoFデザインパターンの実装(使えるモノのみ)
– 文字列パーサ
– グラフ探索
– [コードリーディング] コレクションライブラリ(Java Standard library, Apache Commons, Google Guava)
実践
– 自作HTTPクライアント
– 自作HTTPサーバ
– 自作マークアップ言語
– 自作Webアプリのフレームワーク
余力があれば
– テトリス作成
– 動的計画法
– 文字列検索(BM法)
– 転置インデックス
– suffix array
– 画像処理(フィルタ、陰線消去、座標変換)
一応誤解なきように書きますが、コンピュータサイエンスの研究者ではなく、実戦で使えるプログラマになってもらうための課題です。この程度の課題でコンピュータサイエンスを分かった気になるなというツッコミは的外れですのでご遠慮ください。
「なんだリンクトリストの実装か、随分易しい課題だな」と思った人、甘いです。最初の課題は8クイーンの実装です。簡単な課題から始めるとは言っていません。
「プログラミング初学者の最初の課題が8クイーンは厳しすぎるだろう」と思うかもしれません。ぼくもそう思います。最初に8クイーンの課題を与えるのは覚悟があるかを確認する目的もあります。そもそも本当にプログラミングが好きなら他人に教わる必要はありません。他人に教わる時点で既にマイナス1点です。更に本気でプログラミングをしようとする覚悟もなければ、たぶん続きません。結局、いつか、できない言い訳をするだけです。その判断は最初にしたほうが本人のためです。
参加者はふたりです。人数はどうでもいいのですが、ひとり脱落するとひとりしか残らないので綱渡りです。これはこれで緊張感があって良いかもしれません。落後者がいるリスクを見込んで3、4人ぐらいで始めたかったのですが希望者がいなかったので仕方ありません。
上記の課題のコードが書ければ、あとは、ソースコードの読み方のコツを伝えて、よく使うJavaのクラスライブラリの知識を伝達すれば、普通の現場で標準的Javaプログラマにはなれるのではないでしょうか。アリエルではスタート地点にすら立てないレベルですが。アリエルのスタート地点は、Javaと聞いて、ふっと鼻で笑える地点です。
最近のコメント