「セキュリティ&プログラミングキャンプ 2010」 プログラミングコース OSを作ろう組(OS自作組) [概要] 担当:川合講師、竹迫講師、天野講師、坂井講師 この組の目的は、OSの仕組みや、ハードウェアとOSとアプリケーションの関係を理解することです。 講義は演習が中心で、書籍「30日でできる!OS自作入門」を教科書として、ひとりひとりにオリジナルの OSを作ってもらいます。 ただし期間が十分に長くはないので、期間内に教科書を全部読みきることを目指すわけではありません。 無理のない範囲でできるところまでやります(だいたい1章が4時間くらいかかります。ですから キャンプ期間では開発工程全30章に対して、事前学習してもらった場所から+6〜+8章くらい進められる と思います)。 [詳細] 参加が決まった学生には教科書を贈りますので、まずはこれをキャンプ当日までに読んで実践して きてもらいます(宿題です)。全てを読みきる必要はありません。できるところまでやってください。 読む際には、ただ文章を読むのではなく、教科書内に書かれたプログラムを自分で実際に入力してみて、 また自分で少し改造してみたりして、読み進めてください。 この組では、最初に、どこまでできたか・どこがわからないか・キャンプ期間中でどこまで 進めたいか(どんなことをしたいか)を組のみんなに発表してもらいます。ですから、これにどう 答えるか考えておいてください。また、勉強のために入力して作った物を確認したいのでそれも 持ってきてください。工夫した改造ポイントがあればそれも是非教えてください。これが組内での 自己紹介にもなっています。 キャンプ当日までに全部読めてしまった優秀な学生は、より発展的な改造テーマを考えてみて ください。講師陣はみなさんの理解度や目標を聞きながら、進度や目標、さらには年齢や性別に 配慮して組をいくつかの班に分けて、班単位で指導します。希望した目標が期間内に達成するのが 難しいと思われた場合は、講師陣が(本人の希望に近づくような)別の目標を提案することも あります。 この組では、基本的に学生がグループ内で教科書を使って自習しながら、分からないところ・ 疑問に思ったこと・確認したいことを、講師陣に質問してもらうという形式を取ります。ですから 自分から自発的に意欲を持って取り組んで、自分から進んで質問できる人を募集します(講師陣も 時には様子を見て、話しかけることはあります)。 キャンプの最後には成果発表会があります。そこでキャンプ期間内に何をしようとしたのか・ どこまでできたのか・自分たちが作った自作OSの紹介デモなどを班ごとにしてもらいます。 またキャンプ終了時には各自に自分が作ったOSをCDに入れて持ち帰ってもらいます。これを是非 お友達に見せて、こんなOSを理解して作れるようになったんだよと自慢してください。 どんなOSが作れるようになるのかについては、こちらのページ(http://hrb.osask.jp/figures.html) を参考にしてください。 [補足] 教科書は対象読者として中学生以上を想定していることもあり、この組はプログラミングコースの 他の組と比べると内容がやさしいです。したがってこの組では、学生の選考に当たって年齢を重視し、 中学生や高校生・高専生を中心にしようと思っています。しかしもっとも重視するのはこの組を選んだ 理由なので、大学生や短大生も、熱心な人は大歓迎です。 この講義で使う教科書は書き方がやや個性的で、楽しく読める人とそうでない人がいます。この 教科書の書き方になじめない人は、この組を楽しめないと思います。したがってこの組を希望する前に、 是非一度図書館や書店などでこの本を手にとって、なじめそうかどうか確認してください。既にこの本を 読んだことがあって、内容や書き方は嫌いじゃないけど難しくて挫折してしまったという人は、もちろん 大歓迎です。一方で、応募前から既に読み終わっているという人は、残念ながらこの組の想定する学生の 範囲を超えてしまっているので、他の組への参加をおすすめします(この組の選考に落ちやすい)。 教科書では基本的にWindows上での開発を想定していますが、Linux上や MacOS上での開発を希望する 場合は、希望に沿います。ただしMacOSの環境はキャンプ事務局では用意していません(注意:MacOS上で 開発しても、この教科書ではPC用のOSしか作れません)。 学生の選抜は、設問の回答から判断します。しかしこれはテストではありません。こう書けば有利に なるという正解などはありません。現実の自分のことを自分の言葉で素直に書いてください。 たとえOSへの興味が感じられなかったり、プログラミングの経験が少なくても、希望する理由がもっとも ならもちろん高く評価します。基本的に、書けば書くほど有利です。変なことを書いても減点することは しません。 以前のキャンプで、プログラミングの経験が全くない状態で、でもがんばりますと書いてくれた人が いましたが、その人は残念ながら選べませんでした。OS作成ではない一般的なプログラミングの経験までは、 このキャンプに参加しなくても十分に体験できると思うのです。この組がいくらやさしいとは言っても、 やっぱり普通のプログラミング体験までは自力でしてみてください。1年間いろいろやってみてそれで プログラミングが楽しいと思えたら、是非来年のキャンプに応募してください。お待ちしています。 なお講師の川合秀実は、この教科書の著者です。 組別ではない講義の中には、この組の学生にとってはやや難しい内容が含まれています。しかしそれらは 将来役立つことばかりですので、どうか挑戦するつもりで体当たりしてみてください。そのときには完全に 分からないにしても、だいたいの雰囲気を体験できることが貴重な経験になります。 応募用紙に書いてほしいキーワードは、「1903」です。 [募集対象となる学生] * OSを作ってみたい・作りながら理解したいと思っている人 * Cやアセンブラによるプログラミングに抵抗がない人 * 上記の説明を事前にすべて理解し納得できる人 [カリキュラム] (2010.06.19追記) それぞれ2〜4時間(個人差あり) 01. アセンブラ入門・アセンブラプログラミングから見たPCの仕組み 02. アセンブラの基本・Makefile入門 03. アセンブラからC言語への制御の橋渡し 04. C言語入門・画面表示の練習 05. 構造体・文字表示・CPUの設定(1) 06. 分割コンパイル・割り込み処理 07. キーボード制御・FIFOバッファ 08. マウス制御・CPUの設定(2) 09. メモリ管理 10. グラフィックの重ねあわせ処理 11. ウィンドウ 12. タイマ制御(1) 13. タイマ制御(2) 14. 高解像度・キー入力 15. マルチタスク(1) 16. マルチタスク(2) 17. コンソール作成 18. コマンドの作成 19. アプリケーション導入 20. APIの整備 21. OSの保護機構 22. C言語でアプリケーションを書くために 23. グラフィック系APIの整備 24. ウィンドウ操作の改良 25. コンソールを複数に 26. 描画の高速化 27. アプリケーション同士の悪意による干渉を防ぐ 28. ファイル処理のAPI・日本語表示 29. ファイル圧縮・簡単なアプリケーション 30. 高度なアプリケーション 31. 今後に向けて この組は他の組とは異なり、みんなでそろって同じ内容の勉強や演習をすることはあり ません。基本的には自習です。どこまでをキャンプ前に予習してきて、どこからをキャンプで やるかは、学生の自主性に任されています。 自習とは言っても、分からないところがあれば自由に質問できます。講師やチュータが、 理解できるレベルで丁寧に説明します。 過去には、途中で自分の理解度に自信がもてなくなって、キャンプ中盤で一番最初から やり直した学生もいました。そしてキャンプ最終日には基本をとてもよく理解してくれました。 この組ではこういうことも許されるのです。優秀な学生に合わせて他の学生が置いていかれ 気味になったり、進度の遅い学生に合わせて、優秀な学生が退屈したりはしないのです。 ・・・そのことはおそらく他の組でも十分に配慮されていると思いますが、この組では特に そのことに配慮しているのです。 [リンクなど] (2010.06.23追記) このページの内容は、以下のページとほぼ同じです(カリキュラムやリンクがないだけ)。 http://www.ipa.go.jp/jinzai/renkei/spcamp2010/lecture/programming.html#index03 2009年度の様子: http://itpro.nikkeibp.co.jp/article/NEWS/20090817/335588/ http://jibun.atmarkit.co.jp/lstudent/rensai/star/02/01.html http://jibun.atmarkit.co.jp/lstudent/special/spcamp2009report/03.html