シラバス参照

講義概要/Course Information
2024/05/03 現在

科目基礎情報/General Information
授業科目名
/Course title (Japanese)
基盤ソフトウェア論2
英文授業科目名
/Course title (English)
Foundations of Software Systems 2
開講年度
/Academic year
2019年度 開講年次
/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
2019/03/01 11:38:47 更新状況
/Update status
公開中
/now open to public
講義情報/Course Description
講義の狙い、目標 (a) 狙い:よいプログラムを書くには,単にプログラミング言語を習得し,アルゴリズムを学ぶだけでは不十分である.解くべき問題をプログラミング言語上でどう表現するかでプログラムの可読性・開発効率・拡張のしやすさ等が大きく変わる.この一つのキーとなるのが,(大抵のプログラミング言語言語に備わっている)プログラミング言語の抽象化能力である.本講義では,計算手順,データ,言語の側面から抽象化について学ぶ.

(b) 目標:プログラムやデータを段階的に抽象化して構成することで見通しのよいプログラムを構成する方法,及び何種類かの計算メカニズムやプログラミング言語のメカニズムについて学ぶ.そして,データやプログラムに込められている本質的な意味を明確に捉えることができれば,それらの実装には自由度があることを理解する.
内容 (a) 授業内容
 第1回 Scheme言語の概要 
 第2回 式の評価および計算プロセス
 第3回 手続き(関数)による抽象の構築
 第4回 データによる抽象の構築 データ抽象の効果
 第5回 データによる抽象の構築 実装のバリエーション
 第6回 データによる抽象の構築 抽象データの多重表現
 第7回 標準部品化力,オブジェクトおよび状態
 第8回 ストリーム
 第9回 ストリームによる状態表現
 第10回 mutableデータオブジェクト
 第11回 環境モデル
 第12回 超言語的抽象 Scheme言語の評価器
 第13回 超言語的抽象 評価器のバリエーション
 第14回 レジスタ計算機での計算 仮想レジスタ計算機・メモリ割当とごみ集め
 第15回 レジスタ計算機での計算 機械語命令による評価器・コンパイラの概要

(b) 授業の進め方
 実際にプログラミングすることで深く理解することができるので,座学に加えプログラミング課題を課す.

(c) 授業時間外の学習(予習・復習等)について
 プログラミング課題をこなすことのほかに,授業で紹介したプログラムを,実際に動かし,理解を深めておくこと.

(d) オフィスアワー:授業相談
 適宜相談に応じるが,メールなどで事前にアポイントを取ること.
教科書、参考書 参考書:H. Abelson and G.J. Sussman: Structure and Interpretation of Computer Programs Second Edition, MIT Press(和田英一訳:計算機プログラムの構造と解釈 第二版,翔泳社)
予備知識 プログラムをたくさん示すのでプログラムを読む力が必要である.
演習 講義中に演習は行わないが,プログラムを作成するレポート課題を出す.
成績評価方法
および評価基準
(a) 評価方法:レポート(65%)と期末試験(35%)の合計で評価する.
(b) 評価基準:以下の達成レベルをもって合格の最低基準とする.
  ・すべてのレポートが受理されていること
  ・抽象化の意義を理解し,抽象化技術を簡単な問題に適用できること
  ・プログラミング言語が行う計算のプロセスをほぼ理解していること
  ・簡単な言語処理系の仕組みをほぼ理解していること
その他
/Others
キーワード
/Keywords
プログラミング, プログラミング言語, 言語処理系, コンパイラ, インタプリタ