21124120

コンピュータ工学COM506c  COM506d 

3年前学期木2

プログラム言語論

Programming Languages

佐藤 重幸

単位区分

単位数: 2単位
必修
課程・類・プログラム
種別
先端工学基礎課程

関連Webサイト

主題および達成目標

プログラミング言語の諸概念と, それに基づくプログラミングパラダイムを学ぶ.
これにより,

* プログラミング言語に対する一般的な理解
* プログラミングパラダイムに沿ったプログラミング作法

獲得を目指す.

前もって履修しておくべき科目

特定の科目の履修を前提にすることはないが,

* 基本的なプログラミング(例えば「プログラミング通論」相当)
* 計算機の基本的な仕組み(例えば「計算機通論」相当)
* 集合論と記号論理の数学記法(例えば「離散数学」相当)

ついての知識は前提とする.

前もって履修しておくことが望ましい科目

本科目の理解の助けになるであろう科目や経験は次の通り:

* 「言語処理系論」の同時履修
* 形式言語の基礎知識(例えば「形式言語理論」相当)

同学期に開講される「言語処理系論」とは密に連携した授業内容である.
両方履修すると, プログラミング言語の概念と仕組みがより深く理解できるように設計されている.

教科書等

授業教材はオンライン資料として配布する.
その中に, 参考資料を適宜記載する.

授業内容とその進め方

授業内容:

1. ガイダンス, イントロダクション
2. プログラミング言語:起源と歴史
3. ALGOL
4. 型システム
5. オブジェクト指向とデータ抽象
6. クラスシステム
7. JavaとJVM
8. スクリプト言語
9. 関数プログラミングと関数型言語
10. Haskellと純関数プログラミング
11. 計算効果とモナド
12. メタプログラミング
13. 並列プログラミング
14. C
15. まとめ

進め方:

* 11回以降は発展的内容であり, 授業進度に合わせて内容を取捨選択をする.
* 各回にコメントフィードバックを求め, 次回で適宜取り上げる.

授業時間外の学習

* 各回のコメントフィードバック, 及びそれに係る復習・自習
* 期末試験, 及びそれに係る復習
* レポート課題, 及びそれに係る自習(プログラミングを含む)

成績評価方法および評価基準

成績評価方法:

各回のコメントフィードバック・期末試験・レポート課題から総合的に判断する.
ただし, コメントフィードバックと中間レポート課題は, 補助的な位置付けである.
期末レポート課題は, 発展的なオプション課題である.

評価基準:

授業で扱ったプログラミング言語の諸概念やプログラミングパラダイムを理解し, 自ら扱うことができるかを評価する.
期末試験の受験は, 単位取得において必須とする.
尚, オプションの期末レポート課題を提出しなくても, 他が十分良くできていれば, 「優」が取れるように調整する見通しである.

オフィスアワー・授業相談

Google Classroomで受け付ける.

学生へのメッセージ

プログラミング言語は, プログラマの思考を縛る.
あなたがプログラミング言語を1つしか選べないなら, あなたの思考はそれに囚われる.

"The tools we are trying to use and the language or notation we are using to express or record our thoughts, are the major factors determining what we can think or express at all!"
---Edsger W. Dijkstra (1972)

その

木2開講

キーワード

オブジェクト指向
プログラミングパラダイム
型システム
言語設計
計算効果
関数プログラミング
高階関数
最終変更日時: 2025/06/27 15:40:06