到達目標
1. コンパイラの論理的構成を説明することができる。中置記法の算術式を後置記法に変換できる。
バッカス記法による文法記述を理解できる。正規表現から決定性有限オートマトンに変換できる。
2. 構文解析の役割を説明できる。シフト還元構文解析法で構文解析できる。
文法から直接左再帰性を除去できる。
LL(1)文法を判定できる。
3. LR構文解析表を作成し、構文解析できる。
意味解析の役割を説明できる。
名前表の検索アルゴリズムを説明できる。
4. コード生成法を説明できる。
制御フロー解析およびデータフロー解析の方法を説明できる。
最適化変換の方法を説明できる。
例外処理のためのコード生成法,実行環境の役割,メモリ管理手法をそれぞれ説明できる。
ルーブリック
| 理想的な到達レベルの目安 | 標準的な到達レベルの目安 | 未到達レベルの目安 |
評価項目1 | コンパイラとインタプリタの違いを説明できる。後置記法の利点を説明でき,個別の演算処理へ分解できる。プログラミング言語の文法をバッカス記法で表現できる。トークンを正規表現で表現でき,それを受理する決定性有限オートマトンを設計できる。 | コンパイラの役割・構成を説明できる。中置記法の算術式から後置記法に変換できる。正規表現から決定性有限オートマトンに変換できる。 | コンパイラの役割・構成を説明できない。中置記法の算術式から後置記法に変換できない。正規表現から決定性有限オートマトンに変換できない。 |
評価項目2 | 下向き構文解析の問題点を理解し,その対処法を説明することができる。LL(1)構文解析を行うことができ,LL(1)文法であるか判定できる。 | シフト還元構文解析におけるシフトと還元の意味を説明できる。文法から直接左再帰性を除去できる。LL(1)文法であるかどうか判定できる。 | 構文解析の役割・動作を説明できない。文法から直接左再帰性を除去できない。LL(1)文法であるかどうか判定できない。 |
評価項目3 | 与えられた文法から構文解析表を作成し,LR構文解析を行うことができる。名前表の検索に適した検索アルゴリムを設計できる。 | LR構文解析法で構文解析できる。意味解析の役割が説明できる。名前表の検索アルゴリズムを説明できる。 | LR構文解析法で構文解析できない。意味解析の役割が説明できない。名前表の検索アルゴリズムを説明できない。 |
評価項目4 | コード最適化の要件および最適化にかかるコストと効果の関係を説明できる。データフロー方程式の意味を説明できる。例外処理方式の違いを説明できる。 | コード生成について説明できる。制御フロー解析およびデータフロー解析について説明できる。最適化変換の方法を説明できる。例外処理,実行環境の役割,メモリ管理手法をそれぞれ説明できる。 | コード生成について説明できない。制御フロー解析およびデータフロー解析について説明できない。最適化変換の方法を説明できない。例外処理,実行環境の役割,メモリ管理手法をそれぞれ説明できない。 |
学科の到達目標項目との関係
準学士課程(本科1〜5年)学習教育目標 (2)
説明
閉じる
JABEE基準 (d-1)
説明
閉じる
JABEE基準 (d-2a)
説明
閉じる
システム創成工学教育プログラム学習・教育目標 B-2
説明
閉じる
システム創成工学教育プログラム学習・教育目標 D-1
説明
閉じる
教育方法等
概要:
ソースコードをプログラミング言語の記法に沿って解析し,その意味する内容と同一な実行プログラムに変換するまでの手順を学習する。また,プログラムを効率的に動作させるための処理である最適化技術や実行環境の役割についても学習する。
授業の進め方・方法:
座学による講義を行う。随時,例題および演習問題を提示し,理解度の向上を図る。
定期試験返却時には解説を行い,理解が不十分な点を解消する。
注意点:
関連科目:
「プログラミングI・II」を基礎とする。オートマトンの詳細は専攻科の「計算理論」で学ぶ。
学習指針:
ノートを取る際には十分に思考して内容を理解するように努めること。授業中に扱う例題や演習問題は積極的に解答してみること。疑問点は講義中に解決するよう心掛けること。
自己学習:
授業時間以外の予習・復習に努めること。教科書で紹介されているソースコードに目を通したり,実際にコードを記述してコンパイルしてみることは,理解を深めるために有効である。
授業計画
|
|
週 |
授業内容 |
週ごとの到達目標 |
前期 |
1stQ |
1週 |
コンパイラの概要 |
コンパイラの役割を説明できる。
|
2週 |
算術式の記法 |
中値記法と後置記法の違いを理解し,相互に変換できる。
|
3週 |
コンパイラの構成 |
コンパイラの論理的な構成を説明できる。
|
4週 |
バッカス記法 |
バッカス記法と構文図式で記述された文法を理解できる。
|
5週 |
字句解析の役割 |
字句解析の役割を説明できる。
|
6週 |
非決定性有限オートマトン |
非決定性有限オートマトンの動作を説明できる。
|
7週 |
決定性有限オートマトン |
決定性有限オートマトンの制約条件を説明できる。
|
8週 |
字句解析の例 |
正規表現から決定性有限オートマトンを生成できる。
|
2ndQ |
9週 |
構文解析の役割 |
構文解析の役割を説明できる。
|
10週 |
上向き構文解析法 |
上向き構文解析法の概要を説明できる。
|
11週 |
下向き構文解析法の概要 |
下向き構文解析法の概要を説明できる。
|
12週 |
下向き構文解析法の問題点 |
下向き構文解析法の問題点を説明できる。
|
13週 |
LL構文解析の原理 |
LL構文解析の原理を説明できる。
|
14週 |
LL(1)文法 |
LL(1)文法の判定アルゴリズムを説明できる。
|
15週 |
前期末試験 |
授業内容を理解し,試験問題に対して正しく解答できる。
|
16週 |
試験返却・解説 |
試験問題を見直し,理解が不十分な点を解消する。
|
後期 |
3rdQ |
1週 |
LR構文解析の原理 |
LR構文解析における項と状態の定義を説明できる。
|
2週 |
LR構文解析のアルゴリズム |
LR構文解析法で構文解析ができる。
|
3週 |
LR構文解析表 |
LR構文解析表を作成できる。
|
4週 |
意味解析 |
意味解析の役割を説明できる。
|
5週 |
名前表 |
名前表の検索アルゴリズムを説明できる。
|
6週 |
コード生成(1) |
式と代入文のコード生成法を説明できる。
|
7週 |
コード生成(2) |
if文とwhile文のコード生成法を説明できる。
|
8週 |
コード最適化 |
コード最適化の目的と要件を説明できる。
|
4thQ |
9週 |
制御フロー解析 |
プログラムの制御フローを解析できる。
|
10週 |
データフロー解析 |
データフロー方程式の意味を説明できる。
|
11週 |
最適化変換 |
最適化変換の方法を説明できる。
|
12週 |
例外処理 |
例外処理の実行手順とコンパイル方法を説明できる。
|
13週 |
実行環境 |
実行環境の役割を説明できる。
|
14週 |
メモリ管理 |
メモリ管理の手法を説明できる。
|
15週 |
学年末試験 |
授業内容を理解し,試験問題に対して正しく解答できる。
|
16週 |
試験返却・解説 |
試験問題を見直し,理解が不十分な点を解消する。
|
モデルコアカリキュラムの学習内容と到達目標
分類 | 分野 | 学習内容 | 学習内容の到達目標 | 到達レベル | 授業週 |
専門的能力 | 分野別の専門工学 | 情報系分野 | システムプログラム | 形式言語の概念について説明できる。 | 4 | |
オートマトンの概念について説明できる。 | 4 | |
コンパイラの役割と仕組みについて説明できる。 | 4 | |
形式言語が制限の多さにしたがって分類されることを説明できる。 | 4 | |
正規表現と有限オートマトンの関係を説明できる。 | 4 | |
評価割合
| 試験 | レポート | 合計 |
総合評価割合 | 80 | 20 | 100 |
基礎的能力 | 0 | 0 | 0 |
専門的能力 | 80 | 20 | 100 |
分野横断的能力 | 0 | 0 | 0 |