コンパイラ

科目基礎情報

学校 高知工業高等専門学校 開講年度 令和06年度 (2024年度)
授業科目 コンパイラ
科目番号 I4020 科目区分 専門 / 必修
授業形態 講義 単位の種別と単位数 学修単位: 2
開設学科 SD 情報セキュリティコース 対象学年 4
開設期 前期 週時間数 2
教科書/教材 参考書
教科書は用いず,スライドで説明する。
担当教員 岡村 修司

到達目標

コンパイラがソースプログラムから機械語を生成するための主なフェーズ(字句解析,構文解析,中間コード生成,仮想機械と仮想機械語,コード生成)について学び,その内容を理解し,説明できるようになることを目標とする。

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
字句解析字句解析の手法を理解し,説明できる。字句解析の手法を理解している。字句解析の手法を理解していない。
構文解析再帰下降解析による構文解析を理解し,説明できる。再帰下降解析による構文解析を理解している。再帰下降解析による構文解析を理解していない。
中間コード生成中間コード生成の手法を理解し,説明できる。中間コード生成の手法を理解している。中間コード生成の手法を理解していない。
仮想機械と仮想機械語仮想機械と仮想機械語を理解し,説明できる。仮想機械と仮想機械語を理解している。仮想機械と仮想機械語を理解していない。
コード生成コード生成の手法を理解し,説明できる。コード生成の手法を理解している。コード生成の手法を理解していない。

学科の到達目標項目との関係

学習・教育到達度目標 (C) 説明 閉じる

教育方法等

概要:
コンパイラは高水準のプログラミング言語を機械語の命令列に変換し,出力するソフトウェアである。コンパイラを構成する各フェーズが,どのような理論に基づいて構築されているのかを学び,コンパイラ(サブセット版)のソースコードから理論がどのように実装されているのかを学ぶ。
授業の進め方・方法:
学習内容はスライドを用いて説明する。理論的な内容について学習した後,Cコンパイラ(サブセット版)のソースプログラムを用い,理論がどのように実装されているのかを理解する。学習の過程でプログラムをコンパイルすることがあるが,Linux上のGCCを用いる。学習内容を確認し,理解を深めるため,課題を出す。
学習内容は,正規表現,有限オートマトン,アセンブリ言語と深い関係がある。
注意点:
試験の成績を70%,平素の学習状況(課題等)を30%とし,総合的に評価する。成績評価は中間と期末の各期間の評価の平均とする。授業中,他の学生と相談してもよいが,各自が主体的に取り組むことが重要である。授業に真剣に取り組まない者は,平素の学習状況を減点することがある。
本科目は学習単位のため,1単位時間(45分)の講義×15回に加えて,2単位時間(90分)の自学自習×15回が必要である。したがって,45時間以上の自学自習を行わなければならない。これが達成されないと,成績評価が60点以上の場合でも,59点として扱い,単位を認定しない。1課題の提出をもって,自学自習1回が実施されたものとする。指定された期日までに課題が提出されなかった場合,減点することがある。

授業の属性・履修上の区分

アクティブラーニング
ICT 利用
遠隔授業対応
実務経験のある教員による授業

授業計画

授業内容 週ごとの到達目標
前期
1stQ
1週 ガイダンス
コンパイラ学ぶ前の準備
授業の進め方と評価方法を理解する。
コンパイラ,リンカおよびローダの基本的な機能を理解する。
2週 コンパイラの概要 コンパイル処理の主要なフェーズについて理解する。
3週 Cコンパイラ(サブセット版)の概要 実際に動作可能なコンパイラとして,Cコンパイラ(サブセット版)のソースコードを参考にする。その概要について理解する。
4週 形式言語 形式言語の用語と定義について理解する。
5週 字句解析(1) 字句解析の基本について理解する。
6週 字句解析(2) 字句解析の基本について理解する。
7週 構文解析(1) 再帰下降解析の基本について理解する。
8週 構文解析(2) 再帰下降解析の基本について理解する。
2ndQ
9週 記号表と型 記号表の構造と型の表現方法について理解する。
10週 中間言語 Cコンパイラ(サブセット版)の中間言語について理解する。
11週 実行時のデータ構成 実行時のデータ九尾正の概要について理解する。
12週 仮想機械と機械語 Cコンパイラ(サブセット版)が生成する機械語が動作する,仮想機械とその機械語について理解する。
13週 インタープリタ Cコンパイラ(サブセット版)が生成した仮想機械の機械語を実行するインタープリタについて理解する。
14週 コード生成(1) 仮想機械の機械語の生成について理解する。
15週 コード生成((2) 仮想機械の機械語の生成について理解する。
16週

モデルコアカリキュラムの学習内容と到達目標

分類分野学習内容学習内容の到達目標到達レベル授業週
専門的能力分野別の専門工学情報系分野プログラミング主要な言語処理プロセッサの種類と特徴を説明できる。3前1
ソフトウェア開発に利用する標準的なツールの種類と機能を説明できる。3前1
プログラミング言語は計算モデルによって分類されることを説明できる。3
主要な計算モデルを説明できる。3
システムプログラム形式言語の概念について説明できる。4前2
コンパイラの役割と仕組みについて説明できる。4前1
形式言語が制限の多さにしたがって分類されることを説明できる。4前2
正規表現と有限オートマトンの関係を説明できる。4前2

評価割合

試験課題合計
総合評価割合7030100
基礎的能力502070
専門的能力201030