プログラミング言語論 2024

2024 年度 後期木曜日 2コマ・ 6405 教室
担当: 香川 考司
対象:  大学院・創発科学研究科/工学研究科

工学研究科の第 3 Q「プログラミング言語論Ⅰ」(1 〜 8 週、シラバス)/ 第 4 Q「プログラミング言語論Ⅱ」(9 〜 16 週、シラバス) のホームページです。 受講者はこのページを随時チェックするようにしてください。

現在

紹介スライド

連絡事項

新しいものほど上に表示します。

配布物など

ここにリンクをはっていないファイルや、公開日前のファイルは 公開日までに変更する可能性があるので注意してください。

プログラミング言語論Ⅰ(前半)使用分

プログラミング言語論 Ⅱ(後半)使用分

各週の内容

現在

(管理者用) データの更新(同・管理者用) 管理用インデックスインデックス10月 11月 12月 01月 02月 )、

過去

授業前

配布プリントに関するアンケート

(スタッフ専用) アンケート確認 (
📁/📂(← ここ以前の課題の開閉)

第 01 週 10/03

着席位置 課題 アップロード

(スタッフ専用) 位置確認提出状況チェック表(10月分)

紹介スライド,
1 章 「プログラミング言語論の概要」,

Haskell のダウンロード

第 02 週 10/10

着席位置 課題 アップロード

(スタッフ専用) 位置確認提出状況チェック表(10月分)

2 章 「関数型言語 Haskell とは」(§ 2.1 〜 § 2.4.1「基本的なデータ型と演算子」)

課題に対する評価

第 03 週 10/17

着席位置 課題 アップロード

(スタッフ専用) 位置確認提出状況チェック表(10月分)

2 章 「関数型言語 Haskell とは」(§ 2.4.1「基本的なデータ型と演算子」〜§ 2.4.4 「関数型」 )

課題に対する評価

第 04 週 10/24

着席位置 課題 アップロード

(スタッフ専用) 位置確認提出状況チェック表(10月分)

2 章 「関数型言語 Haskell とは」(§ 2.5「パターンマッチング」〜 § 2.8「関数の中置記法化」)

課題に対する評価

10/31 は月曜振替日です。

第 05 週 11/07

着席位置 課題 アップロード

(スタッフ専用) 位置確認提出状況チェック表(11月分)

2 章 「関数型言語 Haskell とは」(§ 2.9「部分適用とセクション」〜 § 2.12「リストの内包表記」)

課題に対する評価

第 06 週 11/14

11/14 は対面で参加できない人がいるため、遠隔でも配信します。 11/14 の Teams の会議 (授業時間になったらクリックしてください)

着席位置 課題 アップロード

(スタッフ専用) 位置確認提出状況チェック表(11 月分)表(レポート 1)

2 章 「関数型言語 Haskell とは」(§ 2.12「リストの内包表記」〜 )、
A 章「Haskell のレイアウトルール」、
3 章「代数的データ型と型クラス」(〜 § 3.1「代数的データ型の定義」)

課題に対する評価

第 07 週 11/21

本日は対面授業です。

着席位置 課題アップロード

(スタッフ専用) 位置確認提出状況チェック表(11月分)

3 章「代数的データ型と型クラス」(§ 3.2 「型クラスとは」〜)

課題に対する評価

第 08 週 11/28

着席位置

(スタッフ専用) 位置確認

3 章「代数的データ型と型クラス」(§ 3.8 「型クラスとサブタイピング」〜)

第 3 Q 末テスト

オンラインテスト問題 (Online Questions, English vers.)、 アップロード (upload)

(スタッフ専用) 提出状況チェック

「プログラミング言語論Ⅰ」期末テスト・ペーパーテスト問題解答例

ここからは「プログラミング言語論Ⅱ」

第 09 週 12/05

12/05 は都合により、遠隔で実施します。
12/05 の Teams の会議 (授業時間になったらクリックしてください)

着席位置 課題 アップロード 配布プリントに関するアンケート

(スタッフ専用) 位置確認提出状況チェック表(12月分) アンケート確認 (

4 章「モナド」

課題に対する評価

第 10 週 12/12

12/12 は、遠隔/対面どちらでも可とします。
12/12 の Teams の会議 (授業時間になったらクリックしてください)

着席位置 課題 アップロード

(スタッフ専用) 位置確認提出状況チェック表(12月分)

5 章「モナドと命令形言語の意味」

課題に対する評価

第 11 週 12/19

12/19 は、遠隔/対面どちらでも可とします。
12/19 の Teams の会議 (授業時間になったらクリックしてください)

着席位置 課題 アップロード

(スタッフ専用) 位置確認提出状況チェック表(12月分)

5 章「モナドと命令形言語の意味」(§ 5.5 〜)、 P 章「Prolog 超簡易入門」、 Try Prolog,

問 P.3.1 の答
?- myappend([1,2], [3,4], Z0). 
  これに myappend([H1|X1], Y1, [H1|Z1]) :- myappend(X1, Y1, Z1). 
  H1=1, X1=[2], Y1=[3,4], Z0=[1|Z1] で適用できる 
?- myappend([2], [3,4], Z1). 
  これに myappend([H2|X2], Y2, [H2|Z2]) :- myappend(X2, Y2, Z2). 
  H2=2, X2=[], Y2=[3,4], Z1=[2|Z2] で適用できる  
?- myappend([], [3,4], Z2). 
  これに myappend([], Y3, Y3).  
  Y3=[3,4], Z2=[3,4] で適用できてゴール節が消える 
まとめると Z0 = [1|[2|[3,4]]] (= [1,2,3,4]) 
問 P.3.2 の答(01/09) 授業中、間違っているかも、と言いましたが、これであっていました。
?- myconcat([[1, 2], [3, 4, 5], [6, 7]], Xs). 
  これに ② が Xs1=[1,2], Xss1=[[3,4,5],[6,7]], Ys1=Xs で適用できる 
?- myappend([1,2],Zs1,Xs), myconcat([[3,4,5],[6,7]],Zs1). 
?- myappend([2],Zs1,Z1), myconcat([[3,4,5],[6,7]],Zs1).
  ただし Xs=[1|Z1] 
?- myappend([],Zs1,Z2), myconcat([[3,4,5],[6,7]],Zs1).
  ただし Z1=[2|Z2] 
?- myconcat([[3,4,5],[6,7]],Zs1). ただし Z2=Zs1 
まとめると Xs=[1|[2|Zs1]] 
?- myconcat([[6,7]],Zs2). ただし Zs1=[3|[4|[5|Zs2]]] 
 
?- myconcat([],Zs3). ただし Zs2=[6|[7|Zs3]] 
    これに対して ① が Zs3=[] で適用できゴール節が消える 
まとめると Xs=[1,2,3,4,5,6,7] 

課題に対する評価

第 12 週 01/09

01/09 は、遠隔/対面どちらでも可とします。
01/09 の Teams の会議 (授業時間になったらクリックしてください)

着席位置 課題 アップロード

(スタッフ専用) 位置確認提出状況チェック表(01月分)

U 章「ちっちゃな命令型言語 Util」、 6 章「接続」 (continuation)、 S 章「Scheme 超簡易入門」 同・空欄補間済版

課題に対する評価

第 13 週 01/16

01/16 は、遠隔/対面どちらでも可とします。
01/16 の Teams の会議 (授業時間になったらクリックしてください)

着席位置 課題 アップロード

(スタッフ専用) 位置確認提出状況チェック表(01月分)表(レポート 2)

J 章「JavaScript 超簡易入門」、 7 章「Continuation-Passing Style (CPS)」、 7 章のプログラム

「プログラミング言語論Ⅱ」レポート(2/13 締切)
問題を公開しています。

課題に対する評価

第 14 週 01/23

01/23 は、遠隔/対面どちらでも可とします。
01/23 の Teams の会議 (授業時間になったらクリックしてください)

着席位置 課題 アップロード

(01/23 連絡)
本日の課題はキャンセルです。(そこまで進まなかったため)

(スタッフ専用) 位置確認提出状況チェック表(01月分)

L 章「ラムダ計算」

(再掲)「プログラミング言語論Ⅱ」レポート(2/13 締切)

課題に対する評価

第 15 週 01/30

01/30 は、遠隔/対面どちらでも可とします。
01/30 の Teams の会議 (授業時間になったらクリックしてください)

着席位置 課題 アップロード

本日は最後まで進むかどうかわからないので、課題は授業で進んだところまでとします。 また 1/23 の課題 もやってください。

(スタッフ専用) 位置確認提出状況チェック表(02 月分)

課題に対する評価

現在

第 16 週 02/06(テスト)

「プログラミング言語論Ⅱ」の期末テストについて

今年度(2024 年度)は時間の都合で、第 L 章「ラムダ計算」を 十分説明しきれませんでしたので、テストでは、ラムダ計算を出題しません。その代わりに 第 4 章「モナド」から出題します。 (Q 4.4.1 あるいは、問 4.4.2 のような IO モナドに関する問題になる予定です。)

それに伴い、今年度はペーパー試験を実施せず、オンライン試験のみとします。 オンライン試験は遠隔からも受験可能とします。

(昨年度の問題は 2023 年度「プログラミング言語論」の期末試験の問題を見てください。 昨年度は「プログラミング言語論」というセミスターの授業でしたが、今年度から「プログラミング言語論Ⅰ」「プログラミング言語論Ⅱ」の 2 つのクォーターの授業に別れました。)

02/06 の期末テストは、遠隔/対面どちらでも可とします。遠隔で受験する場合、必ず Teams の会議に参加してください。
02/06 の Teams の会議 (授業時間になったらクリックしてください)

着席位置 オンラインテスト問題 (Online Questions, English vers.) 、 アップロード

(スタッフ専用) 位置確認提出状況チェック

今後

📋/📂(← ここ以降の予定の開閉)

これ以降の予定はありません。🐻🐼

リンク


Koji Kagawa