プログラム言語論(ぷろぐらむげんごろん)
担当教員:
亀山幸義
(電子メイル: kam [at] cs.tsukuba.ac.jp) (オフィスアワー: 金 2限)
担当Teaching Assistant : 大石 (電子メイル: junpei [at] logic.cs.tsukuba.ac.jp)
曜日・時限: 春AB 木3-4, 講義は 3A203教室、 演習は情報科学類計算機室 (3C113).
このページには,2016年度の『プログラム言語論』の 講義資料を置きます. 2015年度の資料等は、
こちらのページ
を見てください。
目次
ニュース・連絡事項
シラバス
manabaシステムのログインページ
(統一認証のユーザID, パスワードが必 要、登録キーは 7647055 です。)
講義資料
スケジュール
参考書籍
過去の期末試験の問題と解答
出席簿
連絡事項
大変遅くなりましたが、期末試験の
問題と解答例
を置きました。また、 採点結果についての
講評
も置きました。 なお、採点結果を TWINS にアップロードするのが、遅れてしまったため 7/20 時点では TWINS では成績は見られません。ご迷惑をお詫びしますが、成績 は提出しておきますので事務処理がおわったら、TWINS から見られるとおも います。(7月19日が締め切りでしたが、「これは、きっと7月20日の朝が本 当の締め切りだろう」と、たかをくくって、のんびりデータ処理をしていた ところ、本当に 24:00で締め切られてしまい、成績入力ができませんでした。) [2016/7/20, AM2:00]
演習レポート提出記録を
manaba
のニュースに添付しました。各自確認 してください。(間違いがあれば、7/7 までにメイルで連絡してください。) [2016/6/24]
2015年度(昨年)の期末試験の解答例がリンク切れだったので修復しまし た.ファイル自体がなくなっていて,急拠,最初から作りなおしたので,若干表現がこな れていないところがあるかもしれませんが,内容的には参考になるとおもい ます.また,2012年度の解答例については,だいぶ前の授業にもとづいてい て(表記などがちがっているので),かえって混乱をよぶとおも,問題ごと 削除しました.
第10週の講義スライドを置きました.
第9週の講義スライドを置きました.
第8週の講義スライドを置きました.
第7週の演習について,解答(の一例)をいれたファイルを coinsマシンの ~kam/plm/chap5-with-answer.ml として置きました. 復習しておいてください.
第7週の演習について: chap5.ml の演習課題についてのヒントを ファイルに追加しました。 お手数ですが、再度、このファイルをコピーしてください。 また、
提出締切を 6/8 (水) 23:55 に延長
します。 (対象言語microML の構文についての説明が不足して いたので、課題5-1, 5-2, 5-3, 5-4 のあとに言葉で補っています。 課題そのものは変更していません。) [2016/6/3]
第7週の授業スライドもはりつけてあります.講義の最後が時間不足だっ たので,,来週の授業の冒頭で続きをやってから,次の話題に行きます. [2016/6/2]
第7週 (6/2)の授業は,3限が講義,4限が計算機室での演習です. [2016/6/1]
第5週 (5/19)の演習について,解答をつけたファイル(chapN-with-answer.ml)を coinsマシンの所定ディレクトリ(/home/prof/kam/plm/)の下に置きました. この件,先週やるべきところ,大変遅くなってしまいすいません. かなり大事な内容を含んでいるので,必ず復習をしておいてください.[2016/6/1]
第6週 (5/26)の
授業の資料
を置きました.[2016/5/26]
5/19(木) の授業は、 計算機演習です。12:15 に3C113に集合して、 TAの大石君から演習に関するプリントを受け取り演習を行ってください。 レポートは manaba から提出してください。(出席は取りません。) [2016/5/12]
第4週のスライド(一階の関数型言語)
を置きました。 授業中のQuizに対する答えの概要も書きこんであります。 また、授業最後に触れた
停止性のスライド
も置いてあります。 [2016/5/12]
第3週のスライド(修正版)
を置きました。[2016/4/28]
第2週の説明は,再帰関数などの書き方をすっとばしていたので, 第3週の最初にあらためてOCamlの関数の書き方を説明します. ただ第2週演習のレポート自体は出席がわりなので出してください.[2016/04/21]
第2週のスライドを置きました。[2016/04/21]
第1週のスライドを置きました。[2016/04/14]
このページを作りました。[2016/04/13]
講義資料
授業の際にノートを取る、というのが非常に大事ですから、 今年度は、なるべく黒板を使って授業をするようにしますが、 参考資料として、スライドを置いておきます。
第1週(4/14): イントロダクション、 高級言語と低級言語、インタープリタとコンパイラ、構文と意味 (講義スライド
その1
,
その2
)
第2週(4/21): OCaml入門、算術式の評価、、スコープ、束縛、静的束縛、閉じた式、自由変数 (Sestoft教科書 2章前半に相当) (
講義スライド
)
第2週(4/21)後半: 演習:
OCaml を使うために
OCamlプログラミング入門
(主専攻実験[S8]テキストの一部)
ex1.ml,ex2.ml,ex3.mlなどのファイルは coinsマシンの ~kam/ocaml/* にあ ります.
cp ~kam/ocaml/* . あるいは cp /home/prof/kam/ocaml/* . とすると,それらのファイルを全部コピーすることができます.
再帰関数の書き方
、
OCamlでの実装
(このほか、下記の「ソフトウェア技法」ページの「OCamlファイル1「再帰関数」」も参考になります)
2015年度のソフトウェア技法(OCaml入門)の授業ページ
今日の課題
(演習後に修正しました。再度ダウンロードしてください。)
第3週(4/28): スタック機械、コンパイル、 PostScript (Sestoft教科書 2章後半に相当) (
講義スライド
)
第4週 (5/12): 1階言語の抽象機械、環境と評価戦略、関数クロージャ (Sestoft教科書 4章に相当) (
講義スライド
,
講義スライド
)
第5週 (5/19): 演習: 授業開始時刻に、3C113に集合してください。 TAの大石君が演習の課題 (印刷物)を配布しますので、 それを解いて、5/25 深夜までに manabaから提出してください。 なお、解答が多少不完全でも、ともかく、期日までに 何らかのレポートを出すようにしてください。 質問は、演習時間内に大石君にするか、あるいは、 メイルで plm-ta [at] logic . cs . tsukuba . ac . jp あてにだしてください。
第6週 (5/26): 高階関数、制御構造、副作用、末尾再帰 (Sestoft教科書 5章を含む) (
講義スライド
)
第7週 (6/2): 型システム (Sestoft教科書 6章) (
講義スライド
)
演習: 5章の課題ファイル(chap5.ml)を解いてください。
第8週 (6/9): 命令型言語 (Sestoft教科書 7章,
講義スライド
)、 データ抽象、モジュール (
講義スライド
)
第9週 (6/16): オブジェクト指向 (
Javaコード(断片)
,
講義スライド
)
演習:
Javaの動かし方
,
課題ファイル
第10週 (6/23): 授業のまとめ: (
型システム(その2)
、
講義スライド
)
補足資料:
論理型プログラム言語
(今年は取り扱わず)、
関数型言語の補足(2015年度分)
、
関数型言語の補足(2014年度分)
期末試験
問題のみ
問題と解答例
講評
参考書籍
Programming Language Concepts, Peter Sestoft, Springer, 2012. (さらに新しい本、学部レベルの内容がコンパクトによくまとまっている。 2014年度以降はこの本に準拠して講義をおこなっている。) 電子ファイルは
こちら
です。(学内ネットワークからは無料でアクセス可能。)
教科書に掲載しているコード(をOCamlで動くようにしたもの)は、coins計算機の /home/prof/kam/plm2015/ の下に置いてある。(現在のところ6章まで)。 たとえば、第1章のソースコードを使うためには、 OCaml の対話的モードで #use "chap1.ml";; とすればよい。
著者のページは、
ここ
にあるので 参考にされたい。
Programming Languages: Principles and Paradigms, Maurizio Gabbrielli, Simone Martini, Springer, 2011. (学部レベルの内容がコンパクトによくまとまっている。 2012-2014年度はこの本(の一部)に準拠して講義をおこなった。) 電子ファイルは
こちら
です。(学内ネットワークからは無料でアクセス可能。)
Concepts in Programming Languages, John C. Mitchell, Cambridge University Press, 2003. (広範囲のことがまとめられている分厚い教科書、 2011年度まではこの本に準拠して講義をおこなっていた。 なお、この本の誤殖リストが
著者のページ
にある。)
期末試験の問題と解答
2015年度の期末試験の
問題
と
解答例
。
2014年度の期末試験の
問題
と
解答例
。 (2014/7/16)
2013年度の期末試験の
問題
と
解答例
。 (2014/6/25修正、2014/6/30再修正)
出席簿
出席簿は、まだありませんが、いずれ、以下のページに置く予定です。
manabaシステムのログインページ
(統一認証のユーザID, パスワードが必要、登録キーは 7647055 です。)
亀山幸義
(オフィスアワー: 水 2限)