【サブタイトル】 |
関数型プログラミングと、言語処理系(インタプリタ・コンパイラ)の仕組みを学ぶ |
【講義の目的・内容】 |
"プログラミング言語は、人がコンピュータソフトウェアを作るためのインタフェースであり、コンピュータシステムの構築において重要な役割を果たしている。本講義は、プログラミング言語OCamlを通して、プログラミング言語の本質に関する諸概念と、プログラムコードがコンピュータ上で実行される仕組みを実践的に学ぶ。 キーワード: OCaml, 関数型プログラミング, 型システム, インタプリタ, コンパイラ" |
【学修到達目標】 |
"・プログラミング言語OCamlによるプログラミングを習得する ・型システムや関数型プログラミングなど、プログラミング言語に関する基本的な概念を理解する ・言語処理系(インタプリタ・コンパイラ)の動作の仕組みを理解し、プログラムコードがどのように計算機上で実行されるかを理解する ・最終的に、プログラミング言語を自ら設計し、実装できるだけの力を身につける" |
【講義スケジュール】 |
"以下は予定であり、変更となる可能性がある。
第1回 OCamlと関数型プログラミング 第2回 末尾再帰とリスト 第3回 ユーザ定義方によるデータ構造の表現 第4回 副作用とプログラムの組み立て 第5回 大規模プログラミングとモジュール・ファンクタ 第6回 インタプリタの仕組み(1): 構文解析と変数の表現 第7回 インタプリタの仕組み(2): 関数クロージャと環境モデル 第8回 機械語プログラミング入門 第9回 コンパイラの仕組み(1): 字句解析と有限オートマトン 第10回 コンパイラの仕組み(2): 構文解析の仕組み 第11回 コンパイラの仕組み(3): 意味解析と中間表現(IR) 第12回 コンパイラの仕組み(4): 静的単一代入(SSA)形式 第13回 コンパイラの仕組み(5): 呼び出し規約とレジスタ割り当て 第14回 コンパイラの仕組み(6): マシンコード生成と発展的な話題 第15回 試験・今後の学習のためのガイド" |
【指導方法】 |
通常の講義形式で実施します。 |
【事前・事後学修】 |
本講義は関数型プログラミングや言語処理系の概念を学んだ上で、その機能を活用したプログラミング課題を解いていただくことで理解を深めていただく構成となっています。各回の内容についてわからなかった部分を復習する時間と、課題に取り組む時間を確保するようにしてください。 |
【成績評価の方法・基準】 |
試験・課題・小テスト等により総合的に評価する。 |
【受講要件】 |
"以下の内容に関する知識を前提として講義を進める。原則として、下記に示される科目をあらかじめ履修すること。
・Pythonプログラミング: 講義「コンピュータ・サイエンス概論 I」相当 ・C言語プログラミング: 講義「プログラミング言語」相当 ・基本的なデータ構造(配列・リスト・木・グラフ): 講義「コンピュータ・サイエンス概論 II」相当" |
【テキスト】 |
各回の講義に対応したオンライン教材を事前に提供する。 |
【参考書】 |
「最新コンパイラ構成技法」(Modern Compiler Implementation in ML)」, Andrew W. Appel |
【関連分野・関連科目】 |
|
【備考】 |
|
【添付ファイル1】 |
【添付ファイル2】 |
【添付ファイル3】 |
【リンク】 |
|