2026年度 シラバス学部

コンピュータ理工学基礎関連科目

2026/02/19  現在

コンピテンシーコード表を開く 科目一覧へ戻る

開講学期
/Semester
2026年度/Academic Year  4学期 /Fourth Quarter
対象学年
/Course for;
1年
単位数
/Credits
4.0
責任者
/Coordinator
渡部 有隆
担当教員名
/Instructor
渡部 有隆, 裴 岩, 黄 捷, 陳 文西, サクセナ ディーピカー, 仙波 翔吾, テーヌワラ ハンナディゲー アキラ サンジャヤ シリウィーラ, 周 穎慧
推奨トラック
/Recommended track
先修科目
/Essential courses
事前に学んでおいてほしい科目一覧(下記科目内容の一部ないし全部を既知として授業を進めます:
PL01 プログラミング入門
PL02 プログラミングC
更新日/Last updated on 2026/02/06
授業の概要
/Course outline
コンピュータの本質は「情報の操作」です。情報をいかに効率的な手順(アルゴリズム)で、適切な形式(データ構造)を用いて処理するかを学ぶことは、優れたソフトウェアを開発するために不可欠です。 また、コンピュータサイエンスにおいて、アルゴリズムは言語やプラットフォームの変遷に左右されない不変かつ普遍的な学問です。プログラムを記述・実行するための手段が進化しても、背後にある論理的な解法——すなわちアルゴリズムの設計——が、最終的なシステムの限界を決定づけます。

本授業では、プログラミングにおける「アルゴリズム」と「データ構造」の密接な関係性を理解し、問題解決に最適な手法を選択・設計する能力を養います。さらに、プログラミング演習をとおして、理論と実践の両面からこれら普遍的な理論と技術の習得を目指します。
授業の目的と到達目標
/Objectives and attainment
goals
[授業の目的]

本授業の目的は、与えられた課題に対して最適なデータ構造とアルゴリズムを自ら選択・設計し、効率的なプログラムとして実装できる能力を習得することです。 ソフトウェア開発において、ハードウェアの性能向上以上に、適切なアルゴリズムの設計が劇的な性能の改善をもたらすことを理解します。将来の高度な開発や研究においても、計算資源を最適に活用できる論理的・実践的な思考力を養います。

[到達目標]

- 計算量の評価: O表記法を用いて、アルゴリズムの時間・空間計算量を定量的に評価し、データ量の増加に対する実行効率の推移を予測できる。
- O(log N)の重要性の理解: 二分探索などに代表される対数時間の効率性を理解し、大規模データ処理においてO(N)とO(log N)が生む圧倒的な性能の差を説明できる。
- 適切な選択・設計:各アルゴリズムとデータ構造の長所と短所を理解し、与えられた問題に対して適切な選択と設計ができる。
- 情報処理の基本戦略: 整列と探索の密接な関係性を理解し、データを事前に構造化(整列)することが探索効率に与える影響を考慮した上で、目的に対して最適な手法を選択・設計できる。
技法の応用: 再帰、動的計画法、分割統治法、ヒューリスティック探索などのプログラミング技法を習得し、具体的なアルゴリズム設計や問題解決に応用できる。
- 内部構造の理解: 木やハッシュに代表されるデータ構造の仕組みを理解し、標準ライブラリで提供される機能が、内部でどのような構造や仕組みで実装されているかを踏まえ、特性に応じた最適な選択・設計ができる。

[対応する学習・教育到達目標]

(A) 技術者としての専門的・倫理的責任を自覚し、情報科学技術を駆使して社会における要求を分析し、技術的課題を設定・解決・評価することができる
(C) 数学・自然科学・情報技術分野の科目の専門的知識と、それらの習得を通して身につけた論理的な思考力や客観的判断力などの科学的思考力を、問題解決に応用できる

[コンピテンシーコード]
C-AL-001, C-AL-002-1, C-AL-003-1, C-AL-004-2, C-AL-005-1, C-AL-006-1
授業スケジュール
/Class schedule
1 導入
2 計算量、初等的整列
  O表記法 / バブルソート / 選択ソート / 安定なソート
3 データ構造
  スタック / キュー / 連結リスト
4 検索、ハッシュ
  線形探索 / 二分探索 / ハッシュ
5 再帰・分割統治法
  全探索 / 分割統治法 / マージソート
6 高等的整列
  パーティション / 計数ソート / クイックソート
7 木
  根付き木 / 二分木 / 木の巡回アルゴリズム
8 二分探索木
  二分探索木条件 / 二分探索木に対する挿入・探索・削除
9 ヒープ
  完全二分木 / ヒープ / 優先度付きキュー
10 動的計画法
  動的計画法 / 連鎖行列積 / 最長共通部分列
11 グラフ
  グラフの表現 / 深さ優先探索 / 幅優先探索
12 グラフアルゴリズム
  重み付きグラフ / 最小全域木 / 単一始点最短経路
13 ヒューリスティック探索
  バックトラック / ヒューリスティック / IDA*アルゴリズム / A*アルゴリズム
14 精選トピック

各回の授業は、はじめの 2 限分を講義形式で実施し、残りの 2 限分を個人で取り組むプログラミングの演習形式で実施します。

各回の授業に臨むにあたり、スケジュールに示したキーワードについて講義資料の予習をしておくこと。また、演習時間内に完了しなかった課題を所定の期限までに完了すること。毎回の予習・復習の目安は8時間程度です。
教科書
/Textbook(s)
教科書

渡部有隆、「プログラミングコンテスト攻略のためのアルゴリズムとデータ構造」、マイナビ出版(※改訂によりタイトルが異なる可能性があります)

副読本

T. コルメン, R. リベスト, C. シュタイン, C. ライザーソン, アルゴリズムイントロダクション 第3版 第1巻: 基礎・ソート・データ構造・数学 (世界標準MIT教科書),近代科学社.
T. コルメン , R. リベスト, C. シュタイン, C. ライザーソン, アルゴリズムイントロダクション 第3版 第2巻: 高度な設計と解析手法・高度なデータ構造・グラフアルゴリズム (世界標準MIT教科書), 近代科学社.
成績評価の方法・基準
/Grading method/criteria
AA:小課題 - 最大100点
PA:演習課題 - 最大100点
CE:コーディング試験 - 最大120点
PE:期末試験 - 最大120点
TH:理論点: sqrt(AA × PE)
PR:実践点: sqrt(PA × CE)
成績 = sqrt(TH × PR))
※sqrt(x) はxの平方根
※状況に応じて調整する可能性があります
履修上の留意点
/Note for course registration

参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
コースウェブサイト
http://web-ext.u-aizu.ac.jp/course/alg1/

演習サイト
https://onlinejudge.u-aizu.ac.jp/beta/ice

参考書
T. コルメン, R. リベスト, C. シュタイン, C. ライザーソン,アルゴリズムイントロダクション 第3版 総合版 (世界標準MIT教科書) 大型本,近代科学社.
Thomas H. Cormen, Charles E. Leiserson,  Ronald L. Rivest, Clifford Stein, Introduction to Algorithms (MIT Press).
Robert Sedgewick, Algorithms in C, Parts 1-5 (Bundle): Fundamentals, Data Structures, Sorting, Searching, and Graph Algorithms.

実務経験あり(コースコーディネータ渡部):株式会社Giveryとの共同研究において、人材育成、人材評価、研修・教育に活用することができるプログラミングスキルチェックツール・教材を開発。主要コンテンツの1つとして、アルゴリズムとデータ構造に関する問題及びテストデータを数多く提供。また、開発環境や教育支援システム等、実用されている大規模なソフトウェアの開発経験あり。これらの経験をもとに、幅広いアルゴリズムとデータ構造の理論と実践を教授する。

実務経験あり(裴): 東軟グループ(中国、CMMI5) 及びAlpine Electronics Europe D&R GmbH (ドイツ)に5年間勤務した。100万LOCレベルのソフトウェア開発のプロジェクトとチームを参加と監督し、核心的なアルゴリズムを設計し、そして産業特許を申請と獲得した。この経験に基づいて、アルゴリズム及び複雑度、プログラミング、ソフトウェア工学などについて教授する。

実務経験あり(陳):日本光電において5年間、生体計測システム、信号処理、データ解析に関する研究開発に従事した。この経験をもとに、アルゴリズムとデータ構造の基礎を教授する。

授業形態:講義,演習



コンピテンシーコード表を開く 科目一覧へ戻る

開講学期
/Semester
2026年度/Academic Year  3学期 /Third Quarter
対象学年
/Course for;
3年
単位数
/Credits
3.0
責任者
/Coordinator
出村 裕英
担当教員名
/Instructor
出村 裕英, ファン トゥアン アン, レ ドアン ホアン, 山本 圭香
推奨トラック
/Recommended track
先修科目
/Essential courses
事前に学んでおいてほしい科目一覧(下記科目内容の一部ないし全部を既知として授業を進めます)
MA07 確率統計学
LI14 コンピュータ理工学演習 II
FU01 アルゴリズムとデータ構造 I
FU03 離散系論
更新日/Last updated on 2026/01/29
授業の概要
/Course outline
効率よくかつ正確に情報を伝達することは、近代デジタル社会における重要な技術課題のひとつである。情報理論はこの問題に対して、数学的な定式化に根ざし、理論的解法を提供する。情報理論の考え方は、確率や統計の定理などを活用し情報通信や誤り訂正のための効率のよい符号化の構築を可能とする。情報理論は、画像データ圧縮、暗号論、ネットワークコミュニケーション、情報量評価などの分野で重要な役割を担っており、本科目でそれらの基礎を身につける。
授業の目的と到達目標
/Objectives and attainment
goals
[コンピテンシーコード]
C-DS-001-3, C-DS-004, C-DS-006-1, C-DS-007,

[対応する学習・教育到達目標]
(A) 技術者としての専門的・倫理的責任を自覚し、情報科学技術を駆使して社会における要求を分析し、技術的課題を設定・解決・評価することができる
(C) 数学・自然科学・情報技術分野の科目の専門的知識と、それらの習得を通して身につけた論理的な思考力や客観的判断力などの科学的思考力を、問題解決に応用できる

本授業科目の主要な課題は,情報源符号化と通信路符号化の数学的な定式化と,符号化の効率的な構成手法に加えて,情報のあいまいさ及び情報量を測るためのエントロピーの概念の理解にある.確率と統計の基礎および符号の木および量子化テーブルの観点からみたデータ圧縮についても取り扱う。
授業スケジュール
/Class schedule
出村/山本クラス(日本語)

講義+紙上演習(出村)
#1 条件付き確率と大数の法則(教科書1章、付録AC)
#2 情報量、情報源(教科書2、3章)
#3 情報源符号化(教科書4章、ハフマン符号等)
#4 瞬時符号、符号空間(教科書4章派生)
#5 通信路 (教科書5章)
#6 通信路符号化(教科書第6章)
#7 線形符号(教科書第7章相当)
[予習] ハンドアウト予習 (週4時間)
[復習] ハンドアウト復習+教科書例題演習問題 (週6時間)

コンピュータ演習(出村/山本)
#1 MATLAB Onlineの導入
#2 画像圧縮とノイズ除去
#3 画像データ圧縮の最適化
#4 情報源符号化
#5 相互情報量とエントロピーの応用
#6 Communication Toolbox入門1 変調ほか
#7 Communication Toolbox入門2 通信路符号化の誤り訂正
#8 Extra-Ex    Communication Toolbox入門3 ハミング符号
(オプション、ただし演習満点以上にはならない)
[予習] 課題を解くのに必要なMATLAB昨日の予習 (週2時間)
[復習] 採点済み課題の復習 (週1時間)

===

Pham/Leクラス(英語)
講義(ITCG, Pham)
#1 Lecture 1:  Course introduction, Intro. to Information Theory
#2 Lecture 2:  Errors and Error Detecting Codes
#3/4 Lecture 3 – 4: Error Correcting Codes - Repetition and Hamming codes
#5/6 Lecture 5 – 6: Data compression & Huffman Code
#7/8 Lecture 7 – 8: Probability & Inference
#9 Lecture 9: Independence, Review of Huffman code
#10/11 Lecture 10-11: Entropy & Source Coding Theorem
#12 Lecture 12: Channel & Mutual information
#13 Lecture 13: Channel Capacity
#14 Lecture 14: Channel Coding Theorem


演習(Pham and Le)
#1 Lab 1 (1 session): Matlab tutorial
#2 Lab 2 (1 session): Image transmission over binary symmetric channel (BSC)
#3 Lab 3 (1 session): Implementation of repetition code (R3) encoder/decoder
#4 Lab 4 (1 session): Implementation of Hamming code (7,4) encoder/decoder
#5/6 Lab 5 (2 sessions): Implementation of Source coding (data compression) using Huffman code
#7 Lab 6 (1 session): Combination of Image transmission over BSC with and without channel and source coders implemented in Lab 1-4

Note: Workload 135 hours, inludes
- In-class Lectures and Labs: 45 hours
- Lab preparation and report: 49 hours;
o each week: 2 hour (Pre-lab preparation) + 5 hours (Post-lab report preparation) = 7 hours/week.
- Lecture preparation and Quizzes (at home): 41 hours;
o each week: 2x(~1 hour) (Pre-lecture preparation) + 2x2 hours (Post-lecture: working on Quiz ) = ~ 6 hours/week.
教科書
/Textbook(s)
出村クラス講義教科書
- はじめての情報理論
- 稲井 寛(著) 森北出版
- ISBN:978-4-627-84911-2

Phamクラス講義教科書
- Main textbook: A Student's Guide to Coding and Information Theory, STEFAN M. MOSER PO-NING CHEN. (some chapter will be downloadable; however, students are required to have a copy)
- Additional (advanced) reference: Information Theory, Pattern Recognition, and Neural Networks (English, free)
- David J. C. MacKay, University of Cambridge
- ISBN: 9780521642989
成績評価の方法・基準
/Grading method/criteria
出村/山本クラス
期末試験 40%、クイズ(2-14回講義)10%、コンピュータ演習50%

Pham/Leクラス
期末試験 25%, クイズ 25%, Lab Exercise 50%
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
実務経験有り:情報理論およびデータ圧縮に関して通信ネットワーク設計などを行なっている。
Communications System Toolbox, MATLAB
https://jp.mathworks.com/help/comm/

授業形態:講義,演習


コンピテンシーコード表を開く 科目一覧へ戻る

開講学期
/Semester
2026年度/Academic Year  2学期 /Second Quarter
対象学年
/Course for;
2年
単位数
/Credits
3.0
責任者
/Coordinator
森 和好
担当教員名
/Instructor
浅井 和人, 森 和好, 浅井 信吉, 渡邊 曜大, ヴィリエッタ ジョヴァンニ, ナッサーニ アラディン
推奨トラック
/Recommended track
先修科目
/Essential courses
更新日/Last updated on 2026/02/04
授業の概要
/Course outline
離散系論は離散数学 (Discrete Mathematics) とも呼ばれている。離散的な事象・対
象に対する数学的なアプローチであり、コンピュータ、プログラム、アルゴリ
ズムなどについての数学的な概念や手法として発展してきた。離散系論は計算
機科学の数学的な基礎であり多くの計算機関連の研究や応用技術において用い
られる。初年度で学んだ線形代数や微積分(解析学)とは異なる計算機科学技術
のための数学である。現代の ICT(Information and Communication
Technology) を支える共通の道具であるとともに共通の基盤、表現するための
共通言語でもある。
授業の目的と到達目標
/Objectives and attainment
goals
[対応する学習・教育到達目標]
(A) 技術者としての専門的・倫理的責任を自覚し、情報科学技術を駆使して社会における要求を分析し、技術的課題を設定・解決・評価することができる
(C) 数学・自然科学・情報技術分野の科目の専門的知識と、それらの習得を通して身につけた論理的な思考力や客観的判断力などの科学的思考力を、問題解決に応用できる

[コンピテンシーコード]
C-AL-004-3, C-AL-005-4, C-CN-001-1, C-DS-001-2, C-DS-004, C-DS-005, C-DS-006-2

概要でも述べたように離散系論は計算機科学技術のための数学であり、現代の
ICT(Information and Communication Technology) を支える共通の道具である
とともに共通の基盤、表現するための共通言語でもある。それらの道具、基盤、
共通言語を理解し使用し表現できるようになることが到達目標である。さらに
理論を理解するだけでなくプログラムで実装することを想定して学ぶことを勧
める。
授業スケジュール
/Class schedule
以下のように2学期に4つの講義クラスと6つの演習クラスに分けて学ぶ。

講義:
C1: K.Asai
C2: N.Asai
C3, C4: Mori
C5, C6: Viglietta

演習:
C1: K.Asai
C2: N.Asai
C3: Mori
C4: Y.Watanabe
C5: Viglietta
C6: Alaeddin

以下のように14回の授業を4つのブロックに分けて講義と演習を通して学ぶ。

第1ブロック「基礎」では「集合と論理」「関数」「関係」について学ぶ。こ
れらは以降の項目の共通の道具となる。部分集合に対する演算、集合を要素と
する集合族、単射(1対1写像)や全射(上への写像)、二つの要素の関係を
扱う2項関係の定義と表現法、同値関係と集合の分割などを学ぶ。これらを理
解し使いこなせることが必要である。

第2ブロック「数え上げと組み合せ論」では整数の性質、再帰的な定義法、事
象や対象物の個数を数え上げる方法について学ぶ。「剰余計算」では整数の剰
余に関する基礎、「再帰と帰納」では数学的帰納法の原理、再帰的定義法、
「組み合せ論」では和と積の原理、鳩の巣原理、順列と組み合せ、数え上げの
手法、などを学ぶ。

第3ブロック「グラフ理論」では「グラフの基礎」「有向グラフ」「平面グラ
フ」「木」について学ぶ。現実の様々な事象や関係をグラフの概念を用いて理
解することができる。ものとものとのつながりや関係はグラフとして表現され
る。「グラフの基礎」では辺や頂点や面、さらに頂点や面の次数を定義しその
基本的な性質と計算機のための行列を用いた表現法について、「有向グラフ」
ではグラフの辺に向き(方向)を持たせることでより現実の事象をより詳しく
モデル化する。さらに経路の一筆書き問題を発端として生み出された「平面グ
ラフ」の性質、オイラーの定理や多面体定理などを学ぶ。グラフの特殊形とし
て「木」構造を学ぶ。

第4のブロックでは数字の大小関係を抽象化して得られる2項関係である「順
序」、さらに公理論的に順序を構成する「束」の概念、さらに「論理」で命題
論理とスイッチング回路、さらに一般化・抽象化しそれらを特別な場合として
含む「ブール代数」について学ぶ。

  1. 基礎 (3 回)
     - 集合論と論理
     - 関数
     - 関係

   2. 数え上げと組み合せ論 (2-3 回)
     - 剰余計算
     - 再帰と帰納
     - 組み合せ論

     中間試験 (教員によって異なるので注意)

   3. グラフ理論 (4-5 回)
     - グラフの基礎
     - 有向グラフ (DAG)
     - 平面グラフ
     - 木

   4. 順序、論理、ブール代数 (3-4 回)
     - 順序
     - 束
     - 論理
     - ブール代数

[Mori's class]
演習のクラスは2回の講義に1回行う。

予習と復習(宿題を含む)を求められることがある(約4時間を想定している)。
教科書
/Textbook(s)
[K.Asai's class]
ハンドアウトのみ

[N.Asai's class]
リプシッツ, マグロウヒル「離散数学」, オーム社.

[Mori's class]
資料を配布

[Viglietta 's class]
Seymour Lipschutz, Marc Lipson, "Discrete Mathematics", Schaum's Outline
Series, Fundamental Mathematics in Computer Science, McGraw Hill.
成績評価の方法・基準
/Grading method/criteria
中間試験の実施、学生の成績評価法は担当教員によって異なるので注意をする
こと。不明な場合や質問があれば担当教員に確認すること。各クラス毎の評価
方法を以下に述べる。

[K.Asai's class]
期末試験と演習による。(課題の8割以上を消化することを必須とする)
試験のみで満点の成績を取ることが可能であるが、補足的に演習点が追加されうる。

[N.Asai's and Mori's class]
定期試験 (70%), [中間試験(30%),期末試験(40%)], 演習 (30%)

[Viglietta's class]
Final exam (70%), Exercises (30%)
履修上の留意点
/Note for course registration
ChatGPT等の生成AIの利用は認めない(教員の明示的な許可がある場合を除く)。
中間試験の実施、学生の成績評価法は担当教員によって異なるので注意が必要
である。
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
[K.Asai's class]
http://web-ext.u-aizu.ac.jp/~k-asai/classes/class-texts.html

[N.Asai's class]
https://elms.u-aizu.ac.jp/login/index.php

[Mori's class]
離散数学―コンピュータサイエンスの基礎数学 (マグロウヒル大学演習)
Seymour Lipschutz (著),  成嶋 弘 (翻訳)

Schaum's Outline of Discrete Mathematics, Revised Third Edition
Seymour Lipschutz (著),  Marc Lipson (著)

[Viglietta's class]
Seymour Lipschutz, Marc Lipson, "Discrete Mathematics", Schaum's Outline
Series, Fundamental Mathematics in Computer Science, McGraw Hill.


実務経験有り:
[N.Asai]
1997-2000 (株)ウェーブフロント 研究員
2002-2003 国立環境研究所 客員研究員
2001-2010 旭硝子(株)との共同研究
He has practical work experience at Wave Front Co. Ltd for
numerical simulations, modelings and high performance
computings from 1997 to 2000. After joined to U. of Aizu, he
has continued with companies on the mentioned topics.  These
experiences of designing models, data structure and algorithms
are deeply related with this class topics, or each of this
class topics is important basic element for practical design.

[K.Mori]
1988-1988 Shinko Electric Co.,Ltd.
(神鋼電機株式会社)
制御用コンピュータSELCOS上への数式処理システムREDUCEの実現


コンピテンシーコード表を開く 科目一覧へ戻る

開講学期
/Semester
2026年度/Academic Year  3学期 /Third Quarter
対象学年
/Course for;
2年
単位数
/Credits
4.0
責任者
/Coordinator
齋藤 寛
担当教員名
/Instructor
西村 憲, 齋藤 寛, 富岡 洋一, 奥山 祐市, 小平 行秀, 新田 高庸, 仙波 翔吾
推奨トラック
/Recommended track
先修科目
/Essential courses
更新日/Last updated on 2026/01/28
授業の概要
/Course outline
論理回路設計は,プロセッサといったデジタル集積回路における設計の一過程です.論理設計の目的は,集積回路として実現したい機能を0と1をとる論理変数と論理和,論理積,論理否定といった論理演算を用いて設計することである.設計した回路が正しく動作するよう設計することはもとより,コストや性能といった設計要求を満足する最適な設計を得る必要がある.
授業の目的と到達目標
/Objectives and attainment
goals
[対応する学習・教育到達目標]
(A) 技術者としての専門的・倫理的責任を自覚し、情報科学技術を駆使して社会における要求を分析し、技術的課題を設定・解決・評価することができる
(C) 数学・自然科学・情報技術分野の科目の専門的知識と、それらの習得を通して身につけた論理的な思考力や客観的判断力などの科学的思考力を、問題解決に応用できる

[コンピテンシーコード]
C-AR-001, C-AR-012, C-AR-013, C-AR-014

講義では,論理回路設計における基礎知識や,設計手法ならびに最適化手法を学びます.演習では,真理値表などによる仕様より自分で論理回路を生成し,回路図作成ソフトウェア上に設計します.また,シミュレータを使ってシミュレーションを行い,設計された回路が正しいかどうかを検証します.

授業の到達目標は以下の通りです.
1. 真理値表から主加法標準形(minterm canonical disjunctive form)を得ることができる
2. カルノーマップを使って,二段論理の簡単化を行うことができる
3. 有限状態機械を用いて,順序回路の設計ができる
授業スケジュール
/Class schedule
[授業形態]
1回4コマ(1コマ50分)のうち、2コマ講義、2コマ演習

[スケジュール]
1. 導入
2. 数の表現
3. ブール代数
4. カルノーマップを用いた二段論理簡単化
5. 様々な論理関数の表現法
6. 遅延と論理回路の性能
7. 中間試験
8. 組み合わせ回路1
9. 組み合わせ回路2
10. メモリ論理
11. 順序回路の設計
12. 有限状態機械を用いた順序回路の設計
13. まとめ
14. その他

以上は,全クラス共通.

[事前学修]
講義、演習資料を読み、わからないことがあればインターネットなどを用いて調べておく。

[事後学修]
講義資料を読み理解を深める。また、課題などがある場合は行う。授業時間内に演習が終わらなかった場合、終わらせるとともにレポートの準備を行う。

教科書
/Textbook(s)
指定なし
成績評価の方法・基準
/Grading method/criteria
中間試験20% 期末試験40% レポート40%
1. 公欠の場合に限り、追試験をうけることができる
2. D判定に関して再試験は行わない
3. 期末試験を受けない、もしくはレポートを全く提出していない場合、単位認定とはならない


コンピテンシーコード表を開く 科目一覧へ戻る

開講学期
/Semester
2026年度/Academic Year  1学期 /First Quarter
対象学年
/Course for;
3年
単位数
/Credits
4.0
責任者
/Coordinator
ベン アブダラ アブデラゼク
担当教員名
/Instructor
西村 憲, 中里 直人, ベン アブダラ アブデラゼク, 北道 淳司, ダン ナム カイン, 仙波 翔吾
推奨トラック
/Recommended track
先修科目
/Essential courses
事前に学んでおいてほしい科目一覧(下記科目内容の一部な
いし全部を既知として授業を進めます)
・ FU04 論理回路設計論
更新日/Last updated on 2026/01/30
授業の概要
/Course outline
コンピュータアーキテクチャの基礎、設計手法、および性能評価法ついて学ぶ。 コンピュータはプロセッサ、メモリ、入出力装置等から成り立っているが、論理回路設計論で学んだ演算器や制御回路をどのように組み合わせることでこれらが構成できるかについて解説する。コンピュータを設計する際には、 性能、コスト、柔軟性、プログラム容易性、消費電力等、さまざまな要求を考慮しなければならない。本科目では商用プロセッサの1つであるMIPSを例に挙げ、そのアーキテクチャを解説し、これらの要求に対してどのような配慮がなされているかを見て行く。演習では、CadenceなどのCAD(Computer Aided Design)ツールを使った MIPS プロセッサの実装及び動作検証シミュレーションを行う。また、アセンブラプログラミングについても学習し、プロセッサの基本動作を理解する。
授業の目的と到達目標
/Objectives and attainment
goals
[対応する学習・教育到達目標]
(A) 技術者としての専門的・倫理的責任を自覚し、情報科学技術を駆使して社会における要求を分析し、技術的課題を設定・解決・評価することができる
(C) 数学・自然科学・情報技術分野の科目の専門的知識と、それらの習得を通して身につけた論理的な思考力や客観的判断力などの科学的思考力を、問題解決に応用できる

[コンピテンシーコード]
C-AR-002, C-AR-003,C-AR-004,C-AR-005

・コンピュータアーキテクチャの主要原理を理解する
・アセンブリプログラミングをとおしてプロセッサの挙動を理解する
・CADツールを用いてプロセッサの設計・検証を行い、プロセッサ設計の概要を理解する
授業スケジュール
/Class schedule
(講義)
1. 概要 (1章)
2. 性能評価 (1章)
3. 命令とアセンブリ言語 (2章)
4. 命令とアセンブリ言語2 (2章)
5. 演算回路: 加算、減算、論理演算、ALU(3章)
6. 演算回路2:乗算、除算、浮動小数点(3章)
7. データパス (4章)
8. 制御回路 (4章)
9. パイプライン技術 (4章)
10. パイプライン技術2: ハザード(4章)
11. メモリ階層化: キャッシュ(5章)
12. メモリ階層化: 仮想記憶 (5章)
13. ストレージおよびその他入出力 ((5章その他) , 並列プロセッサ: SIMD/MIMD、ベクトルプロセッサなど ((6章)
14. 復習、そしていくつかの発展的な話題(コンピュータアーキテクチャに関する興味深い内容)

(演習)
1. 演習概要説明
2. アセンブラ(基本命令のみ)
3. アセンブラ(immediateで乗算)
4. アセンブラ(JALとJRでサブルーチン)
5. RFやALUの理解(シミュレーションで動作を確認)
6. 簡単なCPUの構築および基本命令による動作確認
7. 簡単なCPUを開発し、例題2で開発した簡単なプログラムを使ってその動作を確認する
8. 簡単なCPUを開発し、例題3で開発した乗算ルーチンを使って、その動作を確認する
9. 予備(演習5から7までの復習、遅れ対応)
10. パイプライン(教科書章末問題解答)
11. キャッシュ(教科書章末問題解答)
12. 仮想記憶(教科書章末問題解答)
13. 総合課題1(または、マルチコア、または、これまでの復習。クラスの進捗による)
14. 総合課題2(または、マルチコア、または、これまでの復習。クラスの進捗による)

[事前学修]
講義、演習資料を読み、わからないことがあれば教科書やインターネットなどで調べておく。

[事後学修]
教科書や講義資料を読み理解を深める。また、課題などがある場合は行う。授業時間内に演習が終わらなかった場合、終わらせるとともにレポートの準備を行う。
教科書
/Textbook(s)
コンピュータの構成と設計 MIPS Edition 第6版 上下:ハードウエアとソフトウエアの
インターフェース, ‎日経BP, 第6版 (2021/11/3)

Computer Organization and Design MIPS Edition: The Hardware/Software Interface (The Morgan Kaufmann Series in Computer Architecture and Design) , Morgan Kaufmann; 6th edition (December 4, 2020)
成績評価の方法・基準
/Grading method/criteria
定期テスト(50%)、演習リポート(50%)、追試験は実施しない。
履修上の留意点
/Note for course registration
ベン・アブダラ教授の授業では、講義は英語で行われます。

重要な関連科目
・オペレーティングシステム論
・並列コンピュータ システム
・組み込みシステム
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
参考リンク先
初回の講義時にアナウンスする。


コンピテンシーコード表を開く 科目一覧へ戻る

開講学期
/Semester
2026年度/Academic Year  4学期 /Fourth Quarter
対象学年
/Course for;
2年
単位数
/Credits
4.0
責任者
/Coordinator
劉 勇
担当教員名
/Instructor
劉 勇, 大井 仁, マルコフ コンスタンティン, 西舘 陽平, 松本 和也, ダン ナム カイン, 周 穎慧, ワン ジーシャン
推奨トラック
/Recommended track
先修科目
/Essential courses
PL02 C Programming
PL03 JAVA Programming I
PL04 C++ Programming
FU05 Computer Architecture
FU01 Algorithms and Data Structures I
更新日/Last updated on 2026/02/06
授業の概要
/Course outline
Operating systems are an essential part of any computer system. Similarly, a course on operating systems is an essential part of any computer-science education. The operating system provides certain services to programs and to the users of those programs in order to make the programming task easier. In this course, three parts of the core of operating systems will be mainly learned, including process management, memory management, and storage management. This course does not concentrate on any particular operating system or hardware, but introduces some fundamental concepts that are applicable to a variety of systems. For examples, some abstract concepts such as cooperation of multi-threading and deadlocks will be discussed.
授業の目的と到達目標
/Objectives and attainment
goals
Graduates are aware of their professional and ethical responsibilities as an engineer, and are able to analyze societal requirements, and set, solve, and evaluate technical problems using information science technologies in society.

Graduates are able to apply their professional knowledge of mathematics, natural science, and information technology, as well as the scientific thinking skills such as logical thinking and objective judgment developed through the acquisition of said knowledge, towards problem solving.

[Competency Codes]
C-OS-001, C-OS-002, C-OS-003

1. To learn the operating-system concepts.
2. To learn the process management, including process and thread concept, process synchronization, and CPU scheduling.
3. To learn the memory management, including paging, segmentation, and virtual memory.
4. To learn the storage management, including file-system and I/O system.
授業スケジュール
/Class schedule
Session 1
Lecture: Introduction
- Introduction to operating system
- Resource management
- Memory protection

Exercise: Build a simple operating system structure

[Preparation/Review] Study lecture materials and textbook (Chapter 1): preparation (3 hours), review (2 hours); exercise assignment (4 hours).

Session 2
Lecture: Operating System Structures
- Operating system design and implementation
- User and operating System interface
- System calls

Exercise: Implement system calls

[Preparation/Review] Study lecture materials and textbook (Chapter 2): preparation (2 hours), review (2 hours); exercise assignment (4 hours).

Session 3
Lecture: Processes
- Process concept
- Process scheduling
- Operations on processes

Exercise: Implement and simulate process

[Preparation/Review] Study lecture materials and textbook (Chapter 3): preparation (2 hours), review (2 hours); exercise assignment (4 hours).

Session 4
Lecture: Threads and Concurrency
- Multithreading
- Thread control block

Exercise: Implement and simulate multithreading

[Preparation/Review] Study lecture materials and textbook (Chapter 4): preparation (2 hours), review (2 hours); exercise assignment (5 hours).

Session 5
Lecture: CPU Scheduling
- Scheduling criteria
- Scheduling algorithms
- Thread scheduling

Exercise: Implement and simulate CPU scheduling algorithms

[Preparation/Review] Study lecture materials and textbook (Chapter 5): preparation (2 hours), review (2 hours); exercise assignment (5 hours).

Session 6
Lecture: Process Synchronization Tools
- Critical section
- Mutex locks, semaphores, monitors

Exercise: Apply synchronization tools of locks, semaphores, monitors

[Preparation/Review] Study lecture materials and textbook (Chapter 6): preparation (2 hours), review (2 hours); exercise assignment (5 hours).

Session 7
Lecture: Synchronization Examples and Deadlocks
- Classic problems of synchronization
- Deadlock characterization
- Deadlock prevention, avoidance, detection

Exercise: Simulate synchronization operations and deadlock

[Preparation/Review] Study lecture materials and textbook (Chapters 7 and 8): preparation (2 hours), review (2 hours); exercise assignment (5 hours).

Session 8
Midterm exam (optional)

Session 9
Lecture: Main Memory
- Contiguous memory allocation
- Segmentation
- Paging and structure of the page table

Exercise: Implement memory allocation

[Preparation/Review] Study lecture materials and textbook (Chapter 9): preparation (2 hours), review (2 hours); exercise assignment (4 hours).

Session 10
Lecture: Virtual Memory
- Demand paging
- Page replacement

Exercise: Simulate paging memory translation

[Preparation/Review] Study lecture materials and textbook (Chapter 10): preparation (2 hours), review (2 hours); exercise assignment (5 hours).

Session 11
Lecture: Mass Storage Structure
- Storage device management
- Swap-space management

Exercise: Implement storage structure

[Preparation/Review] Study lecture materials and textbook (Chapter 11): preparation (2 hours), review (2 hours); exercise assignment (4 hours).

Session 12
Lecture: I/O Systems
- I/O Hardware
- Application I/O Interface

Exercise: Apply I/O interface

[Preparation/Review] Study lecture materials and textbook (Chapter 12): preparation (2 hours), review (2 hours); exercise assignment (4 hours).

Session 13
Lecture: File System Interface
- File concept
- Access methods
- Directory structure

Exercise: Implement directory structure

[Preparation/Review] Study lecture materials and textbook (Chapter 13): preparation (2 hours), review (2 hours); exercise assignment (4 hours).

Session 14
Lecture: File System Implementation
- File system operations
- Directory implementation
- Allocation methods

Exercise: Implement file system

[Preparation/Review] Study lecture materials and textbook (Chapter 14): preparation (2 hours), review (2 hours); exercise assignment (5 hours).

Session 15
Lecture: Final Review (optional)

[Preparation/Review] Study lecture materials and textbook: preparation (3 hours), review (4 hours)
教科書
/Textbook(s)
1. Operating System Concepts by A. Silberschatz, P. B. Galvin, and G. Gagne, John Wiley & Sons, Inc. (the 10th Edition, 2018)

2. Materials and handouts provided by instructors.
成績評価の方法・基準
/Grading method/criteria
[H. OI's classes]

Midterm exam (30 points), Final examination (40 points), Exercise reports (30 points).

[K. MATSUMOTO's classes]

Midterm exam (30 points), Final examination (30 points), Exercise reports (40 points).

[Y. LIU's class]

Final examination (60 points), Exercise reports (40 points).
履修上の留意点
/Note for course registration
The course content is referenced to Computer Architecture or Computer Organization, Basic Algorithms and Data Structures, Programming C/C++ or Java.
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
The 9th edition of Operating Systems Concepts, by  A. Silberschatz, P. Galvin, and G. Gagne, can be free downloaded.

The authors of the textbook "Operating Systems Concepts" provide a set of slides to accompany each chapter of the textbook (the 10th edition):
https://www.os-book.com/OS10/slide-dir/index.html

A good reference book of "Modern Operating Systems" (the 5th edition) authors of Andrew S. Tanenbaum, Herbert Bos by Pearson:
https://www.pearson.com/en-us/subject-catalog/p/modern-operating-systems/P200000003311 (for instructors)

The course instructors have work experiences:
Prof. H. OI has  more than five years of industrial experiences at Digital Equipment Corporation, ASTEM RI/Kyoto and HAL Computer Systems.


コンピテンシーコード表を開く 科目一覧へ戻る

開講学期
/Semester
2026年度/Academic Year  4学期 /Fourth Quarter
対象学年
/Course for;
2年
単位数
/Credits
3.0
責任者
/Coordinator
鈴木 大郎
担当教員名
/Instructor
鈴木 大郎, 森 和好, ナッサーニ アラディン, テーヌワラ ハンナディゲー アキラ サンジャヤ シリウィーラ, ハマダ モハメド
推奨トラック
/Recommended track
先修科目
/Essential courses
事前に学んでおいてほしい科目一覧(書き科目内容の一部ないし全部を既知として授業を進める)

FU01 アルゴリズムとデータ構造 I
FU03 離散系論
更新日/Last updated on 2026/02/06
授業の概要
/Course outline
オートマトン言語理論は計算の理論の最も基本的な理論である。ここで中心となるのは、言語といわれる無限集合(主に可算無限である) を記述する方法を知ることである。
本講義では、主要な2つの方法、すなわち、認識/受理システムであるオートマトンと、生成システムである文法についてについて学ぶ。さらに、文法とオートマトンを通じて形式言語の関係、言語の階層性、言語の多様な記述方法について学ぶ。
これらのものは、現実に直面する問題を定式化し、それが容易に解けるものかどうかを判断したりするのに有益なツールとなる。
授業の目的と到達目標
/Objectives and attainment
goals
[コンピテンシーコード]
C-AL-007

本講義は以下のことを理解させることを目指している。
1. (可算)無限集合(=言語)を正確に記述することの必要性
2. 言語の記述法、すなわち、言語の認識装置としてのオートマトン、言語の生成装置と   しての文法
3. 言語に対するオートマトン、文法の設計法
4. オートマトン、文法に対する制約とそれの言語の記述能力に対する影響、言語のクラスの階層性
5. オートマトンと文法との関係
授業スケジュール
/Class schedule
各回の授業は講義と演習を組み合わせて行われる。森と鈴木は、講義の合間に演習を実施する。ハマダは初めの2限分を講義形式で実施し、残りの1限分を演習形式で実施する。各回の授業では、数問の演習を行う。

授業スケジュールは各教員により異なるが、どの授業でも以下の内容を取り上げる(順番は各教員により異なる)。

1.  序論
本講義の概要、講義を受ける上での注意事項などを説明する。本講義の序論として、言語とは何かを説明し、それを記述する装置としてのオートマトン、文法の概要について説明する。

2.  オートマトン
オートマトンとそれによって受理される言語について学ぶ。具体的には、有限オートマトンとプッシュダウンオートマトンについて詳しく学ぶ。有限オートマトンはDFA,NFA,λ-NFA(ε-NFAとも言う)の3種類に分類されるが、それらの間の関係について学ぶ。また、DFAの最小化についても学ぶ。

3.  文法
文法とそれによって生成される言語について学ぶ。具体的には、正規文法と正規言語、文脈自由文法と文脈自由言語について詳しく学ぶ。また、正規言語の表現方法である正規表現、および文脈自由文法の標準形についても学ぶ。

4.   オートマトンと文法との関係
言語を記述する装置としてのオートマトンと文法の間に成り立つ関係について学ぶ。
具体的には、これまでに定義された有限オートマトンと正規文法、プッシュダウンオートマトンと文脈自由文法がそれぞれ、言語記述能力という観点から見たとき、対応していることを説明する。

5.  言語のクラスの階層性
各言語クラスについて、それぞれのクラスに属する言語が持つ性質について調べ、一方のクラスには属さない言語が存在することを示す。
具体的には、以下のことを説明する。
正規言語の性質と正規言語ではない言語の存在, 文脈自由言語の性質と文脈自由言語ではない言語の存在

6.  計算可能性と計算の複雑性
形式的に定義可能であっても計算可能でない問題が存在することを簡単に説明し、そのような例として停止問題について触れる。また、計算の複雑性に関するいくつかの話題として、計算の複雑性のクラスであるPとNP、P-NP問題、NP完全クラスとNP完全問題について紹介する。

教員ごとの授業スケジュールは以下の通り。

森和好
1,2
数学的準備.形式言語,語の演算,言語の演算.
3,4,5
有限オートマトン(FA) (決定的有限オートマトン(DFA),非決定的有限オートマトン(NFA),空動作を含む有限オートマトン(ε-NFA)),正規言語(RL),DFA,NFA,ε-NFAの間の関係,正規言語でない言語の存在(RLの反復補題),DFAの最小化.
6,7
プッシュダウンオートマトン(決定性プッシュダウンオートマトン(DPDA),非決定性プッシュダウンオートマトン(NPDA)),文脈自由言語(CFL),文脈自由言語でない言語の存在(CFLの反復補題).
8.
中間試験
9,10.
形式文法.正規文法(RG),線形文法(LG),正規表現(RE),RL,FA,RG,RE,LGの間の関係.
11,12,13.
文脈自由言語(CFG),導出木,CFL,NPDA,CFGの間の関係,チョムスキー標準形,グライバッハ標準形.
14.
その他の計算モデルおよび文法と言語、言語のクラス間の階層、計算可能性と計算の複雑性

モハメド・ハマダ
1. 数学的準備 I: 集合、関係、関数.
2. 数学的準備 II: グラフ、木、証明技法.
3. 有限オートマトン: 決定性有限オートマトン(DFA)
4. 正規表現、非決定性有限オートマトン(NFA)、NFAからDFAへの変換
5. 空動作を含む有限オートマトン(λ-NFA)、λ-NFAからNFAへの変換
6. 決定性有限オートマトンから正規表現への変換
7. DFAの最小化
8. 中間試験
9. 文法: 正規文法(RG)と文脈自由文法(CFG)
10. 文脈自由文法による構文解析、文法の曖昧性
11. 標準形: チョムスキー標準形(CNF)、CFGからCNFへの変換、グライバッハ標準形(GNF)
12. 正規言語、正規言語でない言語の存在と反復補題
13. 文脈自由言語とプッシュダウンオートマトン(PDA)
14. チューリング機械と計算可能性の理論の概要

鈴木大郎
1. オートマトン、文法、言語理論の概要、数学的準備
2-4. 有限オートマトン: 決定的有限オートマトン(dfa)、非決定的有限オートマトン(nfa)、空動作を含む有限オートマトン(λ-nfa)
5. dfa, nfa, λ-nfaの間の関係
6. 有限オートマトンの最小化
7. プッシュダウンオートマトン(PDA)
8. 文法の概要
9. 文法の分類、中間試験
10. 正規文法(rg)と正規言語(rl)、文脈自由文法(cfg)と文脈自由言語(cfl)、文脈自由文法の標準形(チョムスキー標準形(CNF)、グライバッハ標準形(GNF))
11. 文脈自由文法から標準形への変換、文法とオートマトンとの対応関係
12. 文法とオートマトンとの対応関係(続き)、 正規言語の様々な表現 (右線形文法、左線形文法、正規表現)
13. 正規言語の様々な表現(続き)、言語の階層性(正規言語でない言語の存在、文脈自由言語でない言語の存在、反復補題)
14. 言語の階層性(続き)、計算可能性と計算の複雑性

各回の授業とその内容との対応は、授業の進み具合によって変更になることがある。

各回の授業に臨むにあたり、授業スケジュールに合わせて参考文献などを使って予習をしておくこと。また、各回の授業の後に、授業で学んだハンドアウトの内容と演習問題の復習を次の授業までに完了すること。毎回の予習・復習の目安は2~4時間である。
教科書
/Textbook(s)
教科書は使用せず、各教員がハンドアウトを配布する。
成績評価の方法・基準
/Grading method/criteria
期末試験は40%。それ以外の評価方法と評価基準は教員によって異なる。

森和好
中間試験 30%  演習 30%

モハメド・ハマダ
クラス活動 14%  中間試験 20%  演習 26%

鈴木大郎
中間試験 30% 演習 30%
履修上の留意点
/Note for course registration
履修するに当たって、プログラミング、アルゴリズム、計算機のハードウエア、(抽象レベルでの)計算機の動作についての基本的な知識があることを期待する。
4年生を対象に開講されるFU10 言語処理系論(特に、コンパイラの前半の処理である字句解析、構文解析の学習)においては、オートマトンと言語理論の知識がないと学習に支障を来すので、言語処理系論を受講予定の学生は本科目の受講を強く薦める。
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
参考図書として次のものを挙げておく。

* J. Hopcroft, J. Ullman: Introduction to Automata Theory,
Languages and Computation, Addison-Wesley, 1979.
* J. L. Hein: Theory of Computation, An Introduction,
Jones and Bartlett, 1996.
* M. Sipser: Introduction to the Theory of Computation,
PWS Publishing Co., 1996.
* N. Pippenger: Theories of Computability,
Cambridge Univ. Press, 1997.
* R. Greenlaw, H. J. Hoover: Fundamentals of the Theory of
Computation, Morgan Kaufmann Pubs.Inc., 1998
* A. Meduna: Automata and Languages, Theory and Applications,
Springer, 1999.
* J. Hopcroft, R. Motwani, J. Ullman: Introduction to Automata Theory,
Languages, and Computation(3rd ed.), Addison-Wesley, 2006.
* P. Linz: An Introduction to Formal Languages and
Automata(5 ed.), Jones and Bartlett, 2012.
* 本多波雄:オートマトン言語理論、コロナ社(1972)
* 福村晃夫、稲垣康善:オートマトン形式言語と計算論、 岩波書店(1982)
* J.ホップクロフト、J.ウルマン(野崎他訳):オートマトン 言語理論計算論I、II、 サイエンス社(1984、1986)
* V.J.レイワードスミス(吉田他訳):言語理論入門、共立出版(1986)
* 有川節夫、宮野悟:オートマトンと計算可能性、培風館(1986)
* A.サローマ(野崎他訳):計算論とオートマトン理論、サイエンス社(1988)
* 嵩忠雄、都倉信樹、谷口健一:形式言語理論、
電子情報通信学会(1988)
* 米田政明:計算機科学の基礎、森北出版(1991)
* 富田悦次、横森貴:オートマトン言語理論、
森北出版(1992)
* 足立暁生:オートマトンと言語理論、森北出版(1992)
* 米田政明、広瀬貞樹、大里延康、大川知:オートマトン言語理論の基礎、近代科学社(2003)
* 丸岡章:計算理論とオートマトン言語理論、
サイエンス社(2005)
* 大川知、広瀬貞樹、山本博章:オートマトン言語理論入門、共立出版(2012)
* 川添愛、白と黒のとびら: オートマトンと形式言語をめぐる冒険、東京大学出版会(2013)

実務経験有り(鈴木): 三菱電機東部コンピュータシステム(株)で、1987年から1990年までProlog推論マシン上のC、LISP言語処理系の開発に従事した。この経験をもとに、言語理論の基礎と言語処理系との関連について教授する。
実務経験有り(森):  神鋼電機(株)で、1988年に計算機代数システムREDUCEの実装に従事した。この経験をもとに、計算の理論的および機械的側面について教授する。


コンピテンシーコード表を開く 科目一覧へ戻る

開講学期
/Semester
2026年度/Academic Year  2学期 /Second Quarter
対象学年
/Course for;
3年
単位数
/Credits
3.0
責任者
/Coordinator
浅井 信吉
担当教員名
/Instructor
浅井 信吉, 矢口 勇一, マルコフ コンスタンティン, 鈴木 大郎, 劉 勇, イエン ニール ユーウェン
推奨トラック
/Recommended track
先修科目
/Essential courses
Courses preferred to be learned prior to this course (This course assumes understanding of entire or partial content of the following courses)
MA01 Linear Algebras 1,
FU03 Discrete Systems,
PL02 Programming C,
and
FU01 Algorithms and Data Structures 1
更新日/Last updated on 2026/02/03
授業の概要
/Course outline
The study of algorithms is at the very heart of computer science. This course is intended to teach the some computer algorithms and techniques for their design and analysis which are not covered in Algorithms and Data Structures 1. After the course the students will have a solid background for this type of activity, as well as for representing algorithms in the format of computer programs.
授業の目的と到達目標
/Objectives and attainment
goals
[Corresponding Learning Outcomes]
(A)Graduates are aware of their professional and ethical responsibilities as an engineer, and are able to analyze societal requirements, and set, solve, and evaluate technical problems using information science technologies in society.
(C)Graduates are able to apply their professional knowledge of mathematics, natural science, and information technology, as well as the scientific thinking skills such as logical thinking and objective judgment developed through the acquisition of said knowledge, towards problem solving.

This course will cover (but not limited to) the following contents: algorithms and their complexity, graph algorithms, heaps, B-trees, matrix multiplication, algebraic path problem, special mathematical algorithms, divide-and-conquer, dynamic programming, recursion, greedy, and algorithm design techniques.
授業スケジュール
/Class schedule
Lecture 01 - Algorithms and their Complexity;
Lecture 02 - Priority Queue and Heap;
Lecture 03 - Graphs and Representations;
Lecture 04 - Weighted Graphs;
Lecture 05 - Shortest Path Problem;
Lecture 06 - Transitive Closure;
            07 - Midterm Exam.
Lecture 08 - Algorithm Design Techniques: Greedy Algorithms;
Lecture 09 - Algorithm Design Techniques: Divide-and-Conquer;
Lecture 10 - Algorithm Design Techniques: Dynamic Programming;
Lecture 11 - Algorithm Design Techniques: Backtracking;
Lecture 12 - Random Number Generators;
Lecture 13 - Randomized Algorithms;
Lecture 14 - Models of Computations.

[Preparation/Review] Before each class, prepare by studying the
lecture materials and the relevant textbook pages for the content
indicated in the course plan. Also, complete any unfinished exercises
(within the day of the class, or) until the next class. The typical preparation/review time per session is
3-5 hours.
教科書
/Textbook(s)
T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, Introduction to Algorithms 3rd Ed. (MIT Press, ISBN-10: 0262033844, ISBN-13: 978-0262033848, soft cover: ISBN-10: 0262533057, ISBN-13: 978-0262533058)
or its translation:
T. H. Carmen, C. E. Leiserson, R. L. Rivest, C. Stein, 浅野 哲夫 (訳),‎ 岩野 和生 (訳),‎ 梅尾 博司 (訳),‎ 山下 雅史 (訳),‎ 和田 幸一 (訳)アルゴリズムイントロダクション 第3版(世界標準MIT教科書)近代科学社,  第1巻: 基礎・ソート・データ構造・数学(ISBN-10: 4764904063, ISBN-13: 978-4764904064), 第2巻: 高度な設計と解析手法・高度なデータ構造・グラフアルゴリズム(ISBN-10: 4764904071, ISBN-13: 978-4764904071), または総合版 (ISBN-10: 476490408X, ISBN-13: 978-4764904088)
成績評価の方法・基準
/Grading method/criteria
Lab. Exercises: 40%;
Mid-Term Exam: 30%;
Final Exam: 30%;
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
1. Alfred V. Aho, John E. Hopcroft, Jeffrey D. Ullman. The Design and Analysis of Computer Algorithms (Addison Wesley Professional, 1974, ISBN:0-201-00029-6);
2. Alfred V. Aho, John E. Hopcroft, Jeffrey D. Ullman(著), 野崎昭弘, 野下浩平(訳)『アルゴリズムの設計と解析I』 (サイエンス社, 1977, ISBN:4-7819-0279-0);
3. Alfred V. Aho, John E. Hopcroft, Jeffrey D. Ullman(著), 野崎昭弘, 野下浩平(訳)『アルゴリズムの設計と解析II』 (サイエンス社, 1977, ISBN:4-7819-0280-4);
4. Robert Sedgewick(著), 野下浩平, 星守, 佐藤創, 田口東(訳)『アルゴリズムC 第1巻 基礎・整列』 (近代科学社, ISBN:4-7649-0255-9);
5. Robert Sedgewick(著), 野下浩平, 星守, 佐藤創, 田口東(訳)『アルゴリズムC 第2巻 探索・文字列・計算幾何』 (近代科学社, ISBN:4-7649-0256-7);
6. Robert Sedgewick(著), 野下浩平, 星守, 佐藤創, 田口東(訳)『アルゴリズムC 第3巻 グラフ・数理・トピックス』 (近代科学社, ISBN:4-7649-0257-5);

Reference (coursewebsite, literature, etc.)
Course Website: http://hare.u-aizu.ac.jp/classaa/2020  (N. Asai class)  

(Moodle):http://hi-srv2.u-aizu.ac.jp/ (K. Markov class)


Prof. Asai has practical experience at Wave Front Co. Ltd for numerical simulations, modelings and high performance computings from 1997 to 2000. After joined to U. of Aizu, he has continued with companies on the mentioned topics. These experience is deeply related to this class topics of cost of computation, data structure, and algorithms.

Prof. Suzuki was engaged in the development of C and Lisp language
processing systems implemented on inference machines based on Prolog,
developed in the Fifth Generation Computer Systems national project
from 1987 to 1990 at Mitsubishi Electric Eastern Computer System Co.
Ltd. After joined to U. of Aizu, he has been engaged in the preparation
for the PC Koshien Programming  Division, a programming contest for
high-school students, since 2012.

Prof. Markov has a practical experience at the Advanced Telecommunications Research (ATR) Institute where he worked from 1999 to 2009. This experience includes complex algorithms for search, dynamic programming and optimization which are directly related to the topics of this class.

Class:Lecture,Exercises


コンピテンシーコード表を開く 科目一覧へ戻る

開講学期
/Semester
2026年度/Academic Year  1学期 /First Quarter
対象学年
/Course for;
4年
単位数
/Credits
3.0
責任者
/Coordinator
ハマダ モハメド
担当教員名
/Instructor
ハマダ モハメド
推奨トラック
/Recommended track
先修科目
/Essential courses
事前に学んでおいてほしい科目一覧(下記科目内容の一部ないし全部を既知として授業を進めます)
FU08 Automata and Languages
更新日/Last updated on 2026/02/03
授業の概要
/Course outline
言語の処理は、コンピュータ科学において基本的かつ必須の
科目であり、1950年代初めから精力的に研究され、今日でも重要な研究分野
である。以下のような理由から、この科目は学部のカリキュラムにおいて重要な 位置を占めている。

--言語をより良く理解し正当に評価する能力を養う。
-- プログラムを開発するときに、プログラミング言語処理に用いられる
   技法を活用することができる。
-- コンピュータ科学の理論的な課題を学ぶ必要性に対する動機付けになる。
授業の目的と到達目標
/Objectives and attainment
goals
[対応する学習・教育到達目標]
(A) 技術者としての専門的・倫理的責任を自覚し、情報科学技術を駆使して社会における要求を分析し、技術的課題を設定・解決・評価することができる
(C) 数学・自然科学・情報技術分野の科目の専門的知識と、それらの習得を通して身につけた論理的な思考力や客観的判断力などの科学的思考力を、問題解決に応用できる

コンパイラ、トランスレータなどのプログラミング言語の処理系の役割、
コンパイラの重要性、処理の方法などを学ぶ。さらに、理論と実際との関係
(すなわち、オートマトンや文法とプログラミング言語の処理系との関係)を
理解する。
授業スケジュール
/Class schedule
本科目は、14回の講義と期末試験からなり、講義では以下の内容を扱う(特に、コンパイラの前半部を重点的に講義する)。

1. Introduction to compiler and interpreter
2. Anatomy of the compiler and compiler structure
3. Lexical Analysis, regular expression, finite automata and LEX tools
4. Syntax analysis and introduction to parsing
5. Top-down parsing techniques: predictive parser
6. Bottom-up parsing techniques: shifet-reduce parser
7. Automatic compiler generator tools: LEX and YACC
8. Midterm exam
9. Semantics analysis: Abstract syntax tree and scope
10. Construction of symbol table
11. Type checker and type system
12. Intermediate representations and intermediate code generation
13. Abstract machine and code generation
14. Final review
教科書
/Textbook(s)
Will be given in lectures
成績評価の方法・基準
/Grading method/criteria
1. Class activities: 14%
2. Exercise: 26%
3. Midterm exam: 20%
4. Final exam: 40%
履修上の留意点
/Note for course registration
Automata theory
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
Will be given in lecture


コンピテンシーコード表を開く 科目一覧へ戻る

開講学期
/Semester
2026年度/Academic Year  4学期 /Fourth Quarter
対象学年
/Course for;
3年
単位数
/Credits
3.0
責任者
/Coordinator
西舘 陽平
担当教員名
/Instructor
西舘 陽平, 北里 宏平, 劉 勇
推奨トラック
/Recommended track
先修科目
/Essential courses
事前に学んでおいてほしい科目一覧
(下記科目内容の一部な いし全部を既知として授業を進めます)
PL02 プログラミングC
PL03 プログラミングJAVA I
FU01 アルゴリズムとデータ構造 I
MA01 線形代数 I
MA02 線形代数 II
MA03 微積分 I
MA04 微積分 II
更新日/Last updated on 2026/02/06
授業の概要
/Course outline
数値計算手法の基礎について学ぶ科目。
コンピュータサイエンスにおいて幅広く使われる、数値計算手法やアイディアについて応用例を交えながら学ぶ。
授業の目的と到達目標
/Objectives and attainment
goals
この科目を修めた受講生は主要な数値計算手法を理解し、それを利用したプログラムを開発し、実用的な問題を解くことができるようになる。

[対応する学習・教育到達目標]
(A)
エンジニアとしての専門的・倫理的責任を自覚しており、社会の要請を分析したうえで、社会における情報科学技術を用いて技術的課題を設定し、解決し、評価することができる。
(C)
数学・自然科学・情報技術に関する専門知識、ならびにそれらの知識の習得を通じて培われる論理的思考力や客観的判断力等の科学的思考力を、課題解決に適用することができる。

[コンピテンシーコード]
C-AL-002-1, C-AR-008, C-AL-005-1, C-AL-008

1. 数値計算における主要な数値解析手法の考え方と適用範囲を理解し、実問題に対して適切な手法を選択できる。
2. 浮動小数点演算に起因する誤差(丸め誤差、桁落ち、情報落ち、誤差伝播など)の原因を説明し、式変形やアルゴリズム選択等により誤差を低減する回避策を提案できる。
3. 非線形方程式の根を求める代表的手法(2分法、Secant法、ニュートン法)を実装し、収束性・計算効率・精度の観点から比較評価できる。
4. 連立一次方程式を直接法(ガウス消去法、LU分解等)により解くプログラムを作成し、条件数や丸め誤差による誤差増幅(悪条件性)を踏まえて解の信頼性を評価できる。
5. 固有値問題(例:ヤコビ法)等の線形代数的手法を実装し、結果の妥当性を検証(他手法・理論値との比較)できる。
6. 補間(ラグランジュ補間、ニュートン補間、スプライン補間)および最小二乗法による曲線あてはめを実装し、近似精度やモデルの妥当性を評価できる。
7. 数値微分・数値積分(台形公式、シンプソン公式、ガウス求積等)を実装し、刻み幅や手法の違いが精度・計算量に与える影響を比較できる。
8. 常微分方程式の数値解法(オイラー法、予測子修正法、ルンゲ・クッタ法等)を実装し、安定性・精度の観点から手法を比較できる。
9. (扱う範囲に応じて)偏微分方程式の差分法および反復法(Liebman法、SOR法等)や疎行列に対する解法の考え方を理解し、計算手順を実装・検証できる。
10. 乱数生成とモンテカルロ法を用いた数値計算を実装し、試行回数や乱数の性質が推定精度に与える影響を評価できる。

授業スケジュール
/Class schedule
1:イントロダクション、数値誤差
講義:
        -授業の説明
        -数値解析で扱う問題
        -浮動小数点型の表現
        -機械精度、最大数、最小数
演習:
        -プログラムで機械精度、最大数を求める方法を考える
        -機械精度、最大数を求めるプログラムを作成する
予習:
        -整数型のコンピュータでの2進数による表現について復習しておく(1時間)
        -既習のプログラミング言語(Java等)の復習しておく(1時間)
復習:
        - IEEE 754規格の倍精度浮動小数点型の場合について、最大数や最小数の理論値を手計算で求める (1時間)
        -演習課題以外のコンピュータパラメータ(最小数など)の計測を行う (2時間)
        -倍精度以外の浮動小数点型についても計測を行う (1時間)

2:浮動小数点演算誤差
講義:
        -桁落ち
        -誤差の伝播
        -関数値の評価
演習:
        -2次方程式の解の公式をプログラムで実装する
        - 浮動小数点型の計算による誤差を実体験する
        -桁落ちを避けるような式変形を行い、精度を評価する
予習:
        -第1回講義の浮動小数点型の表現の復習しておく(1時間)
        -第1回講義の機械精度、最大数最小数の復習しておく(1時間)
復習:
        -講義で扱った、それぞれの誤差の種類について、実例を調べる (2時間)
        -講義で扱った、浮動小数点型の誤差を避ける方法や、そのほかの方法を調べて試す (2時間)

3:関数の根
講義:
        -2分法
        -Secant法
        -ニュートン法
        -非線形連立方程式のためのニュートン法
演習:
       -講義で説明した方法で非線形方程式を解き精度を評価する
予習:
        -微分積分やテイラー展開について復習しておく (1時間)
復習:
        -講義で扱った、非線形方程式を解く各方法について、解が複数あり解の値がわかっている簡単な例題を自分で作成する (2時間)
        -作成した問題を、手計算で数ステップ分動かしてみる (2時間)
        -演習では扱わなかった手法のプログラムを書き、非線形方程式を解き精度を比較する (2時間)

4:線形代数と連立方程式
講義:
        -ベクトルと行列
        -ガウスの消去法
        -LU分解
        -悪条件な連立方程式
演習:
        -連立方程式をガウスの消去法アルゴリズムの手順で解く
        -悪条件な連立方程式で何が起こるか実際に体験する
予習:
        -ベクトルや行列の表現、ベクトルの内積、行列の転置など、行列とベクトルの基本操作 (1時間)
        -線形代数などで扱う連立方程式の解法の復習(2時間)
復習:
        -講義で説明した手順で、LU分解を自分で導出してみる (1時間)
        -簡単な行列を手計算でLU分解し、動作を理解する (1時間)
        -ガウス消去法やLU分解の計算量を見積もる (1時間)

5:逆行列と行列の固有値
講義:
        -行列式
        -逆行列
        -行列の固有値、ヤコビ法による対角化
演習:
        -ガウス消去法で逆行列を求める
        -ヤコビ法で固有値と固有ベクトルを求め、特性方程式を使って求めた結果と比較
予習:
        -線形代数などで扱う行列式や逆行列の求め方を復習しておく (1時間)
        -特性方程式を使った、固有値、固有ベクトルの求め方を復習しておく (1時間)
復習:
        -ヤコビ法の導出を自分でもやってみる (2時間)
        -3次以上で非対角成分が1ペアだけ非ゼロの対称行列を作成する (1時間)
        -自分で作成した3次以上の行列にヤコビ法を使い、正しく固有値固有ベクトルが計算できるか検証する (2時間)

6:補間と曲線あてはめ
講義:
        -ラグランジュ補間
        -ニュートン補間
        -最小2乗法
演習:
        -ニュートン補間を作成し、元データと比較する
        -最小2乗法で与えられたデータ点を1次関数でフィッティングし、元データの分布と比較する
予習:
        -連立方程式の数値解法を復習しておく (2時間)
復習:
        -4次以上のラグランジュ補間の式を作成する (1時間)
        -最小2乗法でフィッティングしたい1次関数ax+bを用意し、乱数r(x) (-1≦r(x)≦1)を使いax + b + r(x)となるようなデータ点群を作成する。そのデータ点群に対して最小2乗法でフィッティングし、元の1次関数をどの程度再現するか確かめる (4時間)



7:スプライン補間
講義:
        -区分3次スプライン
        -B-Spline
演習:
        -中間試験に向けて、これまでの演習問題の提出時間とする
予習:
        -ラグランジュ補間を、データ点4以上の場合について、手計算で作成してみる (1時間)
復習:
        -区分3次スプラインを、データ点4以上の場合について、手計算で作成してみる (2時間)
        -係数行列が3重対角行列になる場合について、計算量がO(N)になる連立方程式の数値解法を導出する (3時間)


8:中間試験
予習·復習:第1〜7回の要点整理(公式・手法・誤差の要点)と、未習得箇所の再演習(5時間)
復習:理解不足箇所の再学習・再演習(2時間)

9:数値差分と数値積分
講義:
         -前進差分と中央差分
         -数値積分、台形公式
         -シンプソン公式
         -ガウス求積
演習:
        -微分形が既知の関数について、前進差分と中央差分を計算し精度を比較する
        -定積分が既知の関数について、台形公式とシンプソン公式を使い計算し精度を比較する
予習:
        -2回目の内容(桁落ちや情報落ち等)を重点的に復習しておく特に浮動小数点型をループカウンタに使い for ( float i=0.0; i<=1.0; i+=0.1) のようなことをした場合の挙動について考える (2時間)
復習:
        -シンプソンの1/3公式と3/8公式を組み合わせた場合について検討する (2時間)
        -ガウス求積法のプログラムも作成し、結果を他の数値積分公式の結果と比較する (2時間)

10:常微分方程式
講義:
         -オイラー法
         -予測子修正法
         -ルンゲ・クッタ法
         -連立1階常微分方程式
演習:
         -解が既知の微分方程式に対して、オイラー法とルンゲ・クッタ法を適用し、精度を比較する
予習:
        -2回目の内容(桁落ちや情報落ち等)を重点的に復習しておく (1時間)
        -9回目の内容(前進差分と中央差分)を復習しておく (2時間)
復習:
        -各手法の導出方法を復習する (2時間)
        -力学のニュートンの第二法則など、簡単な常微分方程式を各手法で解く(2時間)

11:偏微分方程式
講義:
         -差分法
         -ラプラス方程式
         -ポアソン方程式
         -微分型境界条件
         -Liebman法, SOR法
演習:
         -ポアソン方程式をLiebman法とSOR法で解き、精度を比較する
予習:
        -4回目の内容(連立方程式の数値解法)を復習しておく (1時間)
        -9回目の内容(前進差分と中央差分)を復習しておく (1時間)
復習:
        -各手法の導出方法を復習する (2時間)
        -右辺が定数でない場合など、簡単な偏微分方程式をLiebman法とSOR法で解く (2時間)
        -格子幅hを変化させて解いて、精度を評価する (1時間)

12:疎行列のための方法
講義:
        -疎行列の様々な表現形式
        -直接解法
        -反復法
演習:
        -疎行列で表される連立方程式の係数行列を、講義で学んだ行列の表現に直す
        -疎行列の表現に直した係数行列を使い、LDU分解を使って連立方程式を解く
予習:
        -4回目の内容(連立方程式の数値解法)を復習しておく (1時間)
        -11回目の内容(差分法とその導出過程)を復習しておく (1時間)
復習:
        -解が分かっているような連立方程式のうち、係数行列が疎行列になる例を作成する (1時間)
        -講義で説明した疎行列の表現形式に直す (1時間)
        -演習で書いたプログラムで連立方程式を解き、結果が正しいか確かめる (1時間)
        -疎行列でない場合の数値解法と、疎行列の場合の数値解法で、計算量を見積もる (1時間)

13:乱数生成とモンテカルロ法
講義:
         -線形合同法
         -モンテカルロ法による高次元積分
         -モンテカルロ法の精度次数
演習:
        -線形合同法で生成される乱数を用いて、1次元から3次元までの定積分をモンテカルロ法で計算し、精度を評価する
予習:
        -9回目の内容(数値積分の各手法)を復習しておく (2時間)
復習:
        -線形合同法以外の乱数の生成法について調べる(XOR shift, Mersenne Twisterなど) (2時間)
        -線形合同法以外の乱数の生成法を使って、モンテカルロ法で数値積分した結果を評価する (2時間)

14:復習
講義:
         -1回目から13回目までの内容のおさらい
演習:
        -これまでの演習のうち、終わっていないものの提出、内容についての質問
予習:
         -1回目から13回目までの資料を読み返す (3時間)
復習:
         -1回目から13回目までの資料を読み返す (3時間)

教科書
/Textbook(s)
講義資料
成績評価の方法・基準
/Grading method/criteria
実装・検証に関わる能力を評価する(演習課題):
演習課題の合計を100点換算した値をEとする

概念理解・手法選択・計算手法の理解度を評価する(試験):
中間試験の点数を100点換算した値をMとする
期末試験の点数を100点換算した値をFとする

最終的な評価:
(0.55×(M+F))×Eの平方根を整数に切り上げた値とする
例:E=80, M=50, F=50 のとき、最終評価=⌈√(0.55×(50+50)×80)⌉=⌈66.33…⌉=67
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
数値で学ぶ計算と解析,金谷健一,共立出版.
Cによる理工系解析の数値計算 ―基礎からの展開―  横山 良平, 近代科学社


コンピテンシーコード表を開く 科目一覧へ戻る

開講学期
/Semester
2026年度/Academic Year  1学期 /First Quarter
対象学年
/Course for;
3年
単位数
/Credits
3.0
責任者
/Coordinator
吉岡 廉太郎
担当教員名
/Instructor
吉岡 廉太郎, 白 寅天, 裴 岩, ヴィジェガス オロズコ ジュリアン アルベルト, イドゥニン パシャ ビン イブラヒム, サクセナ ディーピカー, レ ドアン ホアン, 星野 隆之
推奨トラック
/Recommended track
先修科目
/Essential courses
事前に学んでおいてほしい科目一覧(下記科目内容の一部ないし全部を既知として授業を進めます)
PL03 プログラミングJAVA I
更新日/Last updated on 2026/02/03
授業の概要
/Course outline
 ソフトウェア工学は、ソフトウェア開発に関係する技術や手法に関する学問です。それは、ソフトウェアをどのように作ると良いのか、どのように管理すれば良いのかなど、理論的なものから実践的なものまで実に多くの知識を含んでいます。ソフトウェアが人々の生活をあらゆる面で支えるようになった今日、ソフトウェア工学の重要性は増す一方です。また、コンピュータに携わる技術者として、ソフトウェアに関する基礎知識としてその基本は知っておく必要があります。
 この授業では、まず、ソフトウェアを作るのに必要な(一般的な)工程を説明し、各工程が完成するソフトウェアに及ぼす影響について考えます。そして、各工程での課題について考え、関連する技術・手法を紹介します。技術や手法の紹介では、どういった課題があるのかを知り、代表的な解決策について理解してもらうことを目的とします。新しいものも古いものも、必要に応じて取り混ぜて扱います。また、ソフトウェアの種類(組み込み、ウェブ、並列など)による違いについては大きく扱わず、より一般的に通用する部分を対象とします。
 以上のように、この授業ではソフトウェア工学がどのような知識・技術群であるかを理解してもらうことに主眼を置きます。
 演習では、講義で扱う一般的な知識の理解を助けるため、より具体的な演習課題に取り組みます。各回は、開発工程のいずれかと対応しており、その工程で必要となる作業の基本を順に理解していきます。各課題は実世界の課題を意識して作られているので、理論や基本だけでは理解しづらい要素に気づくこともできます。演習を一通り実施することで、代表的な開発プロセス、開発モデルに沿ったシステム開発を体験することができ、それらの役割を理解できます。
授業の目的と到達目標
/Objectives and attainment
goals
[対応する学習・教育到達目標]
(A) 技術者としての専門的・倫理的責任を自覚し、情報科学技術を駆使して社会における要求を分析し、技術的課題を設定・解決・評価することができる
(C) 数学・自然科学・情報技術分野の科目の専門的知識と、それらの習得を通して身につけた論理的な思考力や客観的判断力などの科学的思考力を、問題解決に応用できる

[コンピテンシーコード]
C-SE-001, C-SE-002

1. ソフトウェア工学がどのような知識・技術群であるかの概略を説明できるようになる。
2. ソフトウェア開発に係る各工程(要件定義からテストまで)の特徴・課題を把握できるようになる。
3. 実際の課題について、代表的な開発プロセス、開発モデルに沿ったシステム開発が行えるようになる。
授業スケジュール
/Class schedule
各回の授業は、はじめの2 限分を講義形式で実施し、残りの1 限分を演習形式で実施する。 また、授業の節目で、企業講師による実践的なフィードバックを行う。
第1回
講義:ソフトウェア工学の役割と対象範囲
   ソフトウェア工学の役割を理解し、要求定義工程の必要性について理解する。
演習:演習オリエンテーション、要件定義工程演習
   顧客の要求を正確に把握し、明確な要求として整理し、システム化する範囲をユースケース図として整理する。

第2回
講義:要求定義1
   要件定義工程の役割と目標を理解する。また、開発モデルとプロセスについて理解する。
演習:要件定義工程演習
   要求の理解を深めるため、抽出したユースケースごとにユースケース記述を作成する。

第3回
講義:要求定義2
   要件の抽出方法を理解する。また、前回に引き続き開発モデルとプロセスについて説明する。
演習:要件定義工程演習 セルフチェック
   各学生が自身の要件定義工程の成果物を、提供されたチェックシートを用いて点検・見直しを行い、演習のポイントを理解する。また、企業講師から実践的なフィードバックを行う。

第4回
講義:分析1
   分析工程の役割と目標を理解し、その中で重要となる抽象化について学ぶ。
演習:分析工程演習
   要件定義工程の成果物から、要求仕様を論理的に分析し、実現手段を検討する。
第5回
講義:分析2
   要件から要求仕様を導出するための要点と一般的手法について学ぶ。
演習:分析工程演習
   要件定義工程の成果物から、要求仕様を論理的に分析し、実現手段を検討する。
第6回
講義:アーキテクチャー設計2
   具体例を使い、要件から要求仕様を作成するステップを解説する。
演習:分析工程演習
   要件定義工程の成果物から、要求仕様を論理的に分析し、実現手段を検討する。
第7回
講義:アーキテクチャー設計3
   設計工程の役割、目標、基本的な作業について学ぶ。
演習:分析工程演習成果フィードバック
   各受講者が作成した分析工程の成果物に関し、教員側が例解等を提示し、演習のポイント等をフィードバックする。
第8回
講義:モジュール設計1
   設計を行う際の土台となる構造化モデルとアーキテクチャーについて理解する。
演習:詳細設計工程演習
   システムに必要な機能やオブジェクトの構造や振る舞いを、実装を考慮して詳細化する。
第9回
講義:モジュール設計2
   オブジェクト指向設計の基本について理解する。
演習:詳細設計工程演習
   システムに必要な機能やオブジェクトの構造や振る舞いを、実装を考慮して詳細化する。
第10回
講義:モジュール設計3
   デザインパターンやコンポーネントの役割など、設計時に留意すべき要素について理解する。
演習:詳細設計工程演習
   システムに必要な機能やオブジェクトの構造や振る舞いを、実装を考慮して詳細化する。
第11回
講義:製造
   製造工程の役割と目標を理解する。
演習:詳細設計工程演習成果フィードバック
   各受講者が作成した詳細設計工程の成果物に関し、教員側が例解等を提示し、演習のポイント等をフィードバックする。
第12回
講義:テスト1
   テスト工程の役割と目標を理解する。
演習:製造工程&テスト工程演習
   ソフトウェアのソースコードを作成する。
第13回
講義:テスト2
   単体・結合・システムテストの役割と目標を理解する。
演習:製造工程&テスト工程演習
   ソフトウェアのソースコードを作成し、テストを行う。
第14回
講義:開発プロセスとプロジェクト管理
   ソフトウェアを確実に開発するための活動を規程し、管理するのに必要な要素について理解する。
演習:製造・テスト工程演習成果フィードバック
   各受講者が作成した製造・テスト工程の成果物に関し、教員側が例解等を提示し、演習のポイント等をフィードバックする。

[予習・復習] 各回の授業に臨むにあたり、授業計画に示した授業内容について講義資料と教科書の該当ページの予習をしておくこと。また、演習時間内に完了しなかった課題を次の授業までに完了すること。毎回の予習・復習の目安は6~7時間です。
教科書
/Textbook(s)
テキスト名:ソフトウェア工学
著者名:岸 知二, 野田 夏子
出版社:近代科学社
ISBN:978-4764905092
その他、講義および演習の工程毎に講義資料を大学のMoodle上のコースページに用意します。
成績評価の方法・基準
/Grading method/criteria
以下の項目で評価します。
 1. クイズ 10%
 2. 期末試験 65%
 3. 演習 25%
演習は要求課題を充足している度合いを評価します。
各演習課題は原則時間内提出とし、最終提出を次の授業日前日23:59とします。
期末試験では演習課題の内容に対する理解を確認する問題も出題します。
出席はクイズへの回答で確認します。
履修上の留意点
/Note for course registration
・演習は個人で行います。
・他の受講者と演習課題に関し議論することは、理解を深める上で有益であるため奨励します。しかし、成果物の丸写し等が発覚した場合には、然るべきペナルティを与えるものとします。
・演習課題に対応するために必要な技術(UML編集に用いるAstahの操作、Javaプログラミング等)について、スキルが足りない場合には自助努力を求めることがある。
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
講義資料の配布、演習課題の提出、クイズ回答、質疑応答は会津大学Moodleページで行います。

実務経験有り:企業でソフトウェア開発に従事している現役のソフトウェア技術者が講師として、各回の演習課題作成および解答に対する講評とアドバイスを行います。
現役のソフトウェア技術者(30年以上の実務経験)とソフトウェア開発に従事した経験豊富な教員(企業での開発経験を含む)が共同で授業を行います。


コンピテンシーコード表を開く 科目一覧へ戻る

開講学期
/Semester
2026年度/Academic Year  2学期 /Second Quarter
対象学年
/Course for;
2年
単位数
/Credits
3.0
責任者
/Coordinator
ピシキン エフゲニー
担当教員名
/Instructor
ピシキン エフゲニー, モズゴボイ マキシム, ヴィジェガス オロズコ ジュリアン アルベルト, イエン ニール ユーウェン, 大藤 建太, 藤本 裕輔
推奨トラック
/Recommended track
先修科目
/Essential courses
This course is based on PL01 “Introduction to Programming” and PL02 “C Programming” courses delivering primary knowledge of programmable computational process and data type concepts.
更新日/Last updated on 2026/01/08
授業の概要
/Course outline
The course is focused on representing the following conceptual units (please see the class schedule for implementation details):
- Foundation Concepts necessary for introducing basic data management principles,
- Data modeling approaches, implementation and practical use.
- Methods and organization of data storage, versioning, distribution and backup.
- Accessing and storing data with using database systems and specialized data management systems.
- Knowledge about genesis of information systems and ability to create entity-relationship data models.
授業の目的と到達目標
/Objectives and attainment
goals
[Corresponding Learning Outcomes]
(A)Graduates are aware of their professional and ethical responsibilities as an engineer, and are able to analyze societal requirements, and set, solve, and evaluate technical problems using information science technologies in society.
(C)Graduates are able to apply their professional knowledge of mathematics, natural science, and information technology, as well as the scientific thinking skills such as logical thinking and objective judgment developed through the acquisition of said knowledge, towards problem solving.

[Competency Codes]
C-IM-001, C-IM-002, C-IM-003, C-IM-005, C-IM-006, C-IM-007

The objective of this course is to introduce data management as a research and technology domain with its distinct agenda, to explain data models and modeling approaches used in present-day information systems. A particular emphasis will be made on real-life daily scenarios of data modeling, storage, and retrieval methods. The course will serve as a basis for subsequent specialized courses such as Database management systems, or Operating systems.

The following competences can be acquired by students:
1) Contrasting information with data and knowledge and describing to a group of professionals the advantages and disadvantages of centralized and decentralized data control.
2) Demonstrating to a group of peers a declarative query language to elicit information from a database.
3) Contrasting, designing and evaluating appropriate data models, including internal structures, for different types of data, and present an application to a group of professionals for the use of modeling concepts and notation of different relational data models such relational and object-oriented models.  
4) Contrasting data lifecycle phases and necessary techniques relevant to a particular phase.
5) Designing and applying persistent data structure, working with existing approaches to data storage, sharing, versioning, and reuse.

After course completion the students will have the following learning outcomes:
- Understanding concepts of information and data.
- Understanding data representation levels and ability to develop conceptual and physical data models.
- Ability to determine which information management methods and/or techniques are appropriate for a given problem or within the given subject domain.
- Understanding a concept of metadata, knowledge about existing metadata standards and ability to use appropriate metadata formats.
- Understanding a concept of persistent data structure, knowledge about existing approaches for managing stored data and ability to deploy and use version control systems.
- Understanding object-oriented models of data and processes ad ability to use modeling tools (UML).
授業スケジュール
/Class schedule
[C1][C2][C3][C4][C5][C6][C7]

[Course Contents and Methods] The course is organized as a combination of lectures and practical exercises, the latter including the hands-on and discussion activities.

Lecture classes:
Class 1. Introducing the course. Foundation Concepts.
From Information to Data. Understanding information, data, knowledge.
Information systems. Information systems as socio-technical systems. Human-centric development as a response to societal problem. Understanding data science and engineering.
Information capture and representation. Abstract data type. Data retrieval. Clustering and classification. Basic information storage and retrieval concepts. Understanding acquisition, representation, digitalization, processing and transformation.

Class 2.  Intro to Data Modeling: Entity-Relationship Model.
Understanding data modeling. Why do we create models?
Major concepts. Entity Relationship model (ER model): purpose, limitation, major elements. Mapping natural language.
ER model in use. Creating an ER model. From subject domain to information system vision.Example of ER modeling: course registration system. More examples of ER modeling.

Class 3. Object-Oriented Modeling (part 1).
Data modeling and abstraction, data and information storage: concepts, mechanisms, implementations.
Data modeling foundations. Conceptual models (entity-relationship) revisited. Relational data models. Object-oriented analysis and design. Intro to UML.

Class 4. Unified Models. Part 1.
Object-Oriented Modeling and Unified Models.
Modeling languages and tools (e.g. UML). Semi-structured data models. Introduction to XML.

Class 5. Unified Models. Part 2.
UML modeling scopes. UML Diagrams.

Class 6. Persistent Structures, Versioning and Continuous Integration.
Persistence and versioning. Persistence types: partial, full, confluent, functional.
Version control systems for software developers. Motivation and three generations of VCSs. Typical operations and workflow. The problem of binary data versioning.

Class 7. Version Control Systems in Practice.
Versioning and team project development via version control systems. Centralized and distributed version control systems. Basic operations and typical workflow.

Class 8. Introduction to Database Systems. Part 1.
Introduction into relational database management system. Designing databases with Major approaches to building databases. Evolution of database systems. Data modeling and database design. Designing databases with entity-relationship models.

Class 9. Introduction to Database Systems. Part 2.
Query languages. Storage and indexing. Query processing. Transaction processing.
Structured query language. Types of queries. Adding, changing, and retrieving data stored in a database.

Class 10. Spreadsheet Systems. Part 1.
Spreadsheets as a data organization and management instrument.  Basic functions of spreadsheet software. Typical use cases.

Class 11. Spreadsheet Systems. Part 2.
Advanced functions of spreadsheet systems. Charts, add-ins and programming.

Class 12. Specialized Data Management Systems and Workplace Organization.
Diversity of data management scenarios. Task and issue management systems. Mind mapping software. Note-taking tools.
Organizing your reading and references. Software packages and file management systems.

Class 13. Data Redundancy and Backup.
Data Process. Data lifecycle phases. Consider your goals. What data are you collecting? How do you plan to keep this data? What do you need to be able to use it and share it later? Why and how to backup your data? Types of backups: incremental, differential, mirror. Redundant data storage methods. RAID arrays. Reliability of data media (flash memory, HDD, CD/DVD, tapes).

Class 14. Digital Transformation and Digital Humanities.
Human-centric development as a response to societal problem. Cross-disciplinary inks between engineering domains and humanities. Concept of digital humanities.
This class can be also implemented as a guest lecture delivered by the invited professor.

Exercise classes:
Class 1. Entity-relationship modeling,
Class 2. Object-oriented UML based modeling.
Class 3. Software version control systems.
Class 4.Database modeling and Introduction to SQL.
Class 5. Spreadsheet systems, spreadsheet data processing and presentation.
Class 6. Specialized data management systems: mind-mapping, storage management,  and backup.
Class 7 is used for the final quiz activity.

[Pre-class and Post-class Learning] Before each class, the students are encouraged to study the lecture materials and the relevant examples provided (typically 2 hour per week). After-class activities usually include quizzes on lecture materials (preparation/quiz time typically 2 hours per week) and individual exercises (typically requiring 7-9 hours per week).
教科書
/Textbook(s)
Information on textbooks and helpful resources is provided on the course web page in LMS.
成績評価の方法・基準
/Grading method/criteria
In 100-point scale:
• Regular quizzes give up to 30 points;
• Exercises and individual projects – up to 40 points;
• Final quiz – up to 30 points.
Bonus points can be given to the students for active participation in the classwork, for highly creative and high-quality exercise solutions, interesting questions, etc., to cover the deficit of the whole course score up to 20 points in 100-point scale.
We don’t hold any exam in this course.
履修上の留意点
/Note for course registration
We expect that students have basic programming skills, understand the concepts of data types and algorithms. We also expect that the students understand basic algebraic models studied in the courses of discrete mathematics.
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
The course lecturers have extensive working experiences in software design, development and testing.
The course coordinator and lecturer Prof. Evgeny Pyshkin has working experiences in software design, development, QA and tech writing. He worked as a software engineer for St. Petersburg Polytechnic University and participated in software projects with Spectrasize (Switzerland) as a developer, tech writer and project manager. You may find more information on https://u-aizu.ac.jp/~pyshe/.
Course lecturer Prof. Maxim Mozgovoy worked in joint software projects with industry partners as software developer, software QA engineer and project team leader.
Course teacher Prof. Ofuji has a 10-year work experience in a private company and a research institute, involved in a real-world, energy-related statistical data analysis.


このページの内容に関するお問い合わせは学生課 教務係までお願いいたします。

お問い合わせ先メールアドレス:sad-aas@u-aizu.ac.jp