科目名 プログラミング言語特論
単位数 2.0
担当者 情報工学専攻 准教授 川端 英之,准教授 上土井 陽子
履修時期 後期
履修対象 1、2年生
講義形態 講義
講義の目的 頑強で大規模,保守性に優れたシステム開発のためには,抽象度の高い記述ができて検証し易く,さらには多様な実行モデルやパラダイムに基づくプログラミングをサポートする現代的な仕様を持ったプログラミング言語ならびに実行環境が不可欠である.本講義は,受講者が,プログラミング言語および実行環境に関する二つの重要なトピックについての知識を習得することを目的とする.一つは静的型付き言語による関数型プログラミングであり,もう一つは並列・分散プログラミングである.
到達目標 前半では,プログラミング言語Haskellを題材に用いて,関数型プログラミングの特徴,意義,重要性について学習する.また,静的型付けと型推論機能,パターンマッチを活かした宣言的プログラミング,遅延評価を用いたストリームプログラミングなど,現代的なプログラミング言語の機能や概念を学ぶ.これらを通して,受講者がプログラミング言語および環境についての広い視野を持てるようになることを目標とする.
後半では,主にJava言語を中心として並列,分散処理において基礎となる同期機構について複数の抽象度でどのように並列プログラミング,分散プログラミングできるかを学習し,受講者がJava言語以外の言語での並列・分散プログラミングとの差異を把握できるようになることを目標とする.
受講要件 コンピュータシステムやプログラミング言語に関する基本的な知識があり,入門的なプログラミング経験を有していることを前提として講義する.
履修取消の可否
履修取消不可の理由
事前・事後学修 必要に応じて事前事後学修のための課題を課す.前半では,毎週の学習内容を確認する宿題を課す.
講義内容 Part I: A Purely Functional Programming Language Haskell
1 Overview
2 Data Types: Tuples and Lists
3 Programming with Lists
4 Programming with I/O Actions
5 Functions as Values: Higher-Order Functions
6 Type Classes and Type Checking
7 Algebraic Types and Lazy Programming
8 Reasoning about Programs

Part II: Concurrent and Distributed Computing in Java
9 Introduction
10 Multi-threaded Programming 1 (Semaphor)
11 Multi-threaded Programming 2 (Mointor)
12 Multi-threaded Programming 3 (Wait-Free Synchronization)
13 Programming in a Message-passing System 1 (Transaction)
14 Programming in a Message-passing System 2 (Checkpointing)
15 Programming in a Message-passing System 3 (Message Logging)
期末試験実施の有無 実施しない
評価方法・基準 課題発表やレポートへの取り組み状況を踏まえ,題材に対する理解度を中心とし
て総合的に評価する.
・レポート課題 60 %
・課題発表 30 %
・授業参加度 10 %
教科書等 参考書:
Simon Thompson, "Haskell: The Craft of Functional Programming," 3rd ed., Addison Wesley (2011).
Vijay Garg, "Concurrent and Distributed Computing in Java," IEEE Pres. and John Wiley & Sons, Inc. (2004).
担当者プロフィール 授業内容や課題などに関する学生の個別学習相談を随時受け付けています.
下記問合せ先まで連絡し,各担当教員と個別にアポイントを取って下さい.

川端 英之:情報科学部棟5階541号室 E-mail:kawabata@hiroshima-cu.ac.jp
上土井 陽子:情報科学部棟4階414号室 E-mail:yoko@hiroshima-cu.ac.jp
講義に関連する実務経験
課題や試験に対するフィードバック ・質問等は随時受け付ける.
・課題への取り組みに対しては随時講評する.
アクティブ・ラーニング
キーワード functional programming, Haskell, reasoning about programs, distributed systems, Java
備考 【教職】中・高専修(数学)