2019年度 シラバス学部

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

2019/12/07  現在

科目一覧へ戻る
開講学期
/Semester
2019年度/Academic Year  4学期 /Fourth Quarter
対象学年
/Course for;
1年
単位数
/Credits
4.0
責任者
/Coordinator
渡部 有隆
担当教員名
/Instructor
渡部 有隆, 裴 岩, 黄 捷, 陳 文西, ウォンミィング チュー, 趙 強福
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites

更新日/Last updated on 2019/08/09
授業の概要
/Course outline
コンピュータは情報を操作するものです。情報の組織化・操作・利用の方法を学習することは、コンピュータを効率的に、そして、効果的に使うために非常に重要なことです。プログラミングや現代のデータ処理において、本質的に必要なものは、問題解決のための、あるいは、主記憶と2次記憶装置にあるデータにアクセスするための、効率的なアルゴリズム(算法)と一連の命令です。この効率というものは、処理するデータの構造に直接結び付いています。他のデータ項目に効果的に結び付けることによって、データ項目は、個々の内容を越えた意味を持つようになります。データ構造は、単に項目だけでなく、互いの関係をも考慮した、データの組織化の方法です。
この授業では、アルゴリズムとデータ構造を幅広く紹介し、プログラミング演習によってそれらの定義と実装の方法を学びます。
授業の目的と到達目標
/Objectives and attainment
goals
学生はデータ構造とアルゴリズムの長所と短所の評価、データ構造の定義と構築、効率的なアルゴリズムの開発ができるようになります。そして、最先端のデータ構造とアルゴリズムを問題の解法やソフトウェア開発に適用することができるようになります。演習では、限られた資源の下で現実的な問題を解くことにより、アルゴリズムの効率の差がハードウェアの差よりもずっと重要なことを体験します。授業・演習で得られた知識、評価手法、実装方法と応用力は、最先端の研究活動や高度なソフトウェア及びハードウェアの開発に役立てることができます。
授業スケジュール
/Class schedule
1 導入
2 計算量、初等的整列
3 データ構造
4 検索、ハッシュ
5 再帰・分割統治法
6 高等的整列
7 木
8 二分木
9 ヒープ
10 動的計画法
11 グラフ
12 グラフアルゴリズム
13 ヒューリスティック探索
14 文字列照合
教科書
/Textbook(s)
教科書
T. コルメン, R. リベスト, C. シュタイン, C. ライザーソン, アルゴリズムイントロダクション 第3版 第1巻: 基礎・ソート・データ構造・数学 (世界標準MIT教科書),近代科学社.

副読本、リファレンス

T. コルメン , R. リベスト, C. シュタイン, C. ライザーソン, アルゴリズムイントロダクション 第3版 第2巻: 高度な設計と解析手法・高度なデータ構造・グラフアルゴリズム (世界標準MIT教科書), 近代科学社.
渡部有隆、「プログラミングコンテスト攻略のためのアルゴリズムとデータ構造」、マイナビ出版

成績評価の方法・基準
/Grading method/criteria
AA:小課題 - 最大100点
PA:演習課題 - 最大120点
CE:コーディング試験 - 最大120点
PE:期末試験 - 最大120点
TH:理論点: sqrt(AA × PE)
PR:実践点: sqrt(PA × CE)
成績 = sqrt(TH × PR))
※sqrt(x) はxの平方根
履修上の留意点
/Note for course registration
プログラミング入門及び プログラミングCを修得していることが望ましい。
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
コースウェブサイト
http://web-int.u-aizu.ac.jp/course/alg1/

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

参考書
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.

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

実務経験あり(渡部):現在、株式会社Giveryとの共同研究において、企業における人材育成、人材評価、研修・教育に活用することができるオンランプログラミングスキルチェックツールを開発している。主要コンテンツの1つとして、アルゴリズムとデータ構造に関する問題及びテストデータを数多く提供している。この経験をもとに、幅広いアルゴリズムとデータ構造の理論と実践を教授する。

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

授業形態:講義,演習



科目一覧へ戻る
開講学期
/Semester
2019年度/Academic Year  3学期 /Third Quarter
対象学年
/Course for;
3年
単位数
/Credits
3.0
責任者
/Coordinator
出村 裕英
担当教員名
/Instructor
出村 裕英, 高橋 成雄, アン トゥアン ファン
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites

更新日/Last updated on 2019/08/09
授業の概要
/Course outline
効率よくかつ正確に情報を伝達することは、近代デジタル社会における重要な技術課題のひとつである。情報理論はこの問題に対して、数学的な定式化に根ざし、理論的解法を提供する。情報理論の考え方は、確率や統計の定理などを活用し情報通信や誤り訂正のための効率のよい符号化の構築を可能とする。情報理論は、画像データ圧縮、暗号論、ネットワークコミュニケーション、情報量評価などの分野で重要な役割を担っており、本科目でそれらの基礎を身につける。
授業の目的と到達目標
/Objectives and attainment
goals
本授業科目の主要な課題は,情報源符号化と通信路符号化の数学的な定式化と,符号化の効率的な構成手法に加えて,情報のあいまいさ及び情報量を測るためのエントロピーの概念の理解にある.確率と統計の基礎および符号の木および量子化テーブルの観点からみたデータ圧縮についても取り扱う。
授業スケジュール
/Class schedule
講義(出村クラス)
#1  ガイダンス、情報理論とは
#2  条件付き確率と大数の法則
#3  瞬時符号
#4  符号空間
#5  情報源符号化定理・ハフマン符号
#6  様々な情報源符号
#7  エントロピー
#8  相互情報量
#9  最尤復号化
#10 ハミング距離
#11 通信路符号化定理
#12 ハミング符号
#13 生成行列
#14 原始多項式

講義(Phamクラス)
#1  本科目の導入
#2  情報理論とは
#3  エラーとエラー検出コード
#4  誤り訂正符号
#5  ハミング符号
#6  確率
#7  エントロピーと推定
#8  情報源符号化理論
#9  データ圧縮
#10 ハフマン符号
#11 相互情報量
#12 通信容量
#13 通信路符号化定理
#14 雑音耐性のある情報伝達

演習(全クラス共通)
毎週1回2コマずつ7回実施。
トピックは、データ圧縮, MATLABのCommunications System Toolboxを用いた誤り検出と訂正などの課題。
教科書
/Textbook(s)
出村クラス講義教科書
例にもとづく情報理論入門
大石進一(1993) 講談社
ISBN 978-4-06-153803-0


Phamクラス講義教科書
Information Theory, Pattern Recognition, and Neural Networks (English, free)
David J. C. MacKay, University of Cambridge
ISBN: 9780521642989
成績評価の方法・基準
/Grading method/criteria
期末試験50%、クイズ(2-14回講義)10%、演習40%
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
実務経験有り:情報理論およびデータ圧縮に関して通信ネットワーク設計などを行なっている。
Communications System Toolbox, MATLAB
https://jp.mathworks.com/help/comm/

授業形態:講義,演習


科目一覧へ戻る
開講学期
/Semester
2019年度/Academic Year  2学期 /Second Quarter
対象学年
/Course for;
2年
単位数
/Credits
3.0
責任者
/Coordinator
森 和好
担当教員名
/Instructor
杉山 雅英, 浅井 和人, 森 和好, イゴール ルバシェフスキー, 浅井 信吉, 渡邊 曜大
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites

更新日/Last updated on 2019/08/09
授業の概要
/Course outline
離散系論は離散数学 (Discrete Math) とも呼ばれている。離散的な事象・対
象に対する数学的なアプローチであり、コンピュータ、プログラム、アルゴリ
ズムなどについての数学的な概念や手法として発展してきた。離散系論は計算
機科学の数学的な基礎であり多くの計算機関連の研究や応用技術において用い
られる。初年度で学んだ線形代数や微積分(解析学)とは異なる計算機科学技術
のための数学である。現代の ICT(Information and Communication
Technology) を支える共通の道具であるとともに共通の基盤、表現するための
共通言語でもある。
授業の目的と到達目標
/Objectives and attainment
goals
概要でも述べたように離散系論は計算機科学技術のための数学であり、現代の
ICT(Information and Communication Technology) を支える共通の道具である
とともに共通の基盤、表現するための共通言語でもある。それらの道具、基盤、
共通言語を理解し使用し表現できるようになることが到達目標である。さらに
理論を理解するだけでなくプログラムで実装することを想定して学ぶことを勧
める。
授業スケジュール
/Class schedule
以下のように2学期に4つの講義クラスと6つの演習クラスに分けて学ぶ。

       Sugiyama   Mori         Lubashevsky     K.Asai
       C1,C2      C3,C4        C5,ITCG         C6
       M5         M6           M7              M8
       Mon,Thu    Tue,Fri      Tue,Fri         Tue,Fri
       1,2,3      5,6,7        7,8,9           7,8,9

   演習クラスと担当教員 (教室)

C1: M.Sugiyama (M5)
C2: N.Asai (M6)
C3: K.Mori (M6)
C4: Y.Watanabe(M9)
C5: I.Lubashevsky(M7)
C6: K.Asai(M8)

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

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

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

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

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

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

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

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

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

   4. 順序、論理、ブール代数 (3-4 回)
     - 順序
     - 束
     - 論理
     - ブール代数
教科書
/Textbook(s)
  Prof. M.Sugiyama's class
    リプシッツ, マグロウヒル「離散数学」, オーム社.
    
  Prof. K.Mori's class
    教科書は指定されません。必要な資料は配布されます。
    
  Prof. I.Lubashevsky's class

  Prof. K.Asai's class
    ハンドアウトのみ
成績評価の方法・基準
/Grading method/criteria
中間試験の実施、学生の成績評価法は担当教員によって異なるので注意をする
こと。不明な場合や質問があれば担当教員に確認すること。各クラス毎の評価
方法を以下に述べる。

  Prof. M.Sugiyama's class
     定期試験 (70%), [中間試験(30%),期末試験(40%)], 演習 (30%)

  Prof. K.Mori's class
     Midterm exam 30%, Final exam 40%, Exercises 30%

  Prof. I.Lubashevsky's class
     Midterm exam 30%, Final-exam 40%, Home work 30%

  Prof. K.Asai's class
    By Final Exam. and Exercise. (More than 80% of homework
    assignments should be submitted.) Full score of Final Exam. is
    approx. 150 points. The raw score "p" is converted to a scaled score
    "s" by the formula: s=75+(p-75)/3+e (p>75), s=p+e (p≦75) (in
    principle). Here, "e" is Exercise score, which is added up to s=80.
履修上の留意点
/Note for course registration
中間試験の実施、学生の成績評価法は担当教員によって異なるので注意が必要
である。
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
  Prof. M.Sugiyama's class
    http://web-int.u-aizu.ac.jp/~sugiyama/Lecture/DS/2019/welcome.html

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

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

  Prof. I.Lubashevsky's class

  Prof. K.Asai's class
    Directory for Asai's class: ~k-asai/classes/disc/
    Handouts and Exercises for Asai's class:
    http://web-ext.u-aizu.ac.jp/~k-asai/classes/class-texts.html

  実務経験有り:

   - M.Sugiyama
1979-1986 NTT Musashino ECL (NTT Musashino Research Center)
1986-1987 AT&T Bell Lab. visiting researcher
1987-1990 NTT Basic Research Lab.
1990-1993 ATR Interpreting Telephony Research Lab.   
         「数え上げと組み合せ論」が情報探索研究に関連している

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

   - 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.

授業形態:講義,演習


科目一覧へ戻る
開講学期
/Semester
2019年度/Academic Year  3学期 /Third Quarter
対象学年
/Course for;
2年
単位数
/Credits
4.0
責任者
/Coordinator
齋藤 寛
担当教員名
/Instructor
ウォンミィング チュー, 西村 憲, 齋藤 寛, 富岡 洋一, 奥山 祐市, 小平 行秀
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites

更新日/Last updated on 2019/03/29
授業の概要
/Course outline
論理回路設計は,プロセッサといったデジタル集積回路における設計の一過程です.論理設計の目的は,集積回路として実現したい機能を0と1をとる論理変数と論理和,論理積,論理否定といった論理演算を用いて設計することです.設計した回路が正しく動作するよう設計することはもとより,コストや性能といった設計要求を満足する最適な設計を得る必要があります.
授業の目的と到達目標
/Objectives and attainment
goals
講義では,論理回路設計における基礎知識や,設計手法ならびに最適化手法を学びます.演習では,真理値表などによる仕様より自分で論理回路を生成し,回路図作成ソフトウェア上に設計します.また,シミュレータを使ってシミュレーションを行い,設計された回路が正しいかどうかを検証します.

授業の到達目標は以下の通りです.
1. 真理値表から主加法標準形(minterm canonical disjunctive form)を得ることができる
2. カルノーマップを使って,二段論理の簡単化を行うことができる
3. 有限状態機械を用いて,順序回路の設計ができる
授業スケジュール
/Class schedule
1. 導入
2. 数の表現
3. ブール代数
4. カルノーマップを用いた二段論理簡単化
5. 様々な論理関数の表現法
6. 遅延と論理回路の性能
7. 中間試験
8. 組み合わせ回路1
9. 組み合わせ回路2
10. メモリ論理
11. 順序回路の設計
12. 有限状態機械を用いた順序回路の設計
13. まとめ
14. その他

以上は,全クラス共通です.
教科書
/Textbook(s)
指定なし
成績評価の方法・基準
/Grading method/criteria
中間・期末試験 60% レポート 40%
追試験はありません.

以上は,全クラス共通です.
履修上の留意点
/Note for course registration
実務経験あり(奥山):NTT研究所に間勤務し、
半導体集積回路の研究設計,EDAツールの開発に従事してきた。
この経験をもとに、論理回路設計の基礎について教授する。


科目一覧へ戻る
開講学期
/Semester
2019年度/Academic Year  1学期 /First Quarter
対象学年
/Course for;
3年
単位数
/Credits
4.0
責任者
/Coordinator
宮崎 敏明
担当教員名
/Instructor
宮崎 敏明, ウォンミィング チュー, 西村 憲, 中里 直人, ベン アブダラ アブデラゼク, 北道 淳司
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites

更新日/Last updated on 2019/08/09
授業の概要
/Course outline
コンピュータアーキテクチャの基礎、設計手法、および性能評価法ついて学ぶ。 コンピュータはプロセッサ、メモリ、入出力装置等から成り立っているが、論理回路設計論で学んだ演算器や制御回路をどのように組み合わせることでこれらが構成できるかについて解説する。コンピュータを設計する際には、 性能、コスト、柔軟性、プログラム容易性、消費電力等、さまざまな要求を考慮しなければならない。本科目では商用プロセッサの1つであるMIPSを例に挙げ、そのアーキテクチャを解説し、これらの要求に対してどのような配慮がなされているかを見て行く。演習では、CadenceなどのCAD(Computer Aided Design)ツールを使った MIPS プロセッサの実装及び動作検証シミュレーションを行う。また、アセンブラプログラミングについても学習し、プロセッサの基本動作を理解する。
授業の目的と到達目標
/Objectives and attainment
goals
・コンピュータアーキテクチャの主要原理を理解する
・アセンブラプログラミングの基礎を知る
・ハードウエア記述言語を用いたプロセッサ設計の概要を学ぶ
授業スケジュール
/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. ストレージおよびその他入出力: RAIDなど(5章+α)
14. 並列プロセッサ: SIMD/MIMD, ベクトルプロセッサなど(6章)

(演習)
1. 演習概要説明
2. アセンブラ(基本命令のみ)
3. アセンブラ(immediateで乗算)
4. アセンブラ(JALとJRでサブルーチン)
5. RFやALUの理解(シミュレーションで動作を確認)
6. 簡単なCPUの構築および基本命令による動作確認
7. 簡単なCPUの構築および演習3で作成した乗算プログラムによる動作確認
8. 簡単なCPUの構築および演習4で作成したサブルーチン呼び出しプログラムによる動作確認
9. 予備(演習5から7までの復習、遅れ対応)
10. パイプライン(教科書章末問題解答)
11. キャッシュ(教科書章末問題解答)
12. 仮想記憶(教科書章末問題解答)
13. 総合課題1(または、マルチコア、または、これまでの復習。クラスの進捗による)
14. 総合課題2(または、マルチコア、または、これまでの復習。クラスの進捗による)
教科書
/Textbook(s)
・パターソン&ヘネシー,「コンピュータの構成と設計 第5版 (上), (下)」, 日経BP社
・原著 Computer Organization and Design - The Hardware/Software Interface. David. A. Patterson and John L. Hennessy, 5th edition, Morgan Kaufmann Publishers, ISBN 0124077269
成績評価の方法・基準
/Grading method/criteria
定期テスト(50%)、演習リポート(50%)、追試験は実施しない。
履修上の留意点
/Note for course registration
Benクラス:講義は英語で行う。

先修を勧める科目
・コンピュータシステム概論
・論理回路設計論

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

参考図書
"HDLによるVLSI設計―VerilogHDLとVHDLによるCPU設計 第2版" 深山正幸 他著

-----
実務経験あり(宮崎): NTT研究所に22年間勤務し、CPUやFPGA等を用いた通信システムの開発やその設計自動化の研究に従事してきた。その経験をもとに、コンピュータアーキテクチャの基礎について教授する。

授業形態:講義,演習


科目一覧へ戻る
開講学期
/Semester
2019年度/Academic Year  4学期 /Fourth Quarter
対象学年
/Course for;
2年
単位数
/Credits
4.0
責任者
/Coordinator
アレクサンダー ヴァジェニン
担当教員名
/Instructor
アレクサンダー ヴァジェニン, 劉 勇, 大井 仁, コンスタンティン マルコフ, 西舘 陽平, 李 鵬, 松本 和也
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites

更新日/Last updated on 2019/08/09
授業の概要
/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, four parts of the core of operating systems will be mainly learned. They are process management, memory and storage management, file system management, and I/O system management. Also, some abstract concepts such as cooperation of multi-process and deadlock will be discussed. We do not concentrate on any particular operating system or hardware. Instead, we discuss fundamental concepts that are applicable to a variety of systems. We present a large number of examples that pertain specifically to UNIX and to other popular operating systems.
授業の目的と到達目標
/Objectives and attainment
goals
1. To learn the concepts about OS.
2. To get the knowledge about process management, including process concept, inter-process communication, and CPU scheduling.
3. To learn memory management including page management and virtual memory.
4. To learn the design and implementation of file system.
5. To get the knowledge about software and hardware of I/O system.
授業スケジュール
/Class schedule
1. Operating System Concepts and Components
Topics to study:
OS Concepts
Computer-system components
Evolution Steps
OS Components
OS Services

2. PROCESSES
Topics to study:
Process Concept
Process States and Scheduling
Operations on Processes
Cooperating Processes
Threads
Inter-process Communication

3. CPU Scheduling
Topics to study:
Basic Concepts
Scheduling Criteria
Scheduling Algorithms
Algorithm Evaluation
Conclusion

4-5. Process Synchronization and Deadlocks
Topics to study:
Background
Critical Section Problem
Semaphores
Classical Problems
Necessary Conditions of Deadlocks
Resource Allocation Graph
Deadlock Prevention
Deadlock Avoidance
Deadlock Detection
Recovery from a Deadlock

5-9. Memory Management
Topics to study:
Background
Logical versus Physical Address Space
Swapping
Contiguous Allocation
Paging Model of Logical and Physical Memory
Implementation of a Page Table
Multilevel Paging
Inverted Page Table
Segmentation: Basic Methods
Segmentation with Paging
Demand Paging
Performance of Demand Paging
Page Replacement Algorithms
Allocation Frames
Thrashing
Demand Segmentations

10-11. File Management
Topics to study:
File-System Concepts
File Attributes
File Operations and Access Methods
Directory Structure and Implementation
Protection Mechanizm
File-System Organization
Allocation Methods
Free-Space Management
Directory Implementation
Efficiency and Reliability
Mass-Storage Management

12-13. Distributed Systems
Topics to study:
Background
Motivation
Topology
Network Types
Communication Strategies
Design Strategies

14. Mass Storage Structure
Disk structure, attachment, scheduling, management.
Swap space management.
RAID structure and implementation
Operating system and performance issues.

教科書
/Textbook(s)
1. Modern Operating Systems, by Andrew S. Tanenbaum, Prentice-Hall, Inc.
2. Operating System Concepts, 5-8, A. Silberschatz and P. B. Galvin, John Wiley & Sons, Inc.
3. Materials and handouts provided by instructurs
成績評価の方法・基準
/Grading method/criteria
This policy is used by all course instructors.
Final examination, midterm, experimental reports.
Exercises: 40 points
Quiz, Midterm + Exam: 60 points

Reports about results of exercises should be submitted about one week after each exercise.  
履修上の留意点
/Note for course registration
Computer Architecture or Computer Organization, Basic Algorithms and Data Structures, Programming I (C or C++) or Java

履修規程上の先修条件:L4 コンピュータシステム概論
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
The course instructor Alexander Vazhenin has practical working experience. He worked for the Computer Center of Siberian Division of the Russian Academy of Sciences for 15 years where he was involved in R&D of software design and operating systems. Based on his experience, he can teach the basics of Operating Systems.
The course instructor Hitoshi Oi has  more than five years of industrial experiences at
Digital Equipment Corporation, ASTEM RI/Kyoto and HAL Computer
Systems.

1. Course WWW-site will be provided by each instructor.
2. 「オペレーティングシステム」前川 守著 岩波書店 ISBN4000103466

Class:Lecture,exercises


科目一覧へ戻る
開講学期
/Semester
2019年度/Academic Year  4学期 /Fourth Quarter
対象学年
/Course for;
2年
単位数
/Credits
3.0
責任者
/Coordinator
鈴木 大郎
担当教員名
/Instructor
鈴木 大郎, モハメド ハマダ, 森 和好
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites

更新日/Last updated on 2019/08/09
授業の概要
/Course outline
オートマトン言語理論は計算の理論の最も基本的な理論である。ここで中心となるのは、
言語といわれる無限集合(主に可算無限である) を記述する方法を知ることである。
本講義では、主要な2つの方法、すなわち、認識/受理システムであるオートマトンと、
生成システムである文法についてについて学ぶ。さらに、文法とオートマトンを通じて
形式言語の関係、言語の階層性、言語の多様な記述方法について学ぶ。
これらのものは、現実に直面する問題を定式化し、それが容易に解けるものかどうかを
判断したりするのに有益なツールとなる。
授業の目的と到達目標
/Objectives and attainment
goals
オートマトン言語理論は計算の理論の最も基本的な理論である。ここで中心となるのは、
言語といわれる無限集合(主に可算無限である) を記述する方法を知ることである。
本講義では、主要な2つの方法、すなわち、認識/受理システムであるオートマトンと、
生成システムである文法についてについて学ぶ。さらに、文法とオートマトンを通じて
形式言語の関係、言語の階層性、言語の多様な記述方法について学ぶ。
これらのものは、現実に直面する問題を定式化し、それが容易に解けるものかどうかを
判断したりするのに有益なツールとなる。
授業スケジュール
/Class schedule
授業スケジュールは各教員により異なるが、どの授業でも以下の内容を取り上げる(順番は各教員により異なる)。

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. DFAの最小化
7. プッシュダウンオートマトン(PDA)
8. 文法と言語
9. 中間試験
10. 文法の分類(正規文法(RG)、文脈自由文法(CFG))、正規言語(RL)、文脈自由言語(CFL)
11. 文脈自由文法の標準形(チョムスキー標準形(CNF)、グライバッハ標準形(GNF))
12. 文法とオートマトンとの対応関係
13. 言語の階層性(正規言語でない言語の存在、文脈自由言語でない言語の存在)
14. 計算可能性と計算の複雑性

各回の授業とその内容との対応は、授業の進み具合により変更になることがある。
教科書
/Textbook(s)
教科書は使用せず、各教員がハンドアウトを配布する。
成績評価の方法・基準
/Grading method/criteria
期末試験は40%。それ以外の評価方法と評価基準は教員によって異なる。

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

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

鈴木大郎
中間試験 30% 演習 30%
履修上の留意点
/Note for course registration
履修するに当たって、F3離散系論を学んでいることが望ましい。プログラミング、
アルゴリズム、計算機のハードウエア、(抽象レベルでの)計算機の動作についての
基本的な知識があることを期待する。
後期に開講される言語処理系論(特に、コンパイラの前半の処理である字句解析、
構文解析の学習)においては、オートマトン言語理論の知識がないと学習に
支障を来すから、言語処理系論を受講する予定のものは、本科目の受講を強く薦める。
参考(授業ホームページ、図書など)
/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
2019年度/Academic Year  1学期 /First Quarter
対象学年
/Course for;
3年
単位数
/Credits
3.0
責任者
/Coordinator
浅井 信吉
担当教員名
/Instructor
浅井 信吉, 矢口 勇一, コンスタンティン マルコフ, 鈴木 大郎, 劉 勇, イエン ニール ユーウェン
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites

更新日/Last updated on 2019/08/09
授業の概要
/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
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.
教科書
/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%;
履修上の留意点
/Note for course registration
The knowledge and skill of the following classes are required:
Linear Algebras 1, 2,
Discrete Systems,
Programming C,
and
Algorithms and Data Structures 1
参考(授業ホームページ、図書など)
/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/2019  (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
2019年度/Academic Year  1学期 /First Quarter
対象学年
/Course for;
4年
単位数
/Credits
3.0
責任者
/Coordinator
モハメド ハマダ
担当教員名
/Instructor
モハメド ハマダ
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites

更新日/Last updated on 2019/02/05
授業の概要
/Course outline
言語の処理は、コンピュータ科学において基本的かつ必須の
科目であり、1950年代初めから精力的に研究され、今日でも重要な研究分野
である。以下のような理由から、この科目は学部のカリキュラムにおいて重要な 位置を占めている。

--言語をより良く理解し正当に評価する能力を養う。
-- プログラムを開発するときに、プログラミング言語処理に用いられる
   技法を活用することができる。
-- コンピュータ科学の理論的な課題を学ぶ必要性に対する動機付けになる。
授業の目的と到達目標
/Objectives and attainment
goals
コンパイラ、トランスレータなどのプログラミング言語の処理系の役割、
コンパイラの重要性、処理の方法などを学ぶ。さらに、理論と実際との関係
(すなわち、オートマトンや文法とプログラミング言語の処理系との関係)を
理解する。
授業スケジュール
/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
2019年度/Academic Year  4学期 /Fourth Quarter
対象学年
/Course for;
3年
単位数
/Credits
3.0
責任者
/Coordinator
西舘 陽平
担当教員名
/Instructor
西舘 陽平, 北里 宏平, 劉 勇
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites

更新日/Last updated on 2019/02/05
授業の概要
/Course outline
数値計算手法の基礎について学ぶ科目。
コンピュータサイエンスにおいて幅広く使われる、数値計算手法やアイディアについて応用例を交えながら学ぶ。
授業の目的と到達目標
/Objectives and attainment
goals
この科目を修めた受講生は主要な数値計算手法を理解し、それを利用したプログラムを開発し、実用的な問題を解くことができるようになる。
授業スケジュール
/Class schedule
第1週:イントロダクション、数値誤差
        -数値解析で扱う問題について
        -浮動小数点表現
        -コンピュータのパラメータの測定
第2週:浮動小数点演算誤差
        -桁落ち
        -誤差の伝播
        -関数値の評価
第3週:関数の根
        -2分法
        -ニュートン法
        -非線形連立方程式のためのニュートン法
第4週:線形代数と連立方程式
        -ベクトルと行列
        -ガウスの消去法
        -LU分解
第5週:逆行列と行列の固有値
        -行列式
        -逆行列
        -行列の固有値、ヤコビ法による対角化
第6週:補間と曲線あてはめ
        -ラグランジェ補間
        -ニュートン補間
        -最小2乗法
第7週:スプライン補間
        -区分3次スプライン
        -B-Spline
第8週:中間試験
第9週:数値差分と数値積分
         -前進差分と中央差分
         -数値積分、台形公式
         -シンプソン公式
         -ガウス求積
第10週:常微分方程式
         -オイラー法
         -予測子修正法
         -ルンゲ・クッタ法
         -連立1階常微分方程式
第11週:偏微分方程式
         -差分法
         -ラプラス方程式
         -ポアソン方程式
         -微分型境界条件
第12週:疎行列のための方法
        -行列の形式
        -直接解法
        -反復法  
第13週:乱数生成とモンテカルロ法
         -線形合同法
         -モンテカルロ法による積分
第14週:復習
教科書
/Textbook(s)
講義資料.
成績評価の方法・基準
/Grading method/criteria
演習課題 50%
中間試験 20%
期末試験 30%
履修上の留意点
/Note for course registration
Cプログラミング、Javaプログラミング、アルゴリズムとデータ構造、微分積分、線形代数.

履修規程上の先修条件:F1 アルゴリズムとデータ構造
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
数値で学ぶ計算と解析,金谷健一,共立出版.


科目一覧へ戻る
開講学期
/Semester
2019年度/Academic Year  1学期 /First Quarter
対象学年
/Course for;
3年
単位数
/Credits
3.0
責任者
/Coordinator
吉岡 廉太郎
担当教員名
/Instructor
吉岡 廉太郎, アレクサンダー ヴァジェニン, 白 寅天, ヴィタリー クリュエフ, 裴 岩, ジュリアン ヴィジェガス
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites

更新日/Last updated on 2019/08/09
授業の概要
/Course outline
 ソフトウェア工学は、ソフトウェア開発に関係する技術や手法に関する学問です。それは、ソフトウェアをどのように作ると良いのか、どのように管理すれば良いのかなど、理論的なものから実践的なものまで実に多くの知識を含んでいます。ソフトウェアが人々の生活をあらゆる面で支えるようになった今日、ソフトウェア工学の重要性は増す一方です。また、コンピュータに携わる技術者として、ソフトウェアに関する基礎知識としてその基本は知っておく必要があります。
 この授業では、まず、ソフトウェアを作るのに必要な(一般的な)工程を説明し、各工程が完成するソフトウェアに及ぼす影響について考えます。そして、各工程での課題について考え、関連する技術・手法を紹介します。技術や手法の紹介では、どういった課題があるのかを知り、代表的な解決策について理解してもらうことを目的とします。新しいものも古いものも、必要に応じて取り混ぜて扱います。また、ソフトウェアの種類(組み込み、ウェブ、並列など)による違いについては大きく扱わず、より一般的に通用する部分を対象とします。
 以上のように、この授業ではソフトウェア工学がどのような知識・技術群であるかを理解してもらうことに主眼を置きます。
 演習では、講義で扱う一般的な知識の理解を助けるため、より具体的な演習課題に取り組みます。各回は、開発工程のいずれかと対応しており、その工程で必要となる作業の基本を順に理解していきます。各課題は実世界の課題を意識して作られているので、理論や基本だけでは理解しづらい要素に気づくこともできます。演習を一通り実施することで、代表的な開発プロセス、開発モデルに沿ったシステム開発を体験することができ、それらの役割を理解できます。
授業の目的と到達目標
/Objectives and attainment
goals
1. ソフトウェア工学がどのような知識・技術群であるかの概略を説明できるようになる。
2. ソフトウェア開発に係る各工程(要件定義からテストまで)の特徴・課題を把握できるようになる。
3. 実際の課題について、代表的な開発プロセス、開発モデルに沿ったシステム開発が行えるようになる。
授業スケジュール
/Class schedule
第1回
講義:ソフトウェア工学とは
   ソフトウェア工学の役割を理解し、ソフトウェア開発に絡む工程について理解する。
演習:演習オリエンテーション、要件定義工程演習
   演習課題の説明
   顧客の要求を正確に把握し、明確な要求として整理し、システム化する範囲を顧客と合意する。
第2回
講義:開発プロセス&要求定義1
   要件定義工程の役割と目標を理解する。また、開発モデルとプロセスを簡単に説明する。
演習:要件定義工程演習
   顧客の要求を正確に把握し、明確な要求として整理し、システム化する範囲を顧客と合意する。
第3回
講義:要求定義2
   要件の抽出方法を理解する。また、前回に引き続き開発モデルとプロセスについて説明する。
演習:要件定義工程演習成果フィードバック
   各受講者が作成した要件定義工程の成果物に関し、教員側が例解等を提示し、演習のポイント等をフィードバックする。
第4回
講義:要求定義3
   分析工程の役割と目標を理解し、その中で重要となる抽象化について学ぶ。
演習:分析工程演習
   要件定義工程の成果物から、要求仕様を論理的に分析し、実現手段を検討する。
第5回
講義:アーキテクチャー設計1
   要件から要求仕様を導出するための要点と一般的手法について学ぶ。
演習:分析工程演習
   要件定義工程の成果物から、要求仕様を論理的に分析し、実現手段を検討する。
第6回
講義:アーキテクチャー設計2
   具体例を使い、要件から要求仕様を作成するステップを解説する。
演習:分析工程演習
   要件定義工程の成果物から、要求仕様を論理的に分析し、実現手段を検討する。
第7回
講義:アーキテクチャー設計3
   設計工程の役割、目標、基本的な作業について学ぶ。
演習:分析工程演習成果フィードバック
   各受講者が作成した分析工程の成果物に関し、教員側が例解等を提示し、演習のポイント等をフィードバックする。
第8回
講義:モジュール設計1
   設計を行う際の土台となる構造化モデルとアーキテクチャについて理解する。
演習:詳細設計工程演習
   システムに必要な機能やオブジェクトの構造や振る舞いを、実装を考慮して詳細化する。
第9回
講義:モジュール設計2
   オブジェクト指向設計の基本について理解する。
演習:詳細設計工程演習
   システムに必要な機能やオブジェクトの構造や振る舞いを、実装を考慮して詳細化する。
第10回
講義:モジュール設計3
   デザインパターンやコンポーネントの役割など、設計時に留意すべき要素について理解する。
演習:詳細設計工程演習
   システムに必要な機能やオブジェクトの構造や振る舞いを、実装を考慮して詳細化する。
第11回
講義:製造
   製造工程の役割と目標を理解する。
演習:詳細設計工程演習成果フィードバック
   各受講者が作成した詳細設計工程の成果物に関し、教員側が例解等を提示し、演習のポイント等をフィードバックする。
第12回
講義:テスト1
   テスト工程の役割と目標を理解する。
演習:製造工程&テスト工程演習
   ソフトウェアのソースコードを作成する。
第13回
講義:テスト2
   単体・結合・システムテストの役割と目標を理解する。
演習:製造工程&テスト工程演習
   ソフトウェアのソースコードを作成し、テストを行う。
第14回
講義:まとめ、ソフトウェア工学の将来
   講義および演習を含め、学んだこと振り返り、要点をまとめます。
演習:製造・テスト工程演習成果フィードバック
   各受講者が作成した製造・テスト工程の成果物に関し、教員側が例解等を提示し、演習のポイント等をフィードバックする。
教科書
/Textbook(s)
テキスト名:ソフトウェア工学
著者名:岸 知二, 野田 夏子
出版社:近代科学社
ISBN:978-4764905092
その他、講義および演習の工程毎に講義資料を配布する。
成績評価の方法・基準
/Grading method/criteria
以下の項目で評価します。
 1. クイズ 5%
 2. 期末試験 60%
 3. 演習 35%
演習は要求課題を充足している度合いを評価します。
各演習課題は原則時間内提出とし、最終提出を次の授業日前日24:00とします。
期末試験では演習課題の内容に対する理解を確認する問題も出題します。
履修上の留意点
/Note for course registration
・演習は個人で行います。
・他の受講者と演習課題に関し議論することは、理解を深める上で有益であるため奨励します。しかし、成果物の丸写し等が発覚した場合には、然るべきペナルティを与えるものとします。
・演習課題に対応するために必要な技術(UML編集に用いるAstahの操作、Javaプログラミング等)について、スキルが足りない場合には、時間外の自助努力を求めることがある。
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
http://borealis.u-aizu.ac.jp/classes/se1
Moodle http://sealpv0.u-aizu.ac.jp:20000/

実務経験有り:現役のソフトウェア技術者(30年以上の実務経験)とソフトウェア開発に従事した経験豊富な教員(企業での開発経験を含む)が共同で授業を行います。

授業形態:講義,演習


科目一覧へ戻る
開講学期
/Semester
2019年度/Academic Year  2学期 /Second Quarter
対象学年
/Course for;
2年
単位数
/Credits
3.0
責任者
/Coordinator
エフゲニー ピシキン
担当教員名
/Instructor
エフゲニー ピシキン, マキシム モズゴボイ, ジュリアン ヴィジェガス, ウォンミィング チュー, イエン ニール ユーウェン, 大藤 建太
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites

更新日/Last updated on 2019/08/09
授業の概要
/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.
授業の目的と到達目標
/Objectives and attainment
goals
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.

After course completion the students will have the following learning outcomes:
- Understanding concepts of information and data.
- Knowledge about genesis of information systems and ability to create entity-relationship data models.
- 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 data lifecycle phases and necessary techniques relevant to a particular phase.
- 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 approaches, models and conventions for data sharing, storage and reuse.
- Understanding object-oriented models of data and processes ad ability to use modeling tools (UML).
- Understanding the models and concepts used to build structured data storage systems, such as databases.
授業スケジュール
/Class schedule
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.
Object-Oriented Modeling and Unified Models.
Modeling languages and tools (e.g. UML). Semi-structured data models. Introduction to XML.
UML modeling scopes. UML Diagrams.

Class 5. 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 6. 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 7. 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 8. Introduction to Database Systems (part 12.
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 9. Spreadsheet Systems (part 1).
Spreadsheets as a data organization and management instrument.  Basic functions of spreadsheet software. Typical use cases.

Class 10. Spreadsheet Systems (part 2).
Advanced functions of spreadsheet systems. Charts, add-ins and programming.

Class 11. 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 12. 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 13. Data Models and Software.
Human-centric development as a response to societal problem. Understanding data science and engineering.
Quality issues: reliability, scalability, efficiency, effectiveness.

Class 14. Optional topics. Q&A session. Course Review and Course Summary.
教科書
/Textbook(s)
Information on textbooks and helpful resources is provided on the course web page.
成績評価の方法・基準
/Grading method/criteria
The final grade is calculated based on the following weights:
- Tests and quizzes during lecture and hands-on time – 40%
- Exercises and individual projects – 30%
- Final test – 30%

Additional bonus points may be given by the course instructors for active participation in classroom activities and high quality creative exercise solutions and be used to compensate the possible grade deficit for major course activities up to 20%.
履修上の留意点
/Note for course registration
This course is based on Programming.Intro and C.Programming delivering primary knowledge of programmable computational process and data type concepts. We also expect that the students have basic understanding of 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. Prof. Evgeny Pyshkin worked as a software engineer for St. Petersburg Polytechnic University and participated in software projects with Spectrasize (Switzerland) as a developer and a project manager. Prof. Maxim Mozogovoy worked in joint software projects with industry partners as software developer, software QA engineer and project team leader. 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.

Official Course Web Page: http://web-int.u-aizu.ac.jp/~pyshe/courses/idm/.
The access to the course on Moodle: https://aizudc.gnomio.com.

Class:Lecture,Exercises


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

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