
科目の概要
この授業では、マルチスレッドによる並行処理の基本を学ぶ。最初に、スレッドやスレッドセーフという概念、そしてメモリの可視性と逸出という重要なテーマについて深める。その後は、Javaの並行処理の仕組みを学びつつ、他の言語(アセンブリ、C言語、Rust言語)における並行処理の取り組みも探求する。また、Akka Actorを利用したスケーラビリティと耐障害性を兼ね備えたプログラミングも理解し、一覧取得システムの開発に至るまでを学ぶ。
科目情報
履修想定年次
3年次
単位数
2単位
開講Q
2Q、4Q
科目区分
選択
授業の方法
オンデマンド科目
評価方法
確認レポート 50% , 単位認定試験 50%
前提推奨科目
前提必須科目
後継推奨科目
科目コード
INF-3-C1-0204-006
到達目標
この授業を受けた後、学生は基本的な並行処理プログラミングを理解し、適切に使用することができるようになることを目標とする。具体的には、スレッドやスレッドセーフな設計、Javaの並行処理の仕組みを活用した実践的なプログラム作成能力を身につけ、更には他言語における並行処理の手法を理解する。最終的にはAkka Actorを利用した並行処理プログラミングのスキルを修得し、実世界の問題解決ができる力を身につける。
教科書・参考書
- MartinOdersky著・LexSpoon著・BillVenners著『Scalaスケーラブルプログラミング第4版』2021年BrianGoetz(著)・JoshuaBloch(著)・DougLea(著)『Java並行処理プログラミング』ソフトバンククリエイティブ、2006年高野祐輝『並行プログラミング入門』オライリージャパン、2021年
授業時間外の学修
各回の授業内容は繰り返し見返し、各回二時間ほど復習を行ってください。また、次回の学修内容についてもあらかじめ不明な単語や前提となる知識をWebで調べるなどして各回三時間ほど予習を行ってください。
特記事項
順次公開予定
授業計画
第1回スレッド
第1回
スレッド
第2回スレッドセーフ
第2回
スレッドセーフ
第3回メモリの可視性と逸出
第3回
メモリの可視性と逸出
第4回Java の並列コレクションとシンクロナイザ
第4回
Java の並列コレクションとシンクロナイザ
第5回Executor フレームワーク
第5回
Executor フレームワーク
第6回Fork/Join フレームワークと実行性能
第6回
Fork/Join フレームワークと実行性能
第7回Future と Promise
第7回
Future と Promise
第8回Akka とアクターモデル
第8回
Akka とアクターモデル
第9回Akka Actor の耐障害性
第9回
Akka Actor の耐障害性
第10回ウェブサイト一覧取得システムの開発
第10回
ウェブサイト一覧取得システムの開発
第11回アセンブリ言語、C言語における並行処理プログラミング①
第11回
アセンブリ言語、C言語における並行処理プログラミング①
第12回アセンブリ言語、C言語における並行処理プログラミング②
第12回
アセンブリ言語、C言語における並行処理プログラミング②
第13回Rust言語における並行処理プログラミング①
第13回
Rust言語における並行処理プログラミング①
第14回Rust言語における並行処理プログラミング②
第14回
Rust言語における並行処理プログラミング②
第15回Rust言語における並行処理プログラミング③
第15回
Rust言語における並行処理プログラミング③