到達目標
1. コンパイラの処理の各フェーズにおける用語を説明できる
2. コンパイラの処理の各フェーズで使われる文法記述を読むことができる
3. コンパイラの処理の各フェーズに関して処理手順を説明できる
ルーブリック
| 理想的な到達レベルの目安 | 標準的な到達レベルの目安 | 未到達レベルの目安 |
評価項目1 | コンパイラの処理の各フェーズにおける用語を詳細に説明できる。 | コンパイラの処理の各フェーズにおける用語を説明できる。 | コンパイラの処理の各フェーズにおける用語を説明できない。 |
評価項目2 | コンパイラの処理の各フェーズで使われる文法を記述できる。 | コンパイラの処理の各フェーズで使われる文法記述を読むことができる。 | コンパイラの処理の各フェーズで使われる文法記述を読むことができない。 |
評価項目3 | コンパイラの処理の各フェーズに関して処理手順を説明でき、文法記述から処理手順を生成することができる。 | コンパイラの処理の各フェーズに関して処理手順を説明できる。 | コンパイラの処理の各フェーズに関して処理手順を説明できない。 |
学科の到達目標項目との関係
教育方法等
概要:
プログラマは、通常、人間の言葉に近いプログラミング言語(例:C言語)を用いてプログラムを作成する。しかし、コンピュータが直接実行できるのは機械語のプログラムだけである。したがって、機械語以外の言語で作成されたプログラムは、機械語のプログラムに翻訳する必要がある。この翻訳を行うのがコンパイラやインタプリタなどの言語処理系である。言語処理系は、現在のソフトウェア開発環境において、重要かつ欠くことのできない基本的なソフトウェア群である。本授業では、言語処理系の中でも重要な位置を占める「コンパイラ」を中心に講義する。
授業目標は次の2点である。第1の目標は、コンパイラの全体構造と各部の役割を理解することである。第2の目標は、コンパイラの各部が行う処理を把握し、そこで行われている基本技術を学ぶことである。コンパイラの各部を実現するための技法やアルゴリズムは他のソフトウェア開発でも利用できる。
授業の進め方・方法:
板書を中心に授業を進めていく。
注意点:
内容の理解と定着をはかるため、課題に取り組む時間が必要である。
授業計画
|
|
週 |
授業内容 |
週ごとの到達目標 |
前期 |
1stQ |
1週 |
ガイダンス、プログラミング言語 |
各種プログラミング言語の特徴を理解する。
|
2週 |
コンパイラとインタプリタ |
コンパイラとインタプリタの違いを理解する。
|
3週 |
コンパイラの論理的構造と物理的構造 |
論理的構造の各フェーズで行う処理の概要を理解する。 物理的構造の特徴を理解する。
|
4週 |
言語と形式文法(BNF表記) |
BNF表記の記述法を習得する。 プログラムの一部をBNFで記述できる。
|
5週 |
言語と形式文法(構文図)、 あいまいな文法,あいまいでない文法 |
構文図の記述法を習得する。 プログラムの一部を構文図で記述できる。 あいまいな文法の特徴を説明できる。
|
6週 |
形式文法(句構造文法、正規文法,文脈自由文法) |
句構造文法について説明できる。 正規文法、文脈自由文法の特徴を説明できる。
|
7週 |
形式文法(正規文法,文脈自由文法) |
プログラミング言語の文法は正規文法、文脈自由文法で記述できることを理解する。
|
8週 |
中間試験 |
|
2ndQ |
9週 |
字句解析(トークン) |
トークンの特徴を説明できる。
|
10週 |
字句解析(字句解析の処理内容) |
字句解析の処理内容を説明できる。
|
11週 |
字句解析(字句解析の処理内容) |
トークンを検出できる理屈を理解する。
|
12週 |
字句解析(正規表現とオートマトン) |
正規表現から非決定性有限オートマトンを生成できる。
|
13週 |
字句解析(決定性オートマトンの作成) |
非決定性有限オートマトンを状態数最少の決定性オートマトンに変換できる。
|
14週 |
字句解析(決定性オートマトンの動作) |
決定性オートマトンの動作をトレースし、プログラムを字句解析する処理を机上で実行できる。
|
15週 |
期末試験 |
|
16週 |
テスト返却と解説 |
|
後期 |
3rdQ |
1週 |
構文解析(文脈自由文法) |
プログラムの構文を記述するには文脈自由文法を使うことを理解する。
|
2週 |
構文解析(LL(1)文法) |
LL(1)文法の特徴を理解する。
|
3週 |
構文解析(再帰的下向き構文解析) |
再帰的下向き構文解析の処理の特徴を理解する。
|
4週 |
構文解析(First集合,Follow集合,Director集合,構文解析表) |
First集合、Follow集合、Director集合の意味を理解する。 LL(1)文法から構文解析表を作成することができる。
|
5週 |
構文解析(上向き構文解析) |
上向き構文解析の特徴を理解する。
|
6週 |
構文解析(上向き構文解析) |
上向き構文解析の動作をトレースし、どのように構文木が作られるかを示すことができる。
|
7週 |
意味解析(意味解析の処理内容) |
意味解析の必要性を理解する。
|
8週 |
中間試験 |
|
4thQ |
9週 |
意味解析(記号表の構成と探索) |
記号表に保持するデータの特徴を理解する。 記号表の構造の特徴を理解する。 記号表にデータを登録する手法、記号表からデータを探索する手法を理解する。
|
10週 |
コード生成(中間コードの種類) |
中間コードの必要性を理解する。 中間コードにどのようなものがあるかを説明できる。
|
11週 |
コード生成(中間コードの生成) |
構文木から中間コードを生成する手法を理解する。
|
12週 |
コード生成(中間コードの生成) |
構文木から中間コードを生成する手法を理解する。
|
13週 |
コード生成(中間コードの実行) |
中間コードの実行方法に関して理解する。
|
14週 |
コードの最適化 |
局所的最適化に関して理解する。 反復構造に関する最適化に関して理解する。
|
15週 |
期末試験 |
|
16週 |
テスト返却と解説 |
|
モデルコアカリキュラムの学習内容と到達目標
分類 | 分野 | 学習内容 | 学習内容の到達目標 | 到達レベル | 授業週 |
評価割合
| 試験 | 発表 | 相互評価 | 態度 | ポートフォリオ | その他 | 合計 |
総合評価割合 | 80 | 0 | 0 | 0 | 20 | 0 | 100 |
基礎的能力 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
専門的能力 | 80 | 0 | 0 | 0 | 20 | 0 | 100 |
分野横断的能力 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |