科目名 |
情報学群実験第2 |
担当教員 |
松崎 公紀,酒居 敬一,高田 喜朗 |
対象学年 |
2年 |
クラス |
学部:専門001 |
講義室 |
A−WS |
開講学期 |
2学期 |
曜日・時限 |
火3,火4,金3,金4 |
単位区分 |
選択 |
授業形態 |
一般講義 |
単位数 |
4 |
準備事項 |
|
備考 |
|
授業の詳細1 |
◆授業の目的
効果的な情報システム・通信システムを構築するためには,計算機自身の仕組みを深く理解することが必要である.本科目では,アセンブリ言語によるプログラミングを通して,「プログラム実行機械」である計算機の仕組みを学習する.
最終課題として,Lego Mindstorms RCXを用いてライントレーサ(線追跡ロボット)を作成する.ロボットのプログラム,および,プログラムをダウンロードするためのPC側プログラムの両方を自分たちの手で作成する.
本科目で学習する具体的な項目は以下のようになる. * 低級プログラミング言語とプログラム実行の仕組み - アセンブリ言語によるプログラミング - 命令セットアーキテクチャ * 制御型プログラムの作成法 - センサやモータを扱うプログラム - 簡単な通信手順に従って通信を行うプログラム * 中規模ソフトウェアの開発技術 - モジュール分割とリンケージエディタ - Makeによるコンパイル作業の制御 - バージョン管理システム |
授業の詳細2 |
◆授業の進め方
授業の前半では,i386アーキテクチャを題材に,講義と演習を通してアセンブリ言語プログラムの基礎を学ぶ.命令セットを網羅的に扱うことはせず,基本的な命令のみに題材を絞って,アセンブリ言語プログラミングのエッセンスを掴むことを目的とする.
授業の後半では,ライントレーサ開発のための一連の作業を4〜5人のグループで体験する.その中で,通信プログラムや制御プログラム,各種開発ツールなどについて,実践的に学習する.
各課題に対する報告書,および,口頭試問(ヒアリング)によって,理解度・達成度を評価する.
◆キーワード アセンブリ言語, アセンブリプログラミング, Lego Mindstorms, RCX, 組込プログラミング |
授業の詳細3 |
◆達成目標
以下の能力を修得すること. * 一般的な計算機の構成(アーキテクチャ)について説明できる. * アセンブリ言語でプログラムを記述できる. * 間接参照,条件ジャンプ,スタック等を使ってプログラムを自在に作成できる. * 周辺装置から入力を受け取ったり制御したりするプログラムを作成できる. * 決められた通信手順に従う通信プログラムを作成できる. * 読みやすいプログラムを書くことの必要性を理解し,実践できる. * Makeやバージョン管理システムなどを使って効率よくソフトウェア開発を行える. * ソースコードを共同所有する開発形態に馴染んでいる. * 作業工程の記述と結果に対する考察を含む報告書を作成できる. |
授業の詳細4 |
◆授業計画
以下のような順序で授業を進める.項目はおおよその順序を表し, 作業の進捗により多少の変更の可能性がある. (I)は各人で実験・レポート作成を行う.(II)以降は4〜5人のグループを作成してグループで実験・レポート作成を行う.
1. 導入 実験の目的や全体像について説明する.
(I) アセンブリ言語プログラミングの基礎
2. 最初のアセンブリプログラム 基本構文,アセンブル方法などを学ぶ.アセンブリ言語と機械語の関係について学ぶ.
3. 計算機の構成 一般的な計算機ハードウェアの構成について復習する.i386アーキテクチャについて,本科目に必要な内容を学ぶ.
4-6. 命令セット i386命令セットの中から,転送命令・演算命令・ジャンプ命令・スタック操作命令等,基本的なものを抽出して学ぶ.
8-10. アセンブリプログラミングの基礎 上記の命令を組み合わせて条件分岐・反復・サブルーチン呼び出し/復帰等の実行制御をどのように実現するかを学ぶ.文字・実数・それらの配列等のデータの扱い方についても学ぶ.さまざまな小規模プログラムを作成し,アセンブリ言語プログラミングに親しむ.
11. C言語 C言語について簡単に学び,アセンブリ言語との関係を学ぶ.
12. モジュール分割とGNU Make 複数のソースファイルにプログラムを分割する方法,GNU Makeを使ってコンパイルおよびアセンブル作業を制御する方法について学ぶ.
13. 習熟度確認 これまでの内容について, 習熟度を確認する. |
授業の詳細5 |
(II) Lego Mindstorms RCXへのダウンロードプログラムの開発
14-15. RCX Executiveとの通信 RCX上のモニタプログラムであるRCX Executiveが受け付ける通信手順を学び,それに従って生存確認やバージョン確認,特定のプログラムのダウンロードを行うPC側プログラムを作成する.
16. バージョン管理システム バージョン管理システムの使用法について学ぶ.以降の実験では,バージョン管理システムを使って,グループ内でソースコードやレポート原稿を共有する.
17. ダウンロードプログラムの完成 Sレコード形式のファイルを入力として,その内容をRCXにダウンロードするプログラムを作成する. |
授業の詳細6 |
(III) RCX用アセンブリプログラミング
18-19. RCX用アセンブリ言語 RCXに内蔵されているMCUであるH8/3292の命令セットアーキテクチャについて学ぶとともに,アセンブリ言語プログラミングの基礎について学ぶ.
20-22. 16進数表示ルーチンの開発 RCX本体の液晶部に指定された数値を表示するプログラムを作成する.
23-25. センサとD/A変換 RCXに内蔵のD/A変換器を使って光センサからの入力を読み取るプログラムを作成する.また,低域通過デジタルフィルタをプログラムして,安定した入力が得られるようにする.
26-27. モータ制御 モータの回転方向を制御するプログラムを作成する.光センサからの入力に応じて,モータの回転を変えるプログラムを作成する.
28-29. ライントレーサの作成 Legoブロックを組み立てて,ライントレーサを完成させる.
30. 習熟度確認 後半の内容についての習熟度を確認する. |
授業の詳細7 |
テキスト: 実験指導書を配布する.
参考書: 『やさしいコンピュータ科学』,A.W. Biermann著(アスキー) 『独習アセンブラ』, 日向俊二著(翔泳社) 『アセンブラ言語CASL II』, 東田幸樹, 山本芳人, 広瀬啓雄著(工学図書) 『プログラミング言語C 第2版』,B.W. Kernighan, D.M. Ritchie著(共立出版) 『アルゴリズムとデータ構造』,石畑清著(岩波書店) 『プログラミング作法』,B.W. Kernighan, R. Pike著(アスキー) |
授業の詳細8 |
成績評価: レポート提出と口頭試問(ヒアリング)により評価する.レポートにおいては,課題解決方法,結果,結果に対する考察,設計にあたり工夫した点などを述べること.ヒアリングでは,作成した課題プログラムについて,基本的なアルゴリズム,データ構造を説明すること.また,レポートの内容に関連する質疑応答も行う. レポートとヒアリングの合計で100点とし,全課題の合計が60点以上あれば合格とする.再試験はしない. AA: 90点以上100点 A: 80点以上90点未満 B: 70点以上80点未満 C: 60点以上70点未満 F: 60点未満 |
授業の詳細9 |
履修の前提となる必須科目: 「情報学群実験第1」 履修前の受講が望ましい科目:「アルゴリズムとデータ構造」「計算機言語」 |
授業の詳細10 |
|