講座担当演習科目


数理的アプローチによるソフトウェア設計・実装

 各種機器に組み込まれているコンピュータは小型・軽量であることがほとんどで、開発者は低動作周波数、小メモリ容量、微小電力などという厳しい動作環境のもとでもリアルタイム性や信頼性等が実現されるようなソフトウェアを作成しなければなりません。そのためには、試行錯誤や経験・勘だけに頼らずに、数理的なアプローチでソフトウェア設計・実装することが有効です。つまり、単なるモノづくりで終わらせずに、優れたモノを作れることが大切なのです。
 そのためには、高度なプログラミング技術はもちろんのこと、コンピュータサイエンスの基礎の理論に基づいたソフトウェアの開発手法や検証手法の理解が必要です。加えて、ハードウェアの性能を十分に引き出すためにもハードウェアに対する深い理解も必要です。
 そこで、本研究室では、少人数教育の利点を生かして、コンピュータの動作原理から各種ソフトウェア開発手法を演習(学部3年)によって、さらに、基礎理論や科学的手法をゼミ(学部4年・院生)によって、それぞれ習得することとしています。

基盤システム演習I(学部3年前期)

リアルタイムシステム実現のためには、人間や環境から情報(音声,画像,測定値,統計値など)を取り込む技術、各種マイクロプロセッサ(AVR, PIC)のもとでソフトウェアによって電子機器を自在に操るための制御技術の習得が必要になります。この科目では、2年次までのプログラミング技法の上級レベルとしての実践的プログラミング、ならびに、ハードウェア(Arduino、ブレッドボード、電子回路)の制御プログラミング(C言語、アセンブリ言語、Processing)の基盤技術について学習します。これらの技術を習得することによって、フィジカルコンピューティング、ユビキタスコンピューティング、センサネットワーク、車載ソフトウェアといった実用的なシステムのためのソフトウェア作りが可能となります。

基盤システム演習II(学部3年後期)

 組込みシステムの開発においては、限られたリソースによって最大限の機能を発揮するソフトウェアの開発が求められます。本演習では湯沸しポットの制御システムの開発を題材として、まずUMLを用いて要求分析、システム分析、設計の各段階における各モデルの作成を目指します。また、実装段階においてはH8 CPUを核としたシミュレータを用いて、LED、LCD、スイッチ、センサ、AD/DA変換の各種インタフェースの制御に関するプログラミングを体験し、組込みソフトウェアを開発します。

基盤システムゼミ(学部4年・院生)

 厳しい動作環境のもとでリアルタイム性や信頼性等が実現される高性能なソフトウェアを作成するためには、数理的なアプローチでソフトウェア設計・実装することが有効です。さらに、作り上げたソフトウェアを定量的に評価し、最適性の検証をする必要があります。そこで、本研究室のゼミ(主として卒研生、大学院生対象)では、システム工学、グラフ理論、数理計画、組合わせ論、確率論、計算理論などといった基礎理論について輪読形式で学習します。そして、単なるモノづくりにとどまらずに、ソフトウェアの最適設計、ソフトウェアの計量的評価、ソフトウェアの正当性検証といった研究に役立てます。

講座教員担当科目

学部専門科目

組込みシステム論(猪股俊光)
 情報機器はもちろんのこと、自動車、航空宇宙機器、医療機器、家電機器などの各種製品にはコンピュータシステムが組込まれており、これらの製品はソフトウェアによって制御されている。このような組込みシステムには、リアルタイム性(あらかじめ設定された応答時間制約を満足する性質)や資源制約、信頼性が要求される。この科目では、組込みシステムを設計・開発するために必要となる基礎理論や実装技術についてArduinoを用いた演習も行いながら学ぶ。
 講義Webページ
ファームウェア学(新井義和)
 マイクロコントローラの入出力技術として、特にモータ制御を題材に機械系の制御を体験する。まず、制御対象の仕様を抽象化し、開発コストを低減することを目指して、モータへの入出力を管理するAPIを開発する。最終的な目標としては、これらのAPIを用いてPID制御によってモータを自在に制御するアプリケーションを開発する。この授業では、個々の受講生にAVRマイクロコントローラを核とするボードコンピュータArduinoを1台ずつ配布し、開発した各プログラムをマイコン上のROMに書き込むことによってファームウェアとして実装する。
ハードウェア基礎(新井義和)
 ソフトウェアを開発するためには、それ自身が動作するプラットフォームであるコンピュータの仕組みや内部構造を理解することが重要である。本講義ではまず、オームの法則やキルヒホッフの法則などを用いた電気回路(直流回路)の基本演算とともに、現在のコンピュータには不可欠なトランジスタの仕組みについて学ぶ。それらを踏まえてコンピュータを構成するメモリ素子に焦点を当て、それらが動作する上で基礎となる原理およびそれらの機能や特性を理解する。またアナログ機器とディジタル機器の間のインタフェースとして不可欠なA/D・D/A変換について学び、その原理と特性を理解する。
モデリング実践論(猪股俊光,今井信太郎)
 システムの開発に有効な手法のひとつであるモデルに基づいた設計・実装法について学習する。そこでは,対象システムが形式的なモデルによって表され,そのモデルのもつ特性が調べられて,望みの特性が得られるようにモデルが修正された後,実装される。この講義では,モデル化,モデルの解析,実装に必要とされる各種の記述法(UML, 状態遷移図,数式モデル,グラフモデルなど)や解析ツール(MATLAB/Simulink)について学習するとともに,モデルを実現するプログラムの実装も試みる。
 講義Webページ(前半) 講義Webページ(後半)(学内限定)
離散数学(猪股俊光)
 ソフトウェアが計算の対象とするものは、集合、論理、関数、グラフ、木などといった数学的概念であり、これらは離散構造とよばれている。この講義では離散構造について学んでいく。
 講義Webページ
キャリアデザイン(今井信太郎)
 本授業では、リアリティを持って人生(キャリア)を構想し、価値創造を通じて社会に貢献し、一生を通じて学び続けていく意識と能力を高めることを目的とする。社会における問題解決の疑似体験を通じ、論理的分析と説得的提案により利害関係者へ価値認識を実現できるようにする。同時に自身の貢献可能性の気づきを得る。問題解決の一連の流れをグループワークで実施する。価値創造の意味を理解し、問題解決技術の基本を習熟し、グループでの役割を意識した行動ができるようにする。
プロジェクト演習(今井信太郎)
 プロジェクトの企画・立案を目的とし、少人数による学年混成型のグループワークにより、様々な知識レベルや学年という立場を考慮し、グループ活動が円滑に行えるよう自らの行動を決定することを学ぶことをねらいとする。この演習では、グループにおいて課題の設定を行い、課題についての問題発見・問題解決能力を養い、学年に応じて様々な立場からチームに参加し経験を積む。
ソフトウェア演習A(今井信太郎)
 本演習では、ソフトウェア情報学部で必要となる、情報リテラシーの基礎、コンピュータを動かすという感覚を体験的に学ぶ。コンピュータは誰でも自分が考えたものを創ることができるという楽しさを、試行錯誤によって体感して欲しい。また、創るときには論理的な思考が必要であることも感じられる演習を目指す。

大学院専門科目

プログラム言語特論(猪股俊光)
 現在、普及しているプログラム言語の多くは、ある種の計算モデルの動作原理に基づいて設計されており、計算モデルを数学的に取り扱うことによって、プログラムの正しさを数理的に検証することが可能となる。この講義では、関数型モデル、論理型モデル、状態遷移型モデルといった計算モデルに基づいたプログラムの検証法について論じる。
情報システム基盤総論(新井義和,今井信太郎)
 ロボットやユビキタス機器の社会への浸透が進むにつれて、それらの中核をなす組込みシステムはますます重要性を増していくことが予想される。本講義では、前半部分でロボットのナビゲーションシステムを題材に、組込みシステムの重要な構成要素である各種センサがどのような原理で動作するのか、そして獲得された情報がどう利用されるのかについて学ぶ。後半部分では、ユビキタス情報環境の構築に向けたセンサネットワーク技術について学ぶ。また、研究事例から、ユビキタス環境における組込みシステムの利用や応用について学ぶ。