シラバス参照

講義概要/Course Information
2024/04/29 現在

科目基礎情報/General Information
授業科目名
/Course title (Japanese)
基盤ソフトウェア特論
英文授業科目名
/Course title (English)
Advanced Progamming Languages: Concepts and Implementation
科目番号
/Code
開講年度
/Academic year
2021年度 開講年次
/Year offered
全学年
開講学期
/Semester(s) offered
後学期 開講コース・課程
/Faculty offering the course
博士前期課程、博士後期課程
授業の方法
/Teaching method
講義 単位数
/Credits
2
科目区分
/Category
大学院専門教育科目 - 専門科目Ⅱ
開講類・専攻
/Cluster/Department
情報・ネットワーク工学専攻
担当教員名
/Lecturer(s)
小宮 常康
居室
/Office
西10-630
公開E-mail
/e-mail
komiya@spa.is.uec.ac.jp
授業関連Webページ
/Course website
http://www.spa.is.uec.ac.jp/~komiya/
更新日
/Last update
2021/03/08 14:49:05 更新状況
/Update status
公開中
/now open to public
講義情報/Course Description
主題および
達成目標(2,000文字以内)
/Themes and goals(up to 2,000 letters)
(a) 主題:よいプログラムを書くには,単にプログラミング言語を習得し,アルゴリズムを学ぶだけでは不十分である.解くべき問題をプログラミング言語上でどう表現するかでプログラムの可読性・開発効率・拡張のしやすさ等が大きく変わる.この一つのキーとなるのが,(大抵のプログラミング言語言語に備わっている)プログラミング言語の抽象化能力である.本講義では,計算手順,データ,言語の側面から抽象化について学ぶ.

Abstraction in programming languages is one of the most important technique for helping to organize, understand, or extend programs elegantly.  Major topics of this course are abstraction of data and computation, and metalinguistic abstraction.  Mechanisms of computation and programming language systems are also included.

(b) 達成目標:プログラムやデータを段階的に抽象化して構成することで見通しのよいプログラムを構成する方法,及び何種類かの計算メカニズムやプログラミング言語のメカニズムについて学ぶ.そして,データやプログラムに込められている本質的な意味を明確に捉えることができれば,それらの実装には自由度があることを理解する.

Students will learn how to use abstraction and understand why abstraction is useful for constructing programs.  Students will also learn mechanisms of abstraction.
前もって履修
しておくべき科目(1,000文字以内)
/Prerequisites(up to 1,000 letters)
なし
前もって履修しておくこ
とが望ましい科目(1,000文字以内)
/Recommended prerequisites and preparation(up to 1,000 letters)
なし
教科書等(1,000文字以内)
/Course textbooks and materials(up to 1,000 letters)
参考書:H. Abelson and G.J. Sussman: Structure and Interpretation of Computer Programs Second Edition, MIT Press(和田英一訳:計算機プログラムの構造と解釈 第二版,翔泳社)
授業内容と
その進め方(2,000文字以内)
/Course outline and weekly schedule(up to 2,000 letters)
(a) 授業内容
 第1回 Scheme言語の概要 
 第2回 式の評価および計算プロセス
 第3回 手続き(関数)による抽象の構築
 第4回 データによる抽象の構築 データ抽象の効果
 第5回 データによる抽象の構築 実装のバリエーション
 第6回 データによる抽象の構築 抽象データの多重表現
 第7回 標準部品化力,オブジェクトおよび状態
 第8回 ストリーム
 第9回 ストリームによる状態表現
 第10回 mutableデータオブジェクト
 第11回 環境モデル
 第12回 超言語的抽象 Scheme言語の評価器
 第13回 超言語的抽象 評価器のバリエーション
 第14回 レジスタ計算機での計算 仮想レジスタ計算機・メモリ割当とごみ集め
 第15回 レジスタ計算機での計算 機械語命令による評価器・コンパイラの概要

1. Introduction to the programming language Scheme
2. Evaluating expressions and their computational processes
3. Building abstractions with procedures
4. Building abstractions with data: the benefits of introducing data abstraction
5. Building abstractions with data: variations of implementation
6. Building abstractions with data: multiple representations for abstract data
7. Modularity, objects, and state
8. Streams
9. Modeling state with streams
10. Mutable data object
11. The environment model
12. Metalinguistic abstraction: an evaluator for Scheme
13. Metalinguistic abstraction: variations on a Scheme
14. Computing with register machines: a virtual register machine, storage allocation and garbage collection
15. Computing with register machines: a Scheme evaluator in the register-machine language, and outline of compilation

(b) 授業の進め方
 実際にプログラミングすることで深く理解することができるので,座学に加えプログラミング課題を課す.
実務経験を活かした
授業内容
(実務経験内容も含む)
/Course content utilizing practical experience
授業時間外の学習
(予習・復習等)(1,000文字以内)
/Preparation and review outside class(up to 1,000 letters)
プログラミング課題をこなすことのほかに,授業で紹介したプログラムを,実際に動かし,理解を深めておくこと.
成績評価方法
および評価基準
(最低達成基準を含む)
(1,000文字以内)
/Evaluation and grading
(up to 1,000 letters)
(a) 評価方法:レポート(65%)と期末試験(35%)の合計で評価する.

Course grades will be determined by programming assignments (65%) and the final exam (35%).
Students must submit ALL the assignments and take the final exam.

(b) 評価基準:以下の達成レベルをもって合格の最低基準とする.
  ・すべてのレポートが受理されていること
  ・抽象化の意義を理解し,抽象化技術を簡単な問題に適用できること
  ・プログラミング言語が行う計算のプロセスをほぼ理解していること
  ・簡単な言語処理系の仕組みをほぼ理解していること
オフィスアワー:
授業相談(1,000文字以内)
/Office hours(up to 1,000 letters)
可能な限りいつでも相談に応じますが,メールなどで事前にアポイントを取ると確実です.
学生へのメッセージ(1,000文字以内)
/Message for students(up to 1,000 letters)
抽象化はプログラミングだけに留まらず,コンピュータに関するあらゆるところで必要な重要な考え方です.
その他
/Others
期末試験の代わりとしてレポートを課すことがあります.
キーワード
/Keywords
プログラミング, プログラミング言語, 言語処理系, コンパイラ, インタプリタ
programming, programming languages, compilers, interpreters