
更新日時 | 2020/04/21 14:51 |
---|---|
科目分類 | 専門教育科目 |
時間割コード | TB50301 |
授業科目名 | プログラミング言語と処理系 |
授業科目名(英語) | |
科目コード | TB50300 |
科目ナンバー | |
主担当教員(所属) | 鈴木 貢(総合理工学部知能情報デザイン学科) |
単位数・時間数 | 2.0 |
履修年次 | 3年,4年 |
開講学期 | 2020年度 前期 |
曜日・時限 | 他0 |
選択/必修/選択必修/自由 | |
履修資格 | |
各種教育プログラム名称 |
授業形態 | 講義 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
授業の目的 |
授業の到達目標及びテーマ 1. プログラミング言語の基礎概念を理解できていること 2. プログラミング言語のパラダイムを理解し,用途に応じて使い分ける判断を行えること 3. プログラミング言語処理系を実現する各処理の内容を理解していること Course description and goals: The students must finally understand followings: 1. Theory of programming languages. 2. Paradigms of programming languages. 3. Techniques of implementation of programming languages. |
|||||||||||
授業の到達目標 |
【情報システムコース 学習・教育到達目標の小項目との対応】 (C-4) コンピュータを用いたシステムのモデル化,設計および構築において,適切な技法およびツールを選択し,必要があれば新たに研究開発して利用できる. 【評価する項目】 (e1) プログラミング言語および処理系に関する知識・応用能力を有しているかを評価する. 【科目の具体的な達成目標】 1.プログラミング言語,インタプリタ,コンパイラの関係と,アセンブリ言語/機械語の位置づけを理解している. 2.プログラム中の型や宣言の役割ついて理解している. 3.可視範囲,有効範囲,生存範囲,副作用について理解している. 4.プログラミング言語のパラダイムについて理解している. 5.言語処理系の字句解析を理解している 6.言語処理系の構文解析を理解している 7.言語処理系の記号表を理解している 8.言語処理系の中間語を理解している 9.言語処理系の誤り処理を理解している 10.言語処理系のコード生成を理解している More concrete goals: Students should understand following: 1. Relations between programming languages, interpreters, compilers, and assembly/machine languages 2. Types and declarations in a program 3. Scopes, available ranges, live ranges and side effects in a program 4. Paradigms of programming languages 5. Lexical analysis in a language processor 6. Syntax analysis in a language processor 7. Symbol table in a language processor 8. Intermediate representation in a language processor 9. Error recovery technique in language processors 10. Code generation iin language processors |
|||||||||||
授業の内容および方法 |
以下の内容を14回の授業で講義するが,必ずしも1項目1コマの対応にはならず,重要な項目については数回を割き,複数の項目を1コマで講義することもある. 授業計画 第1回:プログラミング言語とは(文法と意味) 第2回:型システムと宣言 第3回:可視範囲,有効範囲,生存範囲,副作用 第4回:インタプリタとコンパイラ,動的と静的,自己反映計算とは 第5回:プログラミング言語のパラダイム(1)手続き型言語 第6回:プログラミング言語のパラダイム(2)関数型言語と論理型(宣言型)言語 第7回:プログラミング言語のパラダイム(3)オブジェクト指向言語 第8回:イベント駆動プログラミング 第9回:言語処理系の構成と字句解析 第10回:字句解析法と構文解析 第11回:構文解析法 第12回:記号表と中間語 第13回:誤り処理 第14回:実行時環境とコード生成 Class plan: Each subject does not exactly accord to each of fifteen classroom. 1. What is programming languages ? (Grammar and Meaning) 2. Type system and declaration 3. Scope, available range, live range and side effects 4. Interpreter and Compiler, Static and Dynamic, and reflection 5. Paradigms of programming languages (1) Procedural languages 6. Paradigms of programming languages (2) Functional programming and Logic (Declarative) programming 7. Paradigms of programming languages (3) Object Oriented programming 8. Event driven programming 9. Basic structure of programming languages and lexical analysis 10. Lexical analysis methods and syntax analysis 11. Syntax analysis methods 12. Symbol tables and intermediate representation 13. Error handling 14. Run-time environment and code generation Final examination |
|||||||||||
授業の進め方 |
授業で習ったことを宿題で実践し,小テストおよび期末テストで確認する. Techniques and theories learned in classrooms should be practiced and deepened with home works. |
|||||||||||
授業キーワード |
プログラミング言語,言語処理系,コンパイラ,インタプリタ Programming Languages, Language Processors, Compilers, Interpretors |
|||||||||||
テキスト(図書) | ||||||||||||
|
||||||||||||
参考文献(図書) | ||||||||||||
|
||||||||||||
|
||||||||||||
参考文献(その他)・授業資料等 |
教科書と参考文献以外に必要な印刷物や,必要なソースプログラム等は適切な方法で配布する. Materials other than the text book and references such as source codes, etc. will be provided by printings and web pages. |
|||||||||||
成績評価の方法およびその基準 |
宿題のレポートで100%で評価する. Evaluation: Home work reports: 100% 【各達成項目の評価方法と基準】 達成目標の各々につき,対応する小テスト,宿題のレポート,期末テストの問題の合計点数が6割以上取得している場合に,その達成目標を合格とする. |
|||||||||||
履修上の注意 |
【他の科目との関係】 1.MIPSのアセンブラプログラミング以降の3つの内容については,2年生後学期の計算機工学実験1の課題「アセンブラプログラミング」と密接に関連している.課題で取り扱ったMIPSアーキテクチャを題材にして,コンパイラが生成するコードの観察や評価を行うので,該当する箇所をしっかりと復習し,授業中にオンラインで提示するコンパイラが生成したコードを読み下せるように準備しておくこと. 2.「アルゴリズムとデータ構造」で学んだ内容は既知として授業を進めていく.教科書を一読して,何が使われているかをリサーチし,該当する単元を復習しておくこと. 3.「オートマトンと計算理論」や「コンピュータハードウエア基礎」の内容のうち,オートマトンあるいは状態機械の基本は,言語処理系の基本技法と密接に関係している.状態数の最小化に至るまでの内容を復習しておくこと. 4.C言語のプログラミングに習熟しており,かつ,Java等のオブジェクト指向言語の基本について理解していないと授業に追従できない.Javaと授業で扱うTinyCの記述言語であるC++との差異については,授業中に適宜説明する. 【その他】 1.教科書が手元にあると仮定して授業を進めていく. 2.宿題では計算機を用いるので,自習用ににGNU Cコンパイラでのプログラミングを行える計算機環境を整備しておくこと. Relation with other course: 1. "Code generation" have tight connection with the theme of assembler programming in "Computer Engineering Experimentation A" offered at the late stage of 2nd year. Students should be sure to understand and improve generated MIPS assembly codes by a compiler. 2. Theory and techniques learned in "Algorithm and Data structure" are prerequisite for this course. 3. Basic conccepts for automata or state machines learned in the class of "Automaton and computational theory" or "Computer hardware" are prerequisite for this course. 4. Students should be familiar with C programming and understand object oriented languages such as Java. Notes: 1. The lecturer assumes that students have their own text books. 2. Computer system stand by GNU C compiler for each students, which will be used at home work. |
|||||||||||
オフィスアワー |
コロナ対策のため,Moodleページのフォーラムを通して質問等に答える. どうしても面接での応対が必要な場合は,メールでアポイントメントをとること. For corona freeness, we basically communicate through Forums (a forum?) equipped with Moodle. Reservations through e-mail (suzuki@cis.shimane-u.ac.jp) are required for face-to-face communication, but it is not strongly not recommended. |
|||||||||||
ディプロマポリシーとの関係区分 | ||||||||||||
使用言語区分 | 日本語のみ | |||||||||||
その他 |
準備学修に必要な学修の時間(1回の授業当たり) /Time required for preparatory study |
1.5時間 |
---|---|
授業の実施方法 /Types of classes |
オンデマンド授業/On-demand type |
No. | 担当教員 | 担当教員所属 |
---|---|---|
1 | 鈴木 貢 | 総合理工学部知能情報デザイン学科 |