タイトル
2020 年度 第3学期
工学部 情報系学科
日英区分: 日本語
コンパイラ
Compiler
 
講義番号 科目区分 学期
093017 専門科目 第3学期
ナンバリングコード 教室
KABB0ENIZ2005N 工学部4号館第11講義室
必修・選択の別
選択
単位数 曜日・時限
2 月5,月6,金1,金2
担当教員(ローマ字表記)
名古屋 彰 [NAGOYA Akira], 渡邊 誠也 [WATANABE Nobuya]
持続可能な開発目標(SDGs)
  • 産業と技術革新の基盤をつくろう
対象学生
工学部H23〜H26入学生
他学部学生の履修の可否
連絡先
E-mail: lect-compiler(at)arc.cs.okayama-u.ac.jp
(E-mail アドレスの (at) の部分は半角の@に置き換えて送信のこと)
オフィスアワー
電子メールにて連絡先に事前にアポイントメントをとること
学部・研究科独自の項目
特になし
使用言語
日本語
授業の概要
プログラミング言語における基礎的な概念および形式化について述べ, プログラミング言語処理系の概要と構成・実現法を講述する。 特に,プログラミング言語をアセンブリ言語/機械語に変換する 変換系(コンパイラ)における基本的な技術である字句解析, 構文解析,意味解析,コード生成を中心に講述する。
学習目的
コンパイラの役割,基本的な概念,機能,理論的な背景,構造, 実現方式について学習する。
到達目標
1. コンパイラの基本的な機能と構成を理解する
2. 字句解析,構文解析を通した形式的な言語処理を理解する
3. コード生成を通してコンピュータアーキテクチャやオペレーティングシステムの理解を深める
授業計画
授業計画(連続する2時間(60分×2)の授業を1回としている)
1. 授業の概要とコンパイラの概要
プログラミング言語と言語処理系(変換系,通訳系),コンパイラの機能と構成
2. 字句解析(1)
字句解析の概要,正規表現,有限オートマトン
3. 字句解析(2)
字句解析プログラム,字句解析プログラムと自動生成
4. 文法
バッカス記法(BNF),構文図式,文法と言語の形式的定義
5. 構文解析(1)
構文解析の概要,構文解析法,再帰的下向き構文解析
6. 構文解析(2)
LR構文解析
7. 構文解析(3)
構文解析プログラムの自動生成
8. 前半のまとめ・復習
9. 意味解析
意味解析の概要,名前空間とスコープ,型チェック,エラーリカバリ
10. コード生成(1)
コード生成の概要,実行時環境,メモリ領域,関数フレーム
11. コード生成(2)
式,文,関数のコード生成
12. コード生成(3)
C言語プログラムからのコード生成
13. 最適化
主要なコード最適化,制御フローグラフ,変数生存性解析
14. コンパイラに関するトピック
15. 復習
期末試験
授業時間外の学習(予習・復習)方法(成績評価への反映についても含む)
予習: 授業前に教科書をよく読んでおくこと
復習: 演習課題に取り組むこと
授業形態
(1)授業形態-全授業時間に対する[講義形式]:[講義形式以外]の実施割合
90% : 10%
(2)授業全体中のアクティブ・ラーニング
協働的活動(ペア・グループワーク、ディスカッション、プレゼンテーションなど)
なし
対話的活動(教員からの問いかけ、質疑応答など)
1~2回程度
思考活動(クリティカル・シンキングの実行、問いを立てるなど)
なし
理解の確認・促進(問題演習、小テスト、小レポート、授業の振り返りなど)
1~2回程度
(3)授業形態-実践型科目タイプ
該当しない
(4)授業形態-履修者への連絡事項
主に講義形式の授業であるが,一部,PCを用いてプログラミングを伴う演習を行う。
使用メディア・機器・人的支援の活用
視聴覚メディア(PowerPointのスライド、CD、DVDなど)
半分以上
学習管理システム(Moodleなど)
なし
人的支援(ゲストスピーカー、TA、ボランティアなど)
なし
履修者への連絡事項
プロジェクターによるスライドと板書を併用する。
教科書
備考
「コンパイラ ― 情報系教科書シリーズ ―」,湯淺太一著,オーム社
参考書
備考
1. 「コンパイラ ― 新コンピュータサイエンス講座 ―」,中田育男著,オーム社
2. 「コンピュータの構成と設計 ハードウエアとソフトウエアのインタフェース 第5版(2014年出版)」上巻および下巻,David A. Patterson, John L. Hennessy著,日経BP社

その他,授業時に適宜提示する
成績評価基準(授業評価方法)
出席状況,演習課題(20%),期末試験(80%)により総合的に評価する
担当教員の研究活動との関連
担当教員(名古屋)はコンピュータアーキテクチャ,リコンフィギャラブルシステム,設計自動化技術の研究を行っている。
担当教員(渡邊)はプログラミング言語処理系,コンピュータアーキテクチャ,並列計算に関する研究を行っている。
この講義では,担当教員の専門分野(特にプログラミング言語処理系)の基本的な部分を教授する。
受講要件
C言語によるプログラミングの基本的な知識を有すること
教職課程該当科目
情報の教科に関する科目(科目区分: 情報システム)に該当
JABEEとの関連
関連しない
持続可能な開発目標(SDGs)

(インフラ、産業化、イノベーション)強靱(レジリエント)なインフラ構築、包摂的かつ持続可能な産業化の促進及びイノベーションの推進を図る。
実務経験のある教員による授業科目
該当する
備考/履修上の注意/実務経験の内容
情報工学実験C(ソフトウェア)の履修に必要な知識を講義するため,
履修することを強く勧める.
担当教員の1名は企業での研究開発経験あり
コンピテンシー
項目割合
【 教 養 】多面的に考える能力 
【 教 養 】技術の影響や効果を理解する能力 
【 教 養 】社会的責任を理解する能力 
【 専門性 】自然科学の基礎知識 
【 専門性 】自然科学の基礎知識の応用力 
【 専門性 】プログラミング言語に関する知識30%
【 専門性 】プログラミング言語に関する知識の応用力 
【 専門性 】情報処理システムに関する知識30%
【 専門性 】情報処理システムに関する知識の応用力 
【 専門性 】情報処理基盤に関する知識20%
【 専門性 】情報処理基盤に関する知識の応用力20%
【 情報力 】要求分析力 
【 情報力 】デザイン能力 
【 行動力 】論理的に記述できる能力 
【 行動力 】コミュニケーション力 
【 行動力 】計画立案能力 
【 行動力 】計画遂行能力 
【自己実現力】自主的に学習できる能力 
【自己実現力】継続的に学習できる能力 
関連割合の合計100%
ページの先頭へ