Top > Lab. > Programming

プログラミングゼミ


Pragramming Exercises



プログラミング課題と〆切

〆切課題課題の目的
6月30日 課題1:グリッドワールドにおけるエージェントの強化学習 (pdf, 21KB)
強化学習の基礎を理解する.
9月20日 課題2:k 近傍識別法によるパターン識別 (pdf, 22KB) パターン識別の基礎を理解する.
12月20日 課題3:局所探索によるフローショップ・スケジューリングの最適化 (pdf, 21KB) スケジューリングの基礎を理解する.


 本研究グループでは,まず,プログラミング課題をやってもらっています. プログラミング課題の目的としては,下記の2点を考えています.

1) プログラミングの技術を向上すること
2) 研究のスタイルを経験すること

1)の技術的なことについては,ピンからキリまでありますし, プログラミング言語の拡張もしばしば行われますので, どこまで向上させるべきか,というとなかなか難しいものがありますが, 効率が悪いとわかっている方法は使わないようにしていくべきだと思います. 何が効率が良くて何が悪いか,というのは経験的に獲得していくものなので, 少しでも先輩から後輩へ知識が継承されていくような枠組みが必要だと思っています. そのために,次のような枠組みで結果の報告をしていただきたいと思っています.

3年生
↓(メール報告)↑(改善点指摘)
|(最終報告)
プログラミング担当者(4年生),データ報告担当者(院生)
↓(報告・相談・提案)↑(回答)
村田


上記のような枠組みで,次のような手順を踏んでもらえればと思います.プログラミング課題に関する メール報告は,プログラミングゼミ担当者と村田宛に送って下さい. 段階によって,宛先とCCが異なりますので,注意して下さい.

    報告手順
  1. 自分のプログラミングゼミ担当者(文法の相談は4年生,データの報告は院生)に,実行中の課題を報告する.
  2. 報告に対して指摘された内容に基づいて,追加・修正を,その都度, 報告していく.
  3. 2.3.を繰り返して,課題の理解を深めるとともに,報告の仕方を学んでいく.
  4. 村田に報告する.
上級学年の研究室メンバーにプログラミング担当をお願いし, 課題報告に対する「もっとこうした方がいいんじゃない?」という提案をしてもらいたいと思っています. 時には,提案が必要以上に厳しく思えることがあるかもしれませんが, なぜ,そこまで考えてやらなければいけないか,ということを考えて, 積極的に取り組んでもらえればと思います.時には,そこまでやる理由がわからないこともあるでしょう. そのときは,「やるべき理由がわからない」という意思表示をして下さい. プログラミング担当者の説明不足であることもあります. そのような質問と回答のやりとりによって,取り組んでいる課題に対する 一層明確な理解を得ることができるはずです.質問は,その人の理解不足を表すものではありません. その人がより理解したいという積極的な気持ちを持っていることを表すものです. 自分がわかっていないこと,そして自分がわかっていることを明確にしていくことが研究の基本的なスタンスです. 次年度には,同じようにアドバイスする立場になり, 研究室の知識継承に一役買ってもらいたいと思っています.^_^

2)の研究スタイルを経験するとは, 実験結果からさらに調べるべき課題を見極める能力を身につけよう,ということです. プログラミング課題の指示書に書かれているのは一つの指針です. それ以上のことはしなくてよい,ということではありません. しっかりその分野の研究を考察し,方法論を突き詰めていけば, プログラミング課題自体を卒業研究にすることも可能です.

また,課題として与えられている研究分野についての 具体的な方法を自分が知っておくことによって, 専門分野ゼミで読む専門書や研究論文の意味がわかりやすくなる, ということも,身につけたい研究スタイルにあげられます. スケジューリング,強化学習,パターン識別という違う要素を含む基礎的な課題を与えていますが, それらの違う分野の方法を実際に経験することで,いろんな分野への興味をより具体的に イメージすることができると思います.

課題の趣旨を理解した上で,意欲的に取り組んでもらえればと思います. 担当者の指示やプログラミング課題の趣旨について, 何か疑問があれば,いつでも質問して下さい. そのような質問は,やろうとしていることを明確にするためにも必要なことです. 最終的な目的は,皆さんの能力を明確に向上させることです. 皆さんの積極的な取り組みを期待しています.


 プログラミングの小手調べとして,練習問題に取り組んで欲しいと思います. 難易度は下に行くほど難しくなります.

 課題に取りかかる前に,自前の開発環境を整えるところからしなければいけない人もいると思います. 時間がかかると思いますので,今からしっかり自分の環境を構築してください. 言語はどのような言語を使ってもらっても構いません.Visual Basic, C++, Java など どのような言語でも結構です.大事なのは,課題として与えられている事柄を 達成できるかです.いずれの課題も計算結果を数値データとして出すゴールと その次にそれらの結果を図で表現するというゴールの2つの目標を設定しています. 数値データを出すのは,どのようなプログラミング言語でも可能だと思いますが, 特に図の表現方法は,言語によって,また対象とするOSによって取り扱いが異なります. 数値データを出すプログラムとグラフィック化するプログラムを変えてくれても結構です. ちなみに私が学生の頃は,UNIX上でC言語を使って計算し,図はPC98のMS-DOS上で作る, ということをしていました.その後,計算に特化して仕事をしていますので,UNIX上の プログラミングしかしていません.図は論文用に毎回特製で作っています. したがって,グラフィックについては,素人です.みなさんのがんばりに期待しています. また,今回使用する言語がこれからずっと使っていく言語であると思わなくても大丈夫です. こっちの方が使いやすいよ,などの情報がこれから飛び交うことになると思います. 大いに情報交換し,フットワークを軽くして課題に取り組んでください. 開発環境の整え方には2つあります.

1.ネット上にあるフリーのコンパイラなどをインストールする.
2.MSDNのソフトを使用する.

上記の1,2を簡単に解説します.

1.ネット上にあるフリーのコンパイラなどをインストールする.
フリーのソフトですから,どのようなソフトを使ってもらっても結構です. 試しに「コンパイラ C言語 フリー 」という キーワードで,引っかかったページを紹介します.私が自分で導入したわけではないので, 信頼できるかどうかは不明ですが,トライ&エラーでやってみてください. おすすめのページがあれば,どんどん紹介してください. こんなん見つけたけどどうでしょう?という連絡でも結構です. お互いに見つけあった情報をどんどん交換していきましょう.

フリーコンパイラを手に入れよう Borland C++ Compilerの紹介学生時代,パソコンでのBorland社 (一時期インプライズという名前を使っていました)の環境はお気に入りでした. この名前には親しみを感じています.
Mar. 12, 2002 アドレスが変わったようです.変更しておきました.

安井電子開発機構 GCC Compilerの紹介怪しげな文体が気に入りました(笑).GNU環境に慣れるのもよいと思います.ただし,UNIX系の環境が必要です.あるチップに特化した説明が含まれていますが,一般的な内容もわかりやすいように思いました.

2.MSDNのソフトを使用する.
研究室で年間契約しているマイクロソフトの開発環境ソフトです. 何がソフトに含まれているかはMSDN掲示板のページやMSDNのホームページを 参照して確かめて下さい.研究メンバーが使用する自宅のコンピュータにも インストールが許可されていますので,所定の手続きにしたがって, ソフトを利用してもらえればと思います.MSDNのソフト管理は, MSDN係に依頼していますので,質問は掲示板等で行って下さい.

 課題の〆切は上表のように設定します. 3つのプログラミング課題に順番に取り組んで下さい. 疑問や質問があれば,自分の担当になる4年生や院生に 遠慮なく問い合わせてもらえればと思います.


All rights reserved by Tadahiko Murata, 2002-2004