システムソフトウェア

科目基礎情報

学校 苫小牧工業高等専門学校 開講年度 2018
授業科目 システムソフトウェア
科目番号 116886 科目区分 専門 / 必修
授業形態 授業 単位の種別と単位数 学修単位: 2
開設学科 情報工学科 対象学年 4
開設期 前期 週時間数 前期:3 後期:0
教科書/教材 教科書: 中井央 著,中田育男 監修:『コンパイラ』コロナ社 (2007). 参考図書: ・宮本衛市:『はじめてのコンパイラ -原理と実践-』森北出版 (2007)  ・中田育男:『コンパイラの構成と最適化』朝倉書店 (1999) ・徳田雄洋:『言語と構文解析』情報数学講座 5,共立出版 (1995) ・A.V.エイホ,R.セシィ,J.D.ウルマン,原田賢一:『コンパイラ―原理・技法・ツール<1>』サイエンス社 (1990) ・A.V.エイホ,R.セシィ,J.D.ウルマン,原田賢一:『コンパイラ―原理・技法・ツール<2>』サイエンス社 (1990) ・J.フリードル,田和勝:『詳説 正規表現』オライリー・ジャパン,第2版 (2003) ・M. S. Lam, R. Sethi, J. D. Ullman, A. V. Aho. Compilers: Principles, Techniques, and Tools. Addison-Wesley, 2nd edition (2006)
担当教員 大橋 智志

到達目標

1.言語処理系(コンパイラ)の構成要素における役割,目的,機能を正確に理解し説明できる.
2.字句解析の原理とアルゴリズムを理解し,目的にあう字句解析器を生成および応用ができる.
3.構文解析の原理とアルゴリズムを理解し,目的にあう構文解析器を生成および応用ができる.

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
1.言語処理系(主にコンパイラ)の構成要素における役割,目的,機能を正確に理解し説明できる.コンパイラの構成要素における役割,目的,機能を正確に理解し詳しく説明できる.コンパイラの構成要素における役割,目的,機能を理解し簡単に説明できる.コンパイラの構成要素における役割,目的,機能を理解していない。
2.字句解析の原理とアルゴリズムを理解し,目的にあう字句解析器を生成および応用ができる.字句解析の原理とアルゴリズムを理解し,目的にあう字句解析器を生成および応用ができる.字句解析の原理とアルゴリズムを理解し,目的にあう字句解析器を生成できる.字句解析の原理とアルゴリズムを理解し,目的にあう字句解析器を生成できない.
3.構文解析の原理とアルゴリズムを理解し,目的にあう構文解析器を生成および応用ができる構文解析の原理とアルゴリズムを理解し,目的にあう構文解析器を生成および応用ができる.構文解析の原理とアルゴリズムを理解し,目的にあう構文解析器を生成できる.構文解析の原理とアルゴリズムを理解し,目的にあう構文解析器を生成できない.

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

JABEE基準1 学習・教育到達目標 (d)(1), JABEE基準1 学習・教育到達目標 (d)(4), JABEE基準1 学習・教育到達目標 (e), JABEE基準1 学習・教育到達目標 (f), 学習目標 Ⅱ, 学校目標 D(工学基礎), 学科目標 D(工学基礎), 本科の点検項目 D-ⅳ, 学校目標 E(継続的学習), 本科の点検項目 E-ⅱ, 学校目標 F(専門の実践技術), 学科目標 F(専門の実践技術) , 本科の点検項目 F-ⅰ, 本科の点検項目 F-ⅱ

教育方法等

概要:
 コンピュータシステムを構成するソフトウェアを一般にシステムソフトウェアと呼ぶ.本講義ではコンパイラに注目し,形式言語解析の基礎理論とアルゴリズムについて学び,演習課題も含めた内容に取り組むことになる.特に,コンパイラを構成するための理論・技術の中心となる字句解析と構文解析については,早くから自動生成の方法が確立されている.本講義では,このような自動生成ツール(Lex,Yacc)を利用したコンパイラの構成方法とそれらの背景にある理論について詳しく学習する.
授業の進め方と授業内容・方法:
 授業は座学を中心に進めるが,コンピュータを使用した演習も実施する.
 授業内容は,到達目標に記載した3つ内容を中心に学習する.字句解析および構文解析の学習については,字句解析器生成ツール(Lex)と構文解析器生成ツール(Yacc)を使用した演習課題に取り組み,実践的な内容からコンパイラの構成方法と内部処理について理解する.
 1.言語処理系(コンパイラ)の構成要素における役割,目的,機能の学習
 2.字句解析の原理とアルゴリズムの学習,字句解析器生成ツール(Lex)の演習
 3.構文解析の原理とアルゴリズムの学習,構文解析器生成ツール(Yacc)の演習
 到達目標の確認として,演習課題2回,達成度確認課題2回,定期試験1回を実施し,これらを成績評価に含める.また,定期試験の結果によっては再試験を実施する.ただし,演習課題の提出状況や授業態度等に問題がある学生には,再試験を実施しない場合もある.
注意点:
 受講に際して,教科書,ノート,筆記用具を持参すること.適宜,資料を配布することがある.また,演習課題の提出が必須となることから,プログラム作成に関連する知識,特に「データ構造とアルゴリズム」に関する内容を復習しておくこと.演習課題の提出物は期限までに提出すること.報告・連絡・相談もなく提出期限内に課題が提出されない場合は,課題評価点を減点する.提出物の内容が不十分な場合には再提出を求める.なお,講義予定に変更がある場合には,講義中に連絡するので注意すること.
 本講義は学修単位制を導入していることから,自学自習として講義および演習に取り組む前には,関連分野の予習復習をおこなうこと.また,演習課題に取り組む時間が多く必要となることから,コンピュータ実習室(情報処理実習室,情報システム実習室)を積極的に利用すること.

授業計画

授業内容・方法 週ごとの到達目標
前期
1週 言語処理系の歴史,言語処理系の構成要素,コンパイラの論理的構造 言語処理系の構成要素について理解し役割と意味を説明できる.また,コンパイラの論理的構造を理解し説明できる.
2週 形式言語の文法定義,BNF記法,構文図式,解析木 形式言語の文法を定義し文法定義に用いる表記方法(BNF,構文図式等)を理解できる.また,言語の構文から解析木を導出できる.
3週 形式言語の文法定義,BNF記法,構文図式,解析木 形式言語の文法を定義し文法定義に用いる表記方法(BNF,構文図式等)を理解できる.また,言語の構文から解析木を導出できる.
4週 字句解析,正規表現,状態遷移図,非決定性有限オートマトン(NFA),決定性有限オートマトン(DFA),NFAからDFEへの変換処理 字句解析の役割と仕組みを理解し説明できる.また,字句解析を行う正規表現から有限オートマトンを構成し,その状態数の最小化ができる.
5週 字句解析,正規表現,状態遷移図,非決定性有限オートマトン(NFA),決定性有限オートマトン(DFA),NFAからDFEへの変換処理 字句解析の役割と仕組みを理解し説明できる.また,字句解析を行う正規表現から有限オートマトンを構成し,その状態数の最小化ができる.
6週 字句解析,正規表現,状態遷移図,非決定性有限オートマトン(NFA),決定性有限オートマトン(DFA),NFAからDFEへの変換処理 字句解析の役割と仕組みを理解し説明できる.また,字句解析を行う正規表現から有限オートマトンを構成し,その状態数の最小化ができる.
7週 字句解析,正規表現,状態遷移図,非決定性有限オートマトン(NFA),決定性有限オートマトン(DFA),NFAからDFEへの変換処理 字句解析の役割と仕組みを理解し説明できる.また,字句解析を行う正規表現から有限オートマトンを構成し,その状態数の最小化ができる.
8週 字句解析演習(Lex) 字句解析生成器ツール(Lex)を利用して目的にあう字句解析器を生成できる.
9週 字句解析演習(Lex) 字句解析生成器ツール(Lex)を利用して目的にあう字句解析器を生成できる.
10週 構文解析,上向き構文解析,下向き構文解析 構文解析の役割と仕組みを理解し説明できる.また,異なる構文解析手法について,それぞれの差異を理解し説明できる.
11週 構文解析,上向き構文解析,下向き構文解析 構文解析の役割と仕組みを理解し説明できる.また,異なる構文解析手法について,それぞれの差異を理解し説明できる.
12週 構文解析,上向き構文解析,下向き構文解析 構文解析の役割と仕組みを理解し説明できる.また,異なる構文解析手法について,それぞれの差異を理解し説明できる.
13週 構文解析,上向き構文解析,下向き構文解析 構文解析の役割と仕組みを理解し説明できる.また,異なる構文解析手法について,それぞれの差異を理解し説明できる.
14週 構文解析演習(Yacc) 構文解析生成器ツール(Yacc)を利用して目的にあう構文解析器を生成できる.
15週 構文解析演習(Yacc) 構文解析生成器ツール(Yacc)を利用して目的にあう構文解析器を生成できる.
16週 定期試験 到達目標の項目1.2.3.を満足している.

評価割合

定期試験達成度中間確認試験演習課題合計
総合評価割合502030100
基礎的能力0201030
専門的能力5002070