プログラム言語論(ぷろぐらむげんごろん)
- 担当教員:
亀山幸義
(電子メイル: kam あっと cs.tsukuba.ac.jp)
(オフィスアワー: 金 2限)
-
担当Teaching Assistant (第6週まで担当): 田中
(電子メイル: asami あっと logic.cs.tsukuba.ac.jp)
-
担当Teaching Assistant (第7週以降担当): 高橋
(電子メイル: htakaha あっと logic.cs.tsukuba.ac.jp)
- 曜日・時限: 1学期 月曜 2-3限,
講義は3A207教室,
演習は情報科学類計算機室 (3C113).
このページには,2010年度の『プログラム言語論』の
講義資料を置きます.
2009年度の資料等は、こちらのページを
見てください。
連絡事項
-
もう、ここを見ている学生はいないかもしれませんが、
講義中のアンケート(この授業の改善すべき点、良い点についての学生からの
指摘)をまとめたものを
ここと
ここに置きました。
(2010/07/15)
-
期末試験の問題と解答例はここにあります。
(2010/07/05)
-
採点済み答案の返却について: 返却希望者は以下の時間帯に来てください。
(本人が直接来る場合のみ返却します。)
- 2010.7.6 火曜 14:00-17:00 総合研究棟B 1027号室 (研究室)
- 2010.7.7 水曜 10:30-12:30 総合研究棟B 1008号室 (亀山居室)
- 2010.7.9 金曜 10:30-12:30 総合研究棟B 1008号室 (亀山居室)
答案自体は今年度末まで保管しますが、
採点結果や出席簿に疑問がある場合は、原則として、7月14日 午前 10:00までに連絡してください。
(2010/07/05)
-
TA の高橋君が,
2010年 6月 21日までの出席簿を更新してくれました.
(coins計算機上のユーザIDとパスワードの入力が必要です。)
もし、この情報に誤りがあれば、至急、教員か担当TA にメイル等で連絡して
ください.(2010/06/21)
-
"polymorphism"という単語について(特にオブジェクト指向言語における、
この単語の意味について)質問を受けましたので、
補足のスライドを用意しました。
(2010/06/21)
-
2009年度 期末試験問題と解答をここにも置き
ました。また、coins 計算機の ~kam の下にも "answer2009.pdf" という
名前で置いてあります。これらのいずれの方法でも取得できない人は亀山あて
メールで知らせてください。(2010/06/21)
- 第10週 (2010年 6月21日)の資料を
置きました。このページの下の方を見てください。(2010/06/21)
- 今年度の期末試験は,6月28日(月)の3限
(12:15-13:30)に,いつもの教室(3A207)で行ないます。
試験開始時刻に遅れないよう十分注意してください。
2限は何もやりません。
ノート等の持ち込みは不可です.
ただし,留学生等が,辞書類(インターネットに接続する
機能のないもの)を持ち込むのは OK です.この場合,監督員に
申し出てください.
(2010/06/18)
- 第1週の short quiz へのリンク
が切れている,という指摘がありました.実際そうだったので
short quizの問題と略解を修復しました.
このほか,「昨年の期末試験問題へのリンクが切れている」という
指摘があったのですが,これはちゃんと存在しているように私には
見えるので,よくわかりません.
ここにもはっておきます:
2009年度 期末試験問題と解答.
(2010/06/17)
- 第9週 (2010年 6月14日)の資料を
置きました。このページの下の方を見てください。(2010/06/14)
- 第9週 (2010年 6月14日)の2限は教室で講義、
3限は計算機室で演習です。(2010/06/14)
- 第8週 (2010年 6月7日)の資料(誤殖修正後のもの)を
置きました。このページの下の方を見てください。(2010/06/07)
- 第6週 (2010年 5月24日)の資料(誤殖修正後のもの)を
置きました。このページの下の方を見てください。(2010/05/24)
- 第5週 (2010年 5月17日)3限の資料(誤殖修正後のもの)を
置きました。このページの下の方を見てください。(2010/05/17)
- 第5週 (2010年 5月17日)の
2限は情報科学類計算機室 3C113での演習となります。
3限は教室での講義です。(2010/05/10)
- 第4週 (2010年 5月10日)の資料(誤殖修正後のもの)を
置きました。
このページの下の方を見てください。(2010/05/10)
- 第3週 (2010年 4月26日)の資料(誤殖修正後のもの)を
置きました。また、これまで3週の出席簿へのリンクをはりました。
このページの下の方を見てください。(2010/04/26)
- 第2週 (2010年 4月19日)は、2限・3限とも、
情報科学類計算機室 3C113での演習となります。10:10 に 3C113室にいてください。
教室では何もやりません。(2010/04/12)
- 第1週 (2010年 4月12日)の講義スライド等をアップロードしました。
このページの下の方からリンクをたどってください。
(2010/04/13)
- このページを作成しました。 (2010/03/08)
講義資料
- 第1週 (4/12): 講義のイントロダクション等,
コンパイラの構成, 構文と意味等,
配布資料: MiniC言語の構文,
short quizの問題と略解.
- 第2週 (4/19): MiniC言語の処理系の使い方
- 2限の冒頭に、計算機室 (3C113) で TA から処理系の使い方を説明
(上記の「MiniC言語の処理系の使い方」を参照のこと。
MiniC言語の構文については第1週の授業資料(上記リンクあり)
を参照のこと)
- TAから,課題を記述した紙を配布.(これは、web には置かないの
で必ず計算機室に行って、TA から受け取ること)
- 残り時間で課題を解き、解答を作成。
(このためには、ex1.c などのテストファイルを実行したり、
テストファイルを変更したものを実行するなどして試すこと。)
- 3限終了までに,課題の解答をTAに提出
(解答を提出したら演習終了。解答の提出を
もって出席とするので、一部の解答ができていなくても、
必ず解答を提出すること。)
- 処理系の使い方等の質問は TA あてに、また、内容に関する
質問は、課題の紙に書かれたメイルアドレスあてにすること。
- 第3週 (4/26): MicroC/MiniCの意味論と処理系
- 第4週 (5/10): 関数型言語,ヒープとクロージャ,評価順序,
miniMLの構文と意味と例
(授業中に配布したものは、let rec の例題の構文が定義
と違っていたので、修正しました。)
- 第5週 (5/17): 2限は演習; MiniML言語の処理系の使い方
- 2限の冒頭に、計算機室 (3C113) で TA から処理系の使い方を説明
(上記の「MiniML言語の処理系の使い方」を参照のこと。
MiniML言語の構文については授業資料(上記リンクあり)
を参照のこと)
- TAから,課題を記述した紙を配布.(これは、web には置かないの
で必ず計算機室に行って、TA から受け取ること)
- 残り時間で課題を解き、解答を作成。
(このためには、ex1.ml などのテストファイルを実行したり、
テストファイルを変更したものを実行するなどして試すこと。)
- 2限終了時点までに、課題の解答をTAに提出
(解答を提出したら演習終了。解答の提出を
もって出席とするので、一部の解答ができていなくても、
必ず解答を提出すること。)
- 処理系の使い方等の質問は TA あてに、また、内容に関する
質問は、課題の紙に書かれたメイルアドレスあてにすること。
- 発展課題に取り組む場合は、
OCaml処理系の使い方も参考にされたい。
- 第5週 (5/17): 3限は講義; 復習,末尾呼出し
- 第6週 (5/24):
先週の演習課題の解答, 制御構造,型システム,動的情報と静的情報
- 第7週 (5/31):
型推論の演習(先週の講義資料に追加して記述),
データ抽象化・抽象データ型
- 第8週 (6/7): オブジェクト指向とモジュール,
Javaコード (3つのファイルを1つにしたものな
ので、このままコピーしても走りません。3つのファイルに分解してください。)
- 第9週 (6/14): オブジェクト指向の続き、静的言語と動的言語
- 演習資料: Java/Rubyについてのメモ
- 課題の紙は、授業中に配付
- 3限終了時点までに、必ずレポートを TA の高橋君に提出してくだ
さい。(高橋君は計算機室 3C113 にいます。)
課題1は今日の3限終了までで、課題2-3は、来週の授業の開始時点
までです。(課題1-3は「発展課題」と書いたところ以外はすべて必
須課題です。課題4は発展課題です。)
- 第10週 (6/21): 前回の課題の解説、
スクリプト言語、論理型プログラム言語,
Prologのテストプログラム, まとめ
- 期末試験: 2010年6月28日(月), 3限 (12:15-13:30; 遅刻厳禁),
3A207, ノート等の持ち込みは不可
(ただし,留学生等が,辞書類(インターネットに接続する
機能のないもの)を持ち込むのは OK です.この場合,監督員に
申し出てください.)
スケジュール
- 第1週: プログラム言語論とは、構文と意味、
高級言語と低級言語、インタープリタとコンパイラ、
構文解析、
手続き型言語と宣言型言語。
- 第2〜6週: 基礎: 関数と手続き、
ブロック構造と変数スコープ、
データ構造と型システム、
制御構造と評価順序、
メモリ管理とゴミ集め、演習。
- 第7〜8週: モジュラリティと抽象化:
構造化プログラミング、
データ抽象化、モジュール、
抽象データ型、オブジェクト指向、
デザインパターン、クラスと継承、演習。
- 第9〜10週前半: 様々なプログラミング言語:
論理プログラミング、関数プログラミング、オブジェク
ト指向プログラミング、並列言語、スクリプト言語、特定目的言語、演習。
- 弟10週後半: 言語の安全性、発展的な話題、授業のまとめ。
参考書籍
Concepts in Programming Languages,
John C. Mitchell,
Cambridge University Press, 2003.
(この本の誤殖リストが
著者のページ
にあります。)
期末試験の問題と解答
2010年度の期末試験の問題と解答例: 2010年度.
過去の期末試験の問題と解答例: 2009年度.
出席簿
2010年 6月 21日までの出席簿は、
こちら
です。(coins計算機上のユーザIDとパスワードの入力が必要です。)
もし、この情報に誤りがあれば、至急、教員か担当TA にメイル等で連絡して
ください。なお、「1」が通常の出席、「2」は遅刻等を意味します。(週によっ
て「2」の意味は多少違います。)
亀山幸義
(オフィスアワー: 金 2限)