知的プログラミングa
前期木3限 知的プログラミングa
教室: 421
担当教員:マッキン
目次
出席管理システム
連絡事項
- 学外から学内専用Webページにアクセスするには、SSL-VPNを利用すること。詳細は、情報サービスセンター(※Office365へのログオンが必要)の「情報教育システム利用の手引き」8章(学外からのVPN接続)を参照
- 7/25 平常試験
- 8/1 レポート提出期限
- 過去の理解度確認問題をC-Learningの小テスト「理解度確認問題 まとめ」で公開
授業詳細
- 4/18 ガイダンス・知的情報システムとは
- 講義資料: PDF[学内のみ]
- 理解度確認課題: フローチャート作成
- 4/25 有限状態機械
- 講義資料: PDF[学内のみ]
- 課題:
- 状態数5以上の迷路ゲームをJavaで作成する。
- 提出先:
- 題名: MAZE
- Javaソースコードを本文に貼り付ける
- 期限: 5/9授業開始前
- 5/9 意思決定:意思決定表
- 講義資料: PDF[学内のみ]
- 課題:
- 両手ジャンケンを意思決定表で行動決定するJavaプログラムを作成する。
- 提出先:
- 題名: TABLEJANKEN
- Javaソースコードを本文に貼り付ける
- 期限: 5/16授業開始前
- 5/16 意思決定:決定木
- 講義資料: PDF[学内のみ]
- 課題:
- 3Qを状態遷移表として実装する。
- 提出先:
- 題名: TABLE3Q
- Javaソースコードを貼り付ける
- 期限: 5/23授業開始前
- 5/23 戦略的意思決定:ゲーム理論
- 講義資料:PDF[学内のみ]
- 課題:
- 繰り返し囚人のジレンマのプログラムを作成する。
- 提出先:
- 題名: PRISONER
- Javaソースコードを貼り付ける
- 期限: 5/30授業開始前
- 5/30 ランダム探索(ゲーム木探索と講義順を入れ替え)
- 講義資料: PDF[学内のみ]
- 課題:
- 砲台ゲームをランダム探索で解くプログラムをJavaで作成する。
- 提出先:
- 題名: CANON
- Javaソースコードを貼り付ける
- 期限: 6/6授業開始前
- 6/6 ゲーム木探索
- 講義資料: PDF[学内のみ]
- 課題:
- 石取りゲームのプレイヤーと対戦するコンピュータプログラムを作成する。コンピュータは完全ゲーム木の解法を用いる
- 最後の石を取った方が勝ち
- コンピュータが先手が望ましい
- コンピュータは降参はしない
- 初期石の数5, 取れる石は1~2
- 提出先:
- 題名: NIMTREE
- Javaソースコードを貼り付ける
- 期限: 6/13授業開始前
- 6/13 知識探索:前向き推論
- 講義: 知識探索 [学内のみ]
- 課題: 前向き推論を行うミニ・エキスパートシステムを作成
- 知識ベースは、関連するキーワードのペアを格納する2次元配列
- ユーザがキーワードを二つ入力し、その二つを関連づける知識のルートがあるかどうか返答する
- 探索は、2階層までで良い。(もっとやっても良い)
- プログラムのJavaソースコードを送付する
- 提出先:
- 題名: INFERENCE
- 期限: 6/20 授業開始前
- 6/20 知識推論:後ろ向き推論、仮説推論
- 講義: 知識推論(後ろ向き推論・仮説推論) [学内のみ]
- 課題:
- Javaで2進数マスターマインドの仮説推論プログラムを作成する。(コンピュータが推論する)
- 提出先:
- 題名: MASTERMIND
- プログラムのJavaソースコードを送付する。
- 期限: 6/27授業開始前
- 6/27 知識表現
- 講義: 知識表現[学内のみ]
- サンプルプログラム: ルールベース無し(ランダム)の三目並べ[学内のみ]
- 課題: ルールベースを用いた三目並べプロダクションシステムを作成する
- 人間対コンピュータ(プロダクションシステム)で動く
- コンピュータは先手
- 勝ち負けも判定する
- プログラムのJavaソースコードを送付する
- 提出先:
- 題名: TICTACTOE
- 期限: 7/4 授業開始前
- 7/4 ヒューリスティクス
- 講義: ヒューリスティクス[学内のみ]
- 参考: 乱数探索で砲台ゲームを解くJavaサンプル[学内のみ]
- 課題: 山登り法で砲台ゲームを解くプログラムを作成する
- Javaのソースコードをメールで提出
- 提出先:
- 題名: HILLCLIMB
- 期限: 7/11 授業開始前
- 7/11 進化計算
- 参考: 乱数探索でナップザック問題を解くJavaサンプル[学内のみ]
- 課題: 進化計算でナップザック問題を解くプログラムを作成せよ
- 遺伝的操作は突然変異だけでよい
- Javaのソースコードをメールで提出
- 提出先:

- 題名: NAPSACK
- 期限: 7/18 授業開始前
- 7/18 強化学習
- 講義: 強化学習[学内のみ]
- コンピュータがランダムで手を選ぶ両手ジャンケンJavaサンプル
- 課題: 強化学習で両手ジャンケンを学習するプログラムを作成
- Javaソースコードをメールで提出
- 提出先:

- 題名: LEARNINGJANKEN
- 期限: 7/25 授業開始前
- 7/25 まとめ・平常試験
- 講義資料: PDF[学内のみ]
- 平常試験(45分)
- 8/1 平常試験と課題の振り返り・レポート提出
- 講義資料: PDF[学内のみ]
- レポート提出
- 追試(対象者がいる場合)
レポート課題
- 授業で取り扱った知的プログラムを一つ以上取り上げ、1600字以上で説明せよ。
- アルゴリズムを具体的に説明し、適用分野やメリット・デメリットについて説明せよ。
- 授業で扱ったキーワードや用語を積極的に利用せよ。
- 適切な図やグラフは加点する。
- レポートと関係のあるソースコードを添付した場合は加点する。
- 印刷。レポート表紙をつけて、ホチキス留め。
- 8月1日授業時間締め切り。延長は認めない。
平常試験
- 7/25 授業時間に実施
- 持ち込み不可
- 筆記試験(選択問題中心)
- 範囲は前期全て
- 過去の理解度確認問題(C-Learningおよび手書き)とアルゴリズムフローチャートを復習すること
シラバス
知的プログラミングa
科目名: 知的プログラミングa
学年: 3
単位数: 2.0
担当者: マッキン ケネスジェームス
授業概要:
知的情報システムで利用される知的処理の基本的概念とアルゴリズムについて学ぶ。具体的には、意思決定、探索、推論、知識表現、知識発見、学習などを実現するためのプログラミングについて学ぶ。
プログラミング言語は主にJavaを用いる。知的処理を応用する問題はゲームを題材とする。
到達目標:
知的情報システムで利用される知的処理の基本的概念とアルゴリズムを理解する。(知識・理解)
意思決定、推論、探索、推論、知識表現、知識発見、学習などをプログラミングで実装でき、実際の問題解決に応用できる。(汎用的技能)
授業の方法:
講義形式で実施する。
講義の途中、および最後に理解度を確認する課題を課す。
毎週、プログラミング課題が課される。
授業計画:
1 ガイダンス・知的情報システムとは
2 有限状態機械
3 意思決定:意思決定表
4 意思決定:決定木
5 戦略的意思決定:ゲーム理論
6 ゲーム木探索
7 ランダム探索
8 知識検索:前向き推論
9 知識推論:後ろ向き推論、仮説推論
10 知識表現
11 ヒューリスティクス
12 進化計算
13 強化学習
14 まとめ・平常試験
15 平常試験と課題の振り返り
準備学習・時間外学習:
授業で出されるプログラミング課題を期限までに必ず行うこと。
時間外学習は毎週4時間程度課す。
成績評価の方法:
平常試験(40%)、レポート(40%)、課題(20%)の結果で評価する。
ただし、出席が2/3に満たない者は、欠席不可とする。
テキスト:
Web上で授業資料を公開する。
他科目との関連:
本講義は知的プログラミングbへ続く内容を扱う。
履修条件:
プログラミング応用を履修済みであること。(編入生は応相談)
受講上の注意:
遅刻および早退は欠席として扱う。
授業の最後に出す理解度確認問題を答えられない場合も、欠席として扱う。
科目担当者URL:
http://www.edu.tuis.ac.jp/~mackin/media/
キーワード:
有限状態機械、意思決定、探索、推論、知識表現、知識発見、学習
東京情報大学総合情報学部情報システム学科
マッキン ケネス(Kenneth J. Mackin)
e-mail: