タイトル

ナンバリングコード M3INF-ABXT-2O-Lx1   科目ナンバリングについて
授業科目名 科目区分 時間割 対象年次及び学科
プログラミング言語意味論    
Semantics of Programming Languages
  後期 木1 1~2 工学研究科博士前期課程信頼性情報システム工学専攻
講義題目 水準・分野 DP・提供部局
対象学生・
特定プログラムとの対応
 
 
M3INF ABXT 2O
担当教員 授業形態 単位数 時間割コード
香川 考司[Kagawa Koji] Lx 1 942092
DP・提供部局  
ABXT
 
授業形態  
Lx
 
関連授業科目  
プログラミング・パラダイム
 
履修推奨科目  
 
学習時間  
講義90分×7回+講義45分×1回+試験45分+自学自習
 
授業の概要  
学部では C、Java などさまざまなプログラミング言語に触れ、コンパイラの仕組みなどについても一通り学習してきた。しかし、文法だけではなく、プログラムの“意味”を理解しなければ、プログラムを本当に理解したことにはならない。本授業では「プログラミング・パラダイム」で学んだ知識をもとに、ラムダ計算に基づくプログラミング言語である Haskell によってさまざまな特徴を持つミニ命令型言語の処理系を作成して、命令型言語、オブジェクト指向言語のさまざまな概念に対し“意味”を与え、等価性などの議論を行えるようにする。また、プログラミング言語のもっとも単純なモデルとしてのラムダ計算を解説する。
 
授業の目的  
プログラミング言語の“意味”について学び(DP の「専門知識・理解」に対応)、プログラムの性質を考察したり、書き換えの正当性を説明できたりすることが、本授業の最終的な目標である。
 
到達目標  
プログラミング言語の状態・例外・非決定性・接続(継続)・継承・動的束縛などの基本的な概念について知識を説明でき、関数型言語による解釈を与えて等式による推論を可能とすること、関数型言語の基礎となるラムダ計算 (λ-calculus) の記法と計算規則を説明できること、を本授業での修得目標とする。
 
学習・教育到達目標(工学部JABEE基準)  
 
成績評価の方法と基準  
レポートおよび小テスト(50点)、期末試験(50点)で採点し、授業の目標達成が確認できた者に単位を認定する。
 
授業計画並びに授業及び学習の方法  
第1回:モナドによる命令的プログラミング
  Haskell での、モナドを利用した命令的なプログラミングを理解する
  自己学習課題: 標準入出力を使って、テキスト処理プログラムを作成する
第2~3回:命令型言語の意味
  命令型言語の状態・入出力などの概念を理解する
  命令型言語の代入文・制御構造の“意味”を理解する
  例外処理・非決定性などの“意味”を理解する
  自己学習課題: 簡単な命令型言語のプログラムをシミュレートする
第4~5回:接続(継続・continuation)
  接続 (継続・continuation) の概念を理解し、命令型言語のジャンプ命令を理解する
  接続渡し方式 (CPS) など接続の概念の応用を理解する
  自己学習課題: ジャンプを含む命令型言語のプログラムをシミュレートする
         CPS を Web のプログラミングに応用する
第6~7回:ラムダ計算 (λ-calculus)とプログラム意味論
  ラムダ計算の基本を理解する
  ラムダ計算のさまざまな性質を理解する 
  表示的意味論・操作的意味論などの語句とプログラムの意味を考える必要性を理解する
  自己学習課題: ラムダ式の計算を行う 
第8回:総括と試験
  ここまでの学習内容を総括し、学習事項を確認する
 
教科書・参考書等  
プリントを配付する。
 
オフィスアワー  
質問などは 1 号館 10 階北側 11007 研究室で受け付ける(時間帯は授業中に通知する)。
 
履修上の注意・担当教員からのメッセージ  
実習の際はノートパソコン一式を持参すること。
授業計画などの変更通知は、必要に応じて、授業中、学内掲示板、授業用 Web ページ(アドレスは授業中に通知する)などで行うので注意すること。
 
参照ホームページ  
http://guppy.eng.kagawa-u.ac.jp/2018/AdvProg/
 
メールアドレス  
メールアドレスは授業中に通知する
 
↑ページの先頭へ戻る