システムソフトウェア

科目基礎情報

学校 苫小牧工業高等専門学校 開講年度 令和04年度 (2022年度)
授業科目 システムソフトウェア
科目番号 0041 科目区分 専門 / 必修
授業形態 授業 単位の種別と単位数 学修単位: 2
開設学科 創造工学科(情報科学・工学系共通科目) 対象学年 5
開設期 後期 週時間数 2
教科書/教材 教科書:中田育男 著『コンパイラ 作りながら学ぶ』オーム社(2017). 参考図書:宮本衛市 著『はじめてのコンパイラ -原理と実践-』森北出版 (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.構文解析の原理とアルゴリズムを理解し,目的にあう構文解析器を生成および応用ができる構文解析の原理とアルゴリズムを理解し,目的にあう構文解析器を生成および応用ができる.構文解析の原理とアルゴリズムを理解し,目的にあう構文解析器を生成できる.構文解析の原理とアルゴリズムを理解し,目的にあう構文解析器を生成できない.

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

Ⅰ 人間性
Ⅱ 実践性
Ⅲ 国際性
CP2 各系の工学的専門基盤知識,および実験・実習および演習・実技を通してその知識を社会実装に応用・実践できる力
CP4 他者を理解・尊重し,協働できるコミュニケーション能力と人間力

教育方法等

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

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

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

授業計画

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

評価割合

定期試験単元テスト演習課題合計
総合評価割合403030100
基礎的能力4030070
専門的能力003030