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