プログラム言語論(ぷろぐらむげんごろん)
- 担当教員:
亀山幸義
(電子メイル: kam あっと cs.tsukuba.ac.jp)
(オフィスアワー: 金 2限)
-
担当Teaching Assistant : 田中
(電子メイル: asami あっと logic.cs.tsukuba.ac.jp)
- 曜日・時限: 1学期 月曜 2-3限,
講義は3A207教室、
演習は情報科学類計算機室 (3C113).
このページには,2011年度の『プログラム言語論』の
講義資料を置きます.
2010年度の資料等は、こちらのページを
見てください。
目次
- [2011/07/07]
最終的な成績を付けました。
個人の成績については、TWINS で見てもらうことにして、
成績のつけかたなどの情報は、
moodleシステムのプログラム言語論のページを見てください。
(一番上の「2011年度成績につい」の項目で、EUCコードのファイルとしてはいっ
ています。)
なお、出席簿の間違いの指摘、答案の採点間違いの指摘は、7/15 12:00 まで受けつけていま
す。
- [2011/06/28]
現時点の出席簿(兼レポート提出状況表)を
moodleシステムのプログラム言語論のページ(統一認証のユーザID, パスワードが必要)
に置きました。なお、coinsマシン上のファイルは、削除しました。
間違いがないかチェックして、あれば至急連絡してください。
- これ以上前のニュース・連絡事項は
こちらを見てください。
随時、このページに講義資料を置きます。
ただし、授業の際にノートを取る、というのも非常に大事ですから、
今後はなるべく講義資料の抜粋のみを置くようにします。
- 第1週(2011/04/18): スライドの抜粋
(このファイルは dvipdfm コマンドで作ったのですが,
学類計算機室のプリンタでは印刷失敗するそうですので,
当面の措置として,
dvips+ps2pdfで作った
psファイルと
pdfファイルを置きました.
後者で学類計算機室プリンタでの印刷に成功した人は教えてください。)
- 第2週 (2011/4/25)講義:
スライドの抜粋 (一部は今回説明できなかったので、
次回に説明します.
なお,当面の措置として,
dvips+ps2pdfで作った
psファイルと
pdfファイルも置きました.)
MiniC言語について
- 第2週 (2011/4/25)演習:
MiniC言語の処理系の使い方
- 3限の冒頭に、計算機室 (3C113) で MiniC言語処理系の使い方を説
明.
- TAから,課題を記述した紙を配布.(これは、web には置かないの
で必ず計算機室に行って、TA から受け取ること)
- 残り時間で演習を行う.
- レポート提出のための
Moodleシステムの
プログラム言語論のページ(統一認証のユーザID, パスワードが必要)
- 第3週 (2011/5/9)講義:
スライドの抜粋
(当面の措置として,dvips+ps2pdfで作った
psファイルと
pdfファイルも置きました).
Short Quizの略解
- 第4週 (2011/5/16) 2限は演習(課題2)、
略解
- 第4週 (2011/5/16) 3限は講義:
スライドの抜粋
- 第5週 (2011/5/23) 講義:
スライド (「ヒープ」については、
前回のスライドを参照),
スライドの補足
- 第6週 (2011/5/30) 2限は講義:
スライド
- 第6週 (2011/5/30) 3限は演習:
OCaml言語の処理系の使い方,
OCamlサンプル・プログラム
- 第7週 (2011/6/6) 講義:
型による抽象とモジュール
- 第8週 (2011/6/13) 講義:
オブジェクト指向,
Javaプログラム例
静的vs動的:
本日の short quiz のうち、3つ目を書く時間がなかった人は、
moodle経由で提出してもよい。なお、紙で3問の答えをすべて提出した人は、あらためて
short quiz の解答を提出する必要はない。(締め切りは 6/14, 17:00)
ホームワーク (自習用教材):
Java処理系/Ruby処理系の使い方:
- (課題1) Java と Ruby のサンプルプログラムを走らせ,継承,サブタ
イピング,動的ルックアップ等について、理解を深めなさい.
サンプルプログラムは,coinsマシンの /home/prof/kam/java および
/home/prof/kam/ruby にある.
- (課題2) Java のテストプログラム /home/prof/kam/java/Test1.java
を実行して、それらの実行結果がどのような理由で得られたか、述べなさい。
(ヒント: Java の overload/override というキーワードを調べるとよい。)
- 上記の課題はレポート提出の必要はない。ただし、課題2についてしっ
かり調べた人は、レポートを
moodle経由で提出してもよい (締め切りは、6/20, 23:55)。特に良いレポートは追加点を与える。
- 第8週 (2011/6/13) 資料についての訂正:
6/13 の授業で配付した Javaプログラム例 (Point.java などのプログラムを
記載した1枚もの)は、コンパイルエラーになる部分を、コメントにせずに、
そのまま印刷配付してしまったようである。正しくは、前からこのページに置いてある
こちらのファイルを見てほしい。
授業で印刷配付した資料では、下から5行目付近で、
「Point 型の変数 p に getC メソッドを投げる」という行が含まれている
が、Pointクラスは getC メソッドを持っていないので、このままではコンパ
イルできない(コンパイルエラーが起きる。) これは、たとえ、この時点での
変数p に、CPointクラスのオブジェクトが代入されているとしても、
コンパイル時にエラーなので、実行されない。そのことを今日の授業で力説し
ていたつもりだったが、肝心の配布物が整合していなかったために、混乱した
受講生がいたようである。この点お詫びする。
- 第9週 (2011/6/20) 講義:
Javaに関する補足といろいろなプログラム言語、
授業全体のまとめ、
授業アンケート。
- 補足資料:
補足資料(MLの引数と型、Polymorphism)
- 第10週 (2011/6/27) 期末試験のみ実施します(講義・演習はありません)
- 2011/07/04 は授業・試験は実施しません。
- 第1週: プログラム言語論とは、構文と意味、
高級言語と低級言語、インタープリタとコンパイラ、
構文解析、
手続き型言語と宣言型言語。
- 第2〜6週: 基礎: 関数と手続き、
ブロック構造と変数スコープ、
データ構造と型システム、
制御構造と評価順序、
メモリ管理とゴミ集め、演習。
- 第7〜8週: モジュラリティと抽象化:
構造化プログラミング、
データ抽象化、モジュール、
抽象データ型、オブジェクト指向、
デザインパターン、クラスと継承、演習。
- 第9週前半: 様々なプログラミング言語:
論理プログラミング、関数プログラミング、オブジェク
ト指向プログラミング、並列言語、スクリプト言語、特定目的言語。
- 弟9週後半: 授業のまとめ。
- 弟10週: 期末試験。
-
Concepts in Programming Languages,
John C. Mitchell,
Cambridge University Press, 2003.
(広範囲のことがまとめられている分厚い教科書、
なお、この本の誤殖リストが
著者のページ
にあります。)
-
Programming Langauges: Principles and Paradigms,
Maurizio Gabbrielli, Simone Martini,
Springer, 2011.
(新しい本、学部レベルの内容がコンパクトによくまとまっている。)
亀山幸義
(オフィスアワー: 金 2限)