シラバス
科目名 プロジェクト演習
英語科目 ナンバリング Dlab301
開講期 春学期 開講学部等 情報理工学部 配当年次 3年次 単位数 2単位
教員名 青木 淳,赤﨑 孝文, 荻原 剛志, 中島 伸介, 永谷 直久, 御手洗 彰, 宮森 恒
 ※履修条件,配当年次等の詳細は履修要項をご確認ください。
授業概要/Course outline  
 この科目は3年次秋学期および4年次に開講される特別研究において自立して研究を進めるために必要な基礎的
スキル:
・自ら問題設定を行い、解決手段を見いだす能力
・計画を立てて問題解決を目指す能力
・氾濫する情報から自分の目的にとって有用な内容を選定する能力
・アイデアや結果をわかりやすく表現する能力
を身につけることを目標とする。
 この科目では問題の設定から実行および報告までの「研究の過程」において失敗および試行錯誤を体験すること
を重視するため、半年間に渡り一つの研究テーマに対して十分な時間的余裕を持って取り組む。講義、演習といっ
た枠にとらわれない柔軟な科目として開講されるものである。
授業形態,授業方法等/Course form・type  
【授業形態】
対面授業
【授業方法】
演習
・アクティブ・ラーニング授業 ( 形態: ディスカッション,ディベート / グループワーク / プレゼンテーション / 実習,フィールドワーク / PBL )
この授業では、各クラスで提示されたテーマに関する問題の設定から実行および報告までの「研究の過程」におい
て失敗および試行錯誤を体験する。クラスによってはクラス内で少人数グループを構築して作業を行う。
グループ間で得られた知見をまとめ、プレゼンテーションを行う。
・実務経験のある教員による授業
青木担当分:【アプリケーション開発クラス】この演習クラスは、実務経験が豊富な教員が担当する。国内および
国外でのコンピュータ・ネットワーク・システム開発の実務経験があり、特にプログラミングやソフトウェアデザ
インそしてプロジェクトマネジメントの経験が著しく、スーパープログラマ(伝説のプログラマ)という異名を持
つ。日本のオブジェクト指向プログラミングおよびオブジェクト指向分析設計の創成期を作った。その経験をふん
だんに活かしながら行う本格的で実践的なプロジェクト演習である。
授業内容・授業計画/Course description・plan  
 履修学生は、後述する「アプリケーション開発」「生体計測」「AI演習」「C言語によるプログラム開発」「デー
タ工学」「VRインタフェース開発」「メディアインタラクション」の7クラスのいずれかに所属し、各分野に即し
たテーマを、個人もしくはグループで設定して演習を進める。クラス分けの方法については、下記「履修上の注意」
を参照すること。

・クラスに共通する授業内容・授業計画
 各テーマに即して解析方法や結果をグループ内外で共有し、結果を他者に理解できるように表現する方法につい
て学習する。適時に報告会を行い、成果を評価し合う。履修する具体的な研究テーマは異なるが、基本的スキルの
習得という最終的な到達目標は共通である。そのため、各クラスで課せられる課題や実際に授業を行う教室は異な
るが、主たる評価項目には大きな違いはない。

 以下、各クラスの具体的な授業内容および授業計画を記載する。

----------------
【アプリケーション開発クラス】担当: 青木淳
 情報理工学の各種専門分野における基礎的知識の理解を、さらに深めて、応用力を養うために、長期的な課題(
要求仕様)を与えて演習を行う。実社会(産業界)におけるソフトウェア開発会社のプロジェクトを模擬体験(イ
ンターン)することになる。当該プロジェクト演習では、数名のメンバでグループを構成し、リポジトリを介して
メンバが協業し共創することにより、成果物(アプリケーション)を完成させる。
 情報システムにおけるアプリケーション開発をグループワークにて行う。所与されたアプリケーションの要求仕
様から、オブジェクト指向技術をベースにしたデザインを起こして、オブジェクト指向プログラムを実装し、単体
および結合テストそして総合テストを施す。加えて、アプリケーション開発プロジェクトとして必要なドキュメン
トを仕上げ、成果物としての体裁を整える。これらはすべてリポジトリ内に格納して版(バージョンおよびリビジョ
ン)管理を行い、グループメンバの共有とする。かかる開発工程を実践することにより、PMBOK(ピンボック:プ
ロジェクトマネジメントの知識体系:ガイド、手法、ベストプラクティスなど)を会得する。
 各回の内容は以下の通りである。
第01回:取り組むプロジェクト演習の確定(グループ編成と課題決定)
第02回〜第03回:要求仕様とリポジトリと開発計画
第04回〜第05回:プロジェクトマネジメント(スコープ/タイム/コスト)
第06回〜第07回:オブジェクト指向設計とデザインパターン
第08回〜第09回:オブジェクト指向プログラミング(スタブとスケルトンの作成)
第10回〜第11回:オブジェクト指向プログラミング(実装)
第12回〜第13回:オブジェクト指向テスティングとメトリクス
第14回〜第15回:オブジェクト指向ドキュメンテーションとプレゼンテーション
  ■前もってどのような科目の履修が望ましいか:
   ・応用プログラミング(Java/Python)
   ・ソフトウェア工学I・II
   ・アルゴリズムとデータ構造
   ・ヒューマンインタフェース
   ・信号処理基礎
   ・画像処理
   ・オペレーティングシステム
  ■今後どのような科目を履修するのに役立つか:
   ・プログラミング言語
   ・言語オートマトン
   ・分散処理システム
   ・コンピュータグラフィックス
   ・特別研究におけるプログラミングやデザインなど

----------------
【生体計測クラス】担当:赤﨑孝文
 本クラスでは、生体から得られる各種信号(生体信号)の測定・解析を行い、生体を工学的に利用するための技
術と考え方を学ぶ。生体信号の計測においては測定対象の特性に合致した計測方法を選択する必要があり、様々な
工夫が必要なことを学習する。また、得られた生体現象を解析処理するためのソフトウェアによる解析処理方法を
習得する。演習にあたり考えたことや行ったこと、およびその結果を記録するラボノートの作成を行い、科学的記
録を明確に残す手法を習得する。 
 各回の内容は以下の通りである。
第01回:授業ガイダンス 
第02回:生体計測あれこれ 
第03回:興味のある生体現象を計測してみよう:関連情報の説明 
第04回:テーマ決定〜クラス内グループの形成
第05回:クラス内テーマの実行計画発表
第06〜08回:導入実験サイクル①②③
第09回:クラス内中間報告会:実験方針の再検討
第10〜13回:発展実験サイクル①②③④
第14回:演習のまとめ②
第15回:クラス内発表会

----------------
【AI演習クラス】担当:御手洗彰
  ゲームAIやパターン認識などを題材としたプログラムの開発をプロジェクト課題として用い,競技プログラミ 
ングの形式で演習を行う。この演習には,問題の解法(機械学習や最適化などのアルゴリズム)の調査と検討,その
解法で問題を解くJava, Pythonプログラムの開発,開発したプログラムの例題への適用実験,成果発表スライドの
作成, 発表会の実施などが含まれる。受講生は所定人数以内のグループを自ら形成し,互いに協力して演習に取
り組む。授業の前半ではヒューリスティックアルゴリズムを用いた課題解決,授業の後半では機械学習を用いた課
題解決に取り組む。
  各回の内容は以下の通りである。
<ヒューリスティックアルゴリズムを用いた課題解決>
第01回:グループ編成,課題解説・解法検討・実装
第02回:実装続き・実験
第03回:成果発表
第04回:課題解説・解法検討・実装・実験 
第05回:成果発表
第06回:課題解説・解法検討・実装・実験 
第07回:成果発表
<機械学習を用いた課題解決>
第08回:課題解説・解法検討・実装・実験
第09回:実装続き・実験
第10回:実装続き・実験・成果発表準備 
第11回:成果発表
第12回:課題解説・解法検討・実装・実験
第13回:実装続き・実験
第14回:実装続き・実験・成果発表準備 
第15回:成果発表

----------------
【C言語によるプログラム開発クラス】担当:荻原剛志
 C言語を用いて、比較的規模の大きなソフトウェアの理解/開発/機能拡張に取り組む。本演習では課題に対応す
る機能の設計から、役割分担、成果物の管理までをチームで行う。毎回、進捗に応じたレポートの提出を課す。具
体的な開発内容はmoodleなどによって指示するが、データ圧縮ツール、簡易プログラミング言語処理系などを題材
として取り上げる。C言語の構文や標準ライブラリの使用方法に関する説明は教員側からは行わないので、受講者
(およびグループ)自身で不明点を解消しつつ課題に取り組んで欲しい(もちろん、質問には応じる)。
 今回題材とするソフトウェアは大きなものでも3000行程度であり、実用レベルのソフトウェアのサイズには到底
及ばないが、複数人で大規模な「情報システム」の開発を行うにはこれまでの演習とは異なるアプローチが必要と
なる。また、このテーマではメモリの動的な管理など、C言語の上級レベルのプログラミング技法に加え、プログ
ラミング言語処理系の初歩を扱う。このような知識は「コンピュータ基盤設計」、「組込みシステム」に関する学
習や実践に必須のものと言える。
 各回の内容は以下の通りである。
第01回:コンパイルとリンク、Makefile
第02〜03回:自作ツールの設計と実装
第04〜06回:動的なデータ構造とアルゴリズム
第07〜09回:簡易言語処理系のプログラムを理解する
第10〜12回:拡張機能の設計とテスト計画
第13〜15回:プログラムの実装とテスト
  ■前もってどのような科目の履修が望ましいか:
   ・応用プログラミング(Java/Python/C)
   ・ソフトウェア工学I・II
   ・アルゴリズムとデータ構造
  ■今後どのような科目を履修するのに役立つか:
   ・オペレーティングシステム
   ・プログラミング言語
   ・言語オートマトン
   ・特別研究におけるプログラミングやデザインなど

----------------
【データ工学クラス】担当:中島伸介
 本クラスでは,データ分析や情報推薦技術などデータ工学分野に関連し,研究テーマの設定,関連研究調査,プ
ロトタイプシステムの設計,開発,実験などを行いつつ,考察を踏まえた成果のまとめなどの課題に取り組む。具
体的には,学術研究用に公開されている企業提供データを用いて,データ分析に基づく情報システムの提案および
構築を行いつつ論文化およびプレゼンテーションまでを行う。情報理工学部の10コースの中では,データサイエン
スコースおよび情報システムコースとの関連が深い。
 各回の内容は以下の通りである。
第01回:グループ分け,テキスト分析手法の理解(形態素解析)
第02回:文献調査,テキスト分析手法の理解(ベクトル空間モデル)
第03回:文献調査,テキスト分析手法の理解(データの正規化)
第04回:グループディスカッション(ブレーンストーミング)
第05回:グループディスカッション(テーマ決定)
第06回:分析データの選定と準備
第07回:提案システムの設計
第08回:中間発表会
第09回:データの分析
第10回:提案システムの実装
第11回:評価実験の実施
第12回:評価実験結果の考察
第13回:提案システムの改良
第14回:LaTeXを用いた論文作成
第15回:最終発表会

----------------
【VRインタフェース開発クラス】担当:永谷直久
 本クラスでは、ヒトの感覚に対して情報を提示する装置の開発を行いう。授業では設計・加工のモノづくり技術、
マイコンを使った電子工作技術の習得と、チームによる共同作業をとおしたプロジェクトマネジメント力の重要さ
を学ぶ。各チームで制作する装置のアイディアは、授業内で行うアイディア出しの過程を経て、学生自ら創出し、
チームで洗練させる。以上の流れを通して、モノづくりの基礎的な素養と実践力を身に着けることを目的とする。
 各回の内容は以下の通りである。
第01回:設計:CAD演習
第02回:造形・加工:3Dプリンンタ・レーザ加工機・金属加工演習
第03回:構想:アイディア創出のためのデザインスケッチ演習
第04回:実装:電子工作演習
第05回:実装:センサデータの可視化とアクチュエータ制御実装
第06回:アイディア出し&チーム分け
第07〜12回:製作①②③④⑤⑥
第13回:製作⑦&テクニカルプレゼン講習
第14回:製作⑧&テクニカルプレゼン講習
第15回:クラス内発表会

----------------
【メディアインタラクションクラス】担当:宮森恒
 本クラスでは、大量のメディアデータを分析し、人とのよりよいインタラクションに役立つことを目指すシステ
ムの開発課題に取り組む。具体的には、自然言語や画像等のメディアデータを対象とし、必要に応じて機械学習技
術を活用しながら、人とロボットが協調するよりよい関係性の構築に役立つことを目指したインタラクションシス
テムを開発する。具体的な開発内容は適宜指示するが、対話システム、質問応答、情報検索などの題材を取り上げ
る。各チームで、課題に対応したコンセプト作り、機能やアルゴリズムの考案、システム設計、実装、テストを実
施する。また、チームで開発した成果をプレゼンし、互いのシステムを相互に評価するコンペを実施することで、
自分たちのアプローチの達成点・問題点を把握し、改善につなげる。本演習により、研究に不可欠なオリジナリティ
のあるアイデアの重要性を認識し、その実現と検証のために必要な発想力、開発力、自分の考えをわかりやすく伝
えるプレゼン力などを高めることを目指す。
 各回の内容は以下の通りである。
第01回:概要説明、チーム決め、コンセプト発表
第02回:機能・アルゴリズムの考案、システム設計
第03回:機能・アルゴリズムの実装およびテスト
第04回:システムの実装およびテスト
第05回:コンペおよび中間報告会(1)
第06回:機能・アルゴリズムの改良、システム設計
第07回:機能・アルゴリズムの実装およびテスト
第08回:機能・アルゴリズムの実装およびテスト
第09回:システムの実装およびテスト、プレゼン作成
第10回:コンペおよび中間報告会(2)
第11回:機能・アルゴリズムの改良、システム設計
第12回:機能・アルゴリズムの実装およびテスト
第13回:機能・アルゴリズムの実装およびテスト
第14回:システムの実装およびテスト、プレゼン作成
第15回:コンペおよび成果報告会
 
準備学習等(事前・事後学習)/Preparation and assignments  
----------------
【アプリケーション開発クラス】担当:青木淳
--------
[第01回]取り組むプロジェクト演習の確定(グループ編成と課題決定)
〔事前学習〕シラバスに目を通して、自らが選んでいる学部コースとの関連を考慮し、どのプロジェクト演習に取
り組むのかを想定しておくこと。各自が約1時間ほどの学修(予習:演習活動)を必要とする。
〔事後学習〕確定した取り組むプロジェクト演習の下調べ(シラバスの関連項目をしっかり読んだ上で次回のプロ
ジェクト演習の準備:特にリポジトリに関する学習)を行うこと。各自およそ3時間ほどの学修(復習:演習活動
)を必要とする。
--------
[第02回〜第03回]要求仕様とリポジトリと開発計画
〔事前学習〕ソフトウェア工学系の授業で解題されているソフトウェアプロセス(ソフトウェア開発過程)につい
て復習し演習に臨むこと。特に、要求仕様(SOW)からプロジェクト計画を立てるためのWBSやPERTなどの方法(手
法)について調査しておくことが望ましい。各自が毎回約1時間ほどの学修(予習:演習活動)を必要とする。
〔事後学習〕プロジェクトマネージャを中心にして、適宜、グループで日時を調整し、場所を決めて、活動するこ
と。実現可能なプロジェクト計画の策定に果敢に取り組み、リポジトリにコミットすること。各自およそ毎回3時
間ほどの学修(復習:演習活動)を必要とする。
--------
[第04回〜第05回]プロジェクトマネジメント(スコープ/タイム/コスト)
〔事前学習〕プロジェクトマネジメントのおけるタイムマネジメントにしたがって、当該活動の準備をして演習に
臨むこと。プロジェクトメンバの各々に対して役割分担を打診していることが肝要である。各自が毎回約1時間ほ
どの学修(予習:演習活動)を必要とする。
〔事後学習〕プロジェクトメンバ同士の連絡網を使って、演習時間の不足を補うため、授業時間外にも活動するこ
と。プロジェクトマネージャからの指示にしたがって、各自のプロジェクトの作業を着々と行うこと。各自およそ
毎回3時間ほどの学修(復習:演習活動)を必要とする。
--------
[第06回〜第07回]オブジェクト指向設計とデザインパターン
〔事前学習〕役割分担された各自のプロジェクト作業を行って演習に臨む(持ち寄る)こと。また、オブジェクト
指向の分析方法と設計方法について調べておくこと。各自が毎回約1時間ほどの学修(予習:演習活動)を必要と
する。
〔事後学習〕オブジェクト指向の分析方法と設計方法にしたがって、基本設計(外部設計)および詳細設計(内部
設計)に果敢に取り組み、それらの設計結果をリポジトリにコミットすること。各自およそ毎回3時間ほどの学修
(復習:演習活動)を必要とする。
--------
[第08回〜第09回]オブジェクト指向プログラミング(スタブとスケルトンの作成)
〔事前学習〕詳細設計(内部設計)の進捗に鑑みながら、オブジェクト指向プログラミングの開始に備えること。
特に、プロジェクトマネージャはメンバの役割分担の負荷分散に気を配って演習に臨むこと。各自が毎回約1時間
ほどの学修(予習:演習活動)を必要とする。
〔事後学習〕オブジェクト指向の詳細設計から全モジュール(各クラスおよび各メソッドと各フィールド)のスタ
ブとスケルトンの作成を行い、それらをリポジトリにコミットすること。各自およそ毎回3時間ほどの学修(復習
:演習活動)を必要とする。
--------
[第10回〜第11回]オブジェクト指向プログラミング(実装)
〔事前学習〕プロジェクトマネージャはメンバのプログラミングのスキルとセンスを考慮しながら、実装(プログ
ラミング)の役割分担を行って演習に臨むこと。各自が毎回約1時間ほどの学修(予習:演習活動)を必要とする。
〔事後学習〕オブジェクト指向の詳細設計を反映したスタブとスケルトンを基にして実装(プログラミング)した
ものを順次リポジトリにコミットすること。各自およそ毎回3時間ほどの学修(復習:演習活動)を必要とする。
--------
[第12回〜第13回]オブジェクト指向テスティングとメトリクス
〔事前学習〕テスト仕様を策定する準備をして演習に臨むこと。単体テストツールや結合テストツールの調査も大
切である。各自が毎回約1時間ほどの学修(予習:演習活動)を必要とする。
〔事後学習〕テスト仕様書にしたがって各モジュール(各クラスおよび各メソッドと各フィールド)の試験を行い、
その結果をきちんとリポジトリにコミットすること。各自およそ毎回3時間ほどの学修(復習:演習活動)を必要
とする。
--------
[第14回〜第15回]オブジェクト指向ドキュメンテーションとプレゼンテーション
〔事前学習〕最後の演習に向けて、プロジェクトの不足活動や不足成果を、できうるかぎり補う活動をして臨むこ
と。加えて、プロジェクトの成果報告(プレゼンテーション)の準備を行うこと。各自が毎回約1時間ほどの学修
(予習:演習活動)を必要とする。
〔事後学習〕成果報告(プレゼンテーション)で指摘されたことを補うための作業を確と遂行し、すべての成果物
をリポジトリにコミットすること。各自およそ毎回3時間ほどの学修(復習:演習活動)を必要とする。
--------

----------------
【生体計測クラス】担当:赤﨑孝文
--------
 第01回:授業ガイダンス 
〔事前学習〕moodleにアップロードしてあるクラス説明資料をよく読んでおくこと。
〔事後学習〕授業(実験)ノートを用意し、1回目の授業のまとめを行うこと。
--------
 第02回:生体計測あれこれ 
〔事前学習〕moodle上の資料「生体計測あれこれ」を読んで、わからないところや興味を持ったことに関して調べ
てくること。
〔事後学習〕本日の授業内容をまとめる。
--------
 第03回:興味のある生体現象を計測してみよう:関連情報の説明 
〔事前学習〕この週に行う生体計測実験の具体的計測計画を立てる。
〔事後学習〕測定したデータをまとめる。
--------
 第04回:テーマ決定:クラス内グループの形成
〔事前学習〕興味のある生体計測に基づき、どのような実験ができるのか構想を練る。
〔事後学習〕授業中に指摘された修正案をもとに、実験計画を練る。実験グループを構築し連絡網を作成する。 
--------
 第05回:クラス内テーマの実行計画発表
〔事前学習〕第4週で構築したグループ実験の計画を練る。
〔事後学習〕次週より行う、導入実験の計画スケジュールを立てる。
--------
 第06〜08回:導入実験サイクル①〜③
〔事前学習〕導入実験の計画スケジュールに基づき、予備実験や関連情報の収集を行う。授業時間外にも積極的な
活動を行うこと。
〔事後学習〕授業時間中に報告した内容に関する修正案や提案をもとに、実験を遂行し、データをまとめる。
--------
 第09回:クラス内中間報告会:実験方針の再検討
〔事前学習〕中間報告会の資料を作成する。
〔事後学習〕中間報告で指摘された点に基づき、発展実験の計画スケジュールを作成する。
--------
 第10〜13回:発展実験サイクル①〜④
〔事前学習〕発展実験の計画スケジュールに基づき、実験や関連情報の収集を行う。授業時間外にも積極的な活動
を行うこと。
〔事後学習〕授業時間中に報告した内容に関する修正案や提案をもとに、実験を遂行し、データをまとめる。
--------
 第14回:演習のまとめ
〔事前学習〕クラス内最終報告会のプレゼンテーション資料を作成する。
〔事後学習〕指定されたプレゼンテーション案に沿って、クラス内最終発表会用のプレゼンテーション資料を作成
する。
--------
 第15回:クラス内発表会
〔事前学習〕クラス内最終発表会の練習を行う。
〔事後学習〕クラス内最終発表会で指摘された点を踏まえ、この講義の評価を受けるための最終報告書(レポート
)を作成する。
--------

---------------- 
【AI演習クラス】担当:御手洗彰 
--------
<ヒューリスティックアルゴリズムを用いた課題解決>
-------- 
第01回:グループ編成,課題解説・解法検討・実装 
〔事前学習〕課題の内容について資料を読んで予習する。
〔事後学習〕プログラムを開発する。
-------- 
第02回:実装続き・実験
〔事前学習〕プログラムを動作テストする。
〔事後学習〕演習成果をレポートにまとめる。
-------- 
第03回:成果発表
〔事前学習〕成果発表の準備を行う。 
〔事後学習〕結果を踏まえて自身の解法の長所・短所を考察する。 
--------
第04回:課題解説・解法検討・実装・実験
〔事前学習〕課題の内容について資料を読んで予習する。 
〔事後学習〕プログラムを完成させる。演習成果をレポートにまとめる。
--------
第05回:成果発表
〔事前学習〕成果発表の準備を行う。
〔事後学習〕結果を踏まえて自身の解法の長所・短所を考察する。
--------
第06回:課題解説・解法検討・実装・実験 
〔事前学習〕課題の内容について資料を読んで予習する。 
〔事後学習〕プログラムを完成させる。演習成果をレポートにまとめる。 
--------
第07回:成果発表
〔事前学習〕成果発表の準備を行う。 
〔事後学習〕結果を踏まえて自身の解法の長所・短所を考察する。 
--------
<機械学習を用いた課題解決>
--------
第08回:課題解説・解法検討・実装・実験 
〔事前学習〕課題の内容について資料を読んで予習する。
〔事後学習〕プログラムを開発する。実装した手法の性能評価を行う。
--------
第09回:実装続き・実験 
〔事前学習〕プログラムを開発する。実装した手法の性能評価を行う。
〔事後学習〕プログラムを開発する。実装した手法の性能評価を行う。既に評価を終えていた場合は,他の手
法を実装して評価を行ってみる。
--------
第10回:実装続き・実験・成果発表準備 
〔事前学習〕プログラムを開発する。実装した手法の性能評価を行う。既に評価を終えていた場合は,他の手
法を実装して評価を行ってみる。
〔事後学習〕演習成果をレポートにまとめる。 
--------
第11回:成果発表
〔事前学習〕成果発表の準備を行う。 
〔事後学習〕結果を踏まえて自身の解法の長所・短所を考察する。 
--------
第12回:課題解説・解法検討・実装・実験 
〔事前学習〕課題の内容について資料を読んで予習する。 
〔事後学習〕プログラムを開発する。実装した手法の性能評価を行う。
--------
第13回:実装続き・実験 
〔事前学習〕プログラムを開発する。実装した手法の性能評価を行う。
〔事後学習〕プログラムを開発する。実装した手法の性能評価を行う。既に評価を終えていた場合は,他の手
法を実装して評価を行ってみる。
--------
第14回:実装続き・実験・成果発表準備
〔事前学習〕プログラムを開発する。実装した手法の性能評価を行う。
〔事後学習〕演習成果をレポートにまとめる。 
--------
第15回:成果発表
〔事前学習〕成果発表の準備を行う。 
〔事後学習〕結果を踏まえて自身の解法の長所・短所を考察する。 
--------

----------------
【C言語によるプログラム開発クラス】担当:荻原剛志
--------
 第01回:コンパイルとリンク、Makefile
〔事前学習〕C言語によるプログラミングについて復習をしておくこと。特に構造体、ポインタを用いた動的なデー
タ構造に関する知識は必須である。なお、初学者向けのC言語の教科書では情報が不十分であるため、中級〜上級
向けのテキストの購入を強く推奨する。あらかじめmoodleなどに情報を掲載するので、演習時までに用意しておく
ことが望ましい。
〔事後学習〕与えられた課題についてレポートを提出する。演習時間で解決できなかった疑問点があればレポート
にまとめる。
--------
 第02〜03回:自作ツールの設計と実装
〔事前学習〕複数のソースファイルからなるプログラムの作成について学んでおく。提出したレポートは次回の演
習までにコメントを付けて採点するので、指摘事項を把握し、理解が十分でなかった点を補っておくこと。
〔事後学習〕自分の開発計画、実際に行った作業、達成できた点、問題点、疑問点をまとめてレポートを提出する。
--------
 第04〜06回:動的なデータ構造とアルゴリズム
〔事前学習〕構造体、ポインタを中心に、C言語の構文や代表的な標準関数の使い方を学んでおくこと。提出した
レポートは次回の演習までにコメントを付けて採点するので、指摘事項を把握し、理解が十分でなかった点を補っ
ておくこと。
〔事後学習〕動的なデータ構造を扱うアルゴリズムについて復習し、与えられた課題についてレポートを提出する。
--------
 第07回:簡易言語処理系のプログラムを理解する
〔事前学習〕簡易言語処理系のドキュメントを読んで概要を理解しておく。
〔事後学習〕自分が担当する部分のソースプログラムの役割をまとめた文書を作成し、レポートとして提出する。
--------
 第08〜09回:簡易言語処理系のプログラムを理解する
〔事前学習〕グループ内の他の部分の担当者の報告を読み、ソフトウェア全体の働きを理解する。
〔事後学習〕自分が担当する部分のソースプログラムの役割をまとめ、ソフトウェア全体の動作の概要についてレ
ポートを提出する。
--------
 第10〜12回:拡張機能の設計とテスト計画
〔事前学習〕実現すべき機能について、実装の方針を検討する。自分の行うべき作業の内容について、問題点、疑
問点があればまとめておく。
〔事後学習〕自分の担当箇所を中心に、作業内容、考察、疑問点などをレポートにまとめて提出する。提出したレ
ポートに付けられた指摘事項には、次回までに対応しておくこと。
--------
 第13〜15回:プログラムの実装とテスト
〔事前学習〕計画に従って作業を進める。グループで話し合うべき事柄があれば事前に整理しておく。
〔事後学習〕グループ内で決めた役割分担に従って、文書の作成、ソフトウェアの開発、テストを行い、レポート
として提出する。実装やテストが不十分な部分は補っておく。
--------

----------------
【データ工学クラス】担当:中島伸介
--------
 第01回:グループ分け,テキスト分析手法の理解(形態素解析)
〔事前学習〕あらかじめmoodleに資料を掲載するので,演習時までに目を通しておくこと。
〔事後学習〕与えられた課題についてレポートを提出する。演習時間で解決できなかった疑問点があればレポート
にまとめる。
--------
 第02〜03回:文献調査,テキスト分析手法の理解(ベクトル空間モデル)(データの正規化)
〔事前学習〕文献調査については論文の選定をしておくこと。あらかじめmoodleに資料を掲載するので,演習時ま
でに目を通しておくこと。
〔事後学習〕与えられた課題についてレポートを提出する。文献の調査結果をまとめておくこと。
--------
 第04〜05回:グループディスカッション(ブレーンストーミング)(テーマ決定)
〔事前学習〕研究テーマの決定に向けて,自分のアイデアをまとめておくこと。
〔事後学習〕与えられた課題についてレポートを提出する。グループ内のアイデアに対して良い面,悪い面をまと
めて,自分なりにテーマの方向性について考察すること。
--------
 第06回:分析データの選定と準備
〔事前学習〕適切な分析データについて自分なりに検討しておくこと。
〔事後学習〕与えられた課題についてレポートを提出する。分析データの取得など準備を完了しておくこと。
--------
 第07回:提案システムの設計
〔事前学習〕開発する提案システムについて,自分のアイデアをまとめておくこと。
〔事後学習〕与えられた課題についてレポートを提出する。システム設計を進めておくこと。
--------
 第08回:中間発表会
〔事前学習〕中間発表会に向けたプレゼン資料を準備すること。
〔事後学習〕与えられた課題についてレポートを提出する。発表会で受けたコメントなどを考慮し,開発の方向性
について自分なりのアイデアをまとめておくこと。
--------
 第09回:データの分析
〔事前学習〕データ分析の方向性について,自分のアイデアをまとめておくこと。
〔事後学習〕与えられた課題についてレポートを提出する。データ分析を進めておくこと。
--------
 第10回:提案システムの実装
〔事前学習〕システム実装の方向性について,自分のアイデアをまとめておくこと。
〔事後学習〕与えられた課題についてレポートを提出する。システム実装を進めておくこと。
--------
 第11回:評価実験の実施
〔事前学習〕評価実験の方向性について,自分のアイデアをまとめておくこと。
〔事後学習〕与えられた課題についてレポートを提出する。評価実験を進めておくこと。
--------
 第12回:評価実験結果の考察
〔事前学習〕評価実験結果の考察について,自分なりの考えをまとめておくこと。
〔事後学習〕与えられた課題についてレポートを提出する。評価実験結果の考察についてまとめておくこと。
--------
 第13回:提案システムの改良
〔事前学習〕提案システムの改良について,自分なりの考えをまとめておくこと。
〔事後学習〕与えられた課題についてレポートを提出する。提案システムの改良を進めておくこと。
--------
 第14回:LaTeXを用いた論文作成
〔事前学習〕LaTeXを用いた論文作成について,下調べをしておくこと。
〔事後学習〕与えられた課題についてレポートを提出する。LaTeXを用いた論文作成を進めておくこと。
--------
 第15回:最終発表会
〔事前学習〕最終発表会の準備をしておくこと。
〔事後学習〕与えられた課題についてレポートを提出する。
--------

----------------
【VRインタフェース開発クラス】担当:永谷直久
--------
 第01回:ガイダンス
〔事前学習〕moodleにアップロードしてあるCAD(コンピュータを用いた設計)ソフト「Fusion360」のインストー
ル方法をよく読み、事前にインストールとソフトの立ち上げを確認しておくこと。
〔事後学習〕授業で習ったCADの基本的な使い方をもとに、まずは自分で身の回りの物を模写してみること。
--------
 第02回:設計:CAD演習
〔事前学習〕CADである程度自分が考えたように設計できるようになっておくこと。
〔事後学習〕授業内で扱った加工機の使い方と禁止事項をよく確認しておくこと。
--------
 第03回:造形・加工:3Dプリンンタ・レーザ加工機・金属加工演習
〔事前学習〕授業内で制作してみたいアイディアを考えておくこと。
〔事後学習〕授業内で教わったデザインスケッチによるアイディアの可視化・創出手法を用いて、第6回の授業ま
でにアイディアを10個。
--------
 第04回:実装:電子工作演習
〔事前学習〕マイコン(小さい制御用のCPU)としてESP32というものを使うので、事前にどういったものか調べる
こと。
〔事後学習〕習ったマイコンのプログラムを復習し、応用したプログラムを考えておくこと。
--------
 第05回:実装:センサ・アクチュエータによるI/O演習
〔事前学習〕センサやアクチュエータに関して調べておくこと。
〔事後学習〕センサを使ったデータの読み取りとアクチュエータへの動作信号の生成の仕方を復習すること。
--------
 第06回:アイディア出し&チーム分け
〔事前学習〕事前に自分が作りたいと思う装置のアイディアを最低10個考えておくこと。
〔事後学習〕分けられたチーム内での今後の方針などを話し合っておくこと。
--------
 第07回:製作①
〔事前学習〕製作する装置のアイディアをどう実現・実装するかを考えておくこと。
〔事後学習〕反省点などを洗い出し、チーム内でどのように行っていくかの工程作業を明らかにしておく。
--------
 第08回:製作②
〔事前学習〕前回の反省点を踏まえた作業内容を確認すること。
〔事後学習〕反省点などを洗い出し、次回どのように改良するかをチーム内で話し合うこと。
--------
 第09回:製作③
〔事前学習〕前回の反省点を踏まえて、チーム内の役割分担など作業内容を確認すること。
〔事後学習〕反省点などを洗い出し、次回どのように改良するかをチーム内で話し合うこと。
--------
 第10回:製作④
〔事前学習〕残りの製作日数から、工程作業の見直しなどを行っておくこと。
〔事後学習〕反省点などを洗い出し、次回どのように改良するかをチーム内で話し合うこと。
--------
 第11回:製作⑤
〔事前学習〕チームとしての装置の実装上の落としどころを話し合っておくこと。
〔事後学習〕反省点などを洗い出し、次回どのように改良するかをチーム内で話し合うこと。
--------
 第12回:製作⑥
〔事前学習〕最終的な完成を意識した作業内容を考えてくること。
〔事後学習〕反省点などを洗い出し、次回どのように改良するかをチーム内で話し合うこと。
--------
 第13回:製作⑦&テクニカルプレゼン講習
〔事前学習〕発表に向けての写真資料などを整理してくること。
〔事後学習〕発表に向けて、資料の作成を各担当分にそって作成してくること。
--------
 第14回:まとめ①
〔事前学習〕発表会で用いる発表資料を完成させておくこと。
〔事後学習〕他チームの発表を踏まえ、次回のクラス内発表用にプレゼン資料の改良を行うこと。
--------
 第15回:クラス内発表会
〔事前学習〕発表のための練習を各チーム毎に行ってくること。
〔事後学習〕開発した装置に関するレポートを指示された期限までに提出すること。
--------

----------------
【メディアインタラクションクラス】担当:宮森恒
--------
 第01回:概要説明、チーム決め、コンセプト発表
〔事前学習〕プログラミングの必修科目、各自が受講した応用プログラミングの内容について復習しておくこと。
〔事後学習〕演習全体の課題とコンセプト、各回の内容を再度確認し、疑問点があればまとめておくこと。
--------
 第02回:機能・アルゴリズムの考案、システム設計
〔事前学習〕チームとしての機能案やそれを実現するアルゴリズムについて、具体的なアイデアを予めできるだけ
多く書き出しておくこと。また、システム実装と改良が容易になるようなクラス構成の案も書き出しておくこと。
〔事後学習〕チームとしてまとめた機能、アルゴリズム、および、システム設計を再度確認し、自分の役割部分の
作業を進めるのに必要な調査等をしておくこと。
--------
 第03回:機能・アルゴリズムの実装およびテスト
〔事前学習〕自分の役割部分の機能、アルゴリズムの実装やテストを行うのに必要な調査や準備をしておくこと。
〔事後学習〕自分の役割部分の機能、アルゴリズムの実装やテストにおいて不十分な部分を適宜補っておくこと。
--------
 第04回:システムの実装およびテスト
〔事前学習〕システムの実装およびテストを行うのに必要な調査や準備をしておくこと。
〔事後学習〕システムの実装およびテストにおいて不十分だった部分を補っておくこと。
--------
 第05回:コンペおよび中間報告会(1)
〔事前学習〕コンペに必要なテストを入念に行っておくこと。
〔事後学習〕チームおよび個人としての達成点、問題点を再度確認し、その原因や解決策について書き出しておく
こと。
--------
 第06回:機能・アルゴリズムの改良、システム設計
〔事前学習〕達成点、問題点を踏まえ、チームとしての機能やアルゴリズムの改良案について具体的なアイデアを
予め書き出しておくこと。また、適宜、システム実装と改良が容易になるようなクラス構成の見直しも行うこと。
〔事後学習〕チームとしてまとめた機能、アルゴリズム、システム設計を再度確認し、自分の役割部分の作業を進
めるのに必要な調査等をしておくこと。
--------
 第07回:機能・アルゴリズムの実装およびテスト
〔事前学習〕自分の役割部分の機能、アルゴリズムの実装やテストを行うのに必要な調査や準備をしておくこと。
〔事後学習〕自分の役割部分の機能、アルゴリズムの実装やテストにおいて不十分な部分を適宜補っておくこと。
--------
 第08回:機能・アルゴリズムの実装およびテスト
〔事前学習〕自分の役割部分の機能、アルゴリズムの実装やテストを行うのに必要な調査や準備をしておくこと。
〔事後学習〕自分の役割部分の機能、アルゴリズムの実装やテストにおいて不十分な部分を適宜補っておくこと。
--------
 第09回:システムの実装およびテスト、プレゼン作成
〔事前学習〕システムの実装およびテストを行うのに必要な調査や準備をしておくこと。
〔事後学習〕システムの実装およびテストにおいて不十分だった部分を補っておくこと。
--------
 第10回:コンペおよび中間報告会(2)
〔事前学習〕コンペに必要なテストを入念に行っておくこと。また、プレゼンテーションの準備をしておくこと。
〔事後学習〕チームおよび個人としての達成点、問題点を再度確認し、その原因や解決策について書き出しておく
こと。また、他のチームの発表も参考にしながら、チームとしてのプロジェクトへの取り組み方、アイデアと実装、
進捗管理、プレゼンテーションなどを再度振り返ること。
--------
 第11回:機能・アルゴリズムの改良、システム設計
〔事前学習〕達成点、問題点を踏まえ、チームとしての機能やアルゴリズムの改良案について具体的なアイデアを
予め書き出しておくこと。また、適宜、システム実装と改良が容易になるようなクラス構成の見直しも行うこと。
〔事後学習〕チームとしてまとめた機能、アルゴリズム、システム設計を再度確認し、自分の役割部分の作業を進
めるのに必要な調査等をしておくこと。
--------
 第12回:機能・アルゴリズムの実装およびテスト
〔事前学習〕自分の役割部分の機能、アルゴリズムの実装やテストを行うのに必要な調査や準備をしておくこと。
〔事後学習〕自分の役割部分の機能、アルゴリズムの実装やテストにおいて不十分な部分を適宜補っておくこと。
--------
 第13回:機能・アルゴリズムの実装およびテスト
〔事前学習〕自分の役割部分の機能、アルゴリズムの実装やテストを行うのに必要な調査や準備をしておくこと。
〔事後学習〕自分の役割部分の機能、アルゴリズムの実装やテストにおいて不十分な部分を適宜補っておくこと。
--------
 第14回:システムの実装およびテスト、プレゼン作成
〔事前学習〕システムの実装およびテストを行うのに必要な調査や準備をしておくこと。
〔事後学習〕システムの実装およびテストにおいて不十分だった部分を補っておくこと。
--------
 第15回:コンペおよび成果報告会
〔事前学習〕コンペに必要なテストを入念に行っておくこと。また、プレゼンテーションの準備をしておくこと。
〔事後学習〕チームおよび個人としての達成点、問題点を再度確認し、その原因や解決策について書き出しておく
こと。また、他のチームの発表も参考にしながら、チームとしてのプロジェクトへの取り組み方、アイデアと実装、
進捗管理、プレゼンテーションなどを再度振り返ること。
--------
授業の到達目標/Expected outcome  
自ら問題設定を行い,実行計画を立て,有用な情報を選択し,自分で考えながら作業を進めていく力を養い,プロ
ジェクトの特徴である「有期性」と「独自性」をこのプロジェクト演習を通して学ぶ.また,演習中の適切な時期
に進捗状況を報告することにより,プレゼン能力の向上を目指す.高度情報化社会における実際のプロジェクトの
状況を想定しながら,果たすべき役割を自覚し,積極的に行動できる資質を養う.これにより,主体性,発信力,
協働性・協調性,倫理性,創造性および関連する専門知識・専門技能を身につけることができる.
身につく資質・能力/Competencies to be attained  
主体性
・発信力
・協働性・協調性
・倫理性
・創造性
履修上の注意/Special notes, cautions  
春学期ガイダンス時に履修方法について説明を行うので必ず参加すること。履修ガイダンス後に公開されるmoodle
の履修希望コース調査を閲覧し、受講希望コースに登録すること。
評価方法/Evaluation  
授業時の取り組み(約50%)
レポートおよび発表(約50%)
教 材/Text and materials  
適宜参考資料やプリント等を配布する。
質問や相談の方法/Instructor contact  
質問等を受け付けるオフィスアワーを別途指示する。
Copyright (C) 2023 Kyoto Sangyo University. All rights reserved.