2024/01/30 現在 |
コンピテンシーコード表を開く 科目一覧へ戻る |
開講学期 /Semester |
2023年度/Academic Year 4学期 /Fourth Quarter |
---|---|
対象学年 /Course for; |
1年 |
単位数 /Credits |
4.0 |
責任者 /Coordinator |
渡部 有隆 |
担当教員名 /Instructor |
渡部 有隆, 裴 岩, 黄 捷, 陳 文西, 趙 強福, サクセナ ディーピカー, レ ドアン ホアン |
推奨トラック /Recommended track |
- |
先修科目 /Essential courses |
- |
更新日/Last updated on | 2023/03/20 |
---|---|
授業の概要 /Course outline |
コンピュータは情報を操作するものです。情報の組織化・操作・利用の方法を学習することは、コンピュータを効率的に、そして、効果的に使うために非常に重要なことです。プログラミングや現代のデータ処理において、本質的に必要なものは、問題解決のための、あるいは、主記憶と2次記憶装置にあるデータにアクセスするための、効率的なアルゴリズム(算法)と一連の命令です。この効率というものは、処理するデータの構造に直接結び付いています。他のデータ項目に効果的に結び付けることによって、データ項目は、個々の内容を越えた意味を持つようになります。データ構造は、単に項目だけでなく、互いの関係をも考慮した、データの組織化の方法です。 この授業では、アルゴリズムとデータ構造を幅広く紹介し、プログラミング演習によってそれらの定義と実装の方法を学びます。 |
授業の目的と到達目標 /Objectives and attainment goals |
[対応する学習・教育到達目標] (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 計算量、初等的整列 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-ext.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 |
2023年度/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 | 2023/12/19 |
---|---|
授業の概要 /Course outline |
効率よくかつ正確に情報を伝達することは、近代デジタル社会における重要な技術課題のひとつである。情報理論はこの問題に対して、数学的な定式化に根ざし、理論的解法を提供する。情報理論の考え方は、確率や統計の定理などを活用し情報通信や誤り訂正のための効率のよい符号化の構築を可能とする。情報理論は、画像データ圧縮、暗号論、ネットワークコミュニケーション、情報量評価などの分野で重要な役割を担っており、本科目でそれらの基礎を身につける。 |
授業の目的と到達目標 /Objectives and attainment goals |
[対応する学習・教育到達目標] (A) 技術者としての専門的・倫理的責任を自覚し、情報科学技術を駆使して社会における要求を分析し、技術的課題を設定・解決・評価することができる (C) 数学・自然科学・情報技術分野の科目の専門的知識と、それらの習得を通して身につけた論理的な思考力や客観的判断力などの科学的思考力を、問題解決に応用できる 本授業科目の主要な課題は,情報源符号化と通信路符号化の数学的な定式化と,符号化の効率的な構成手法に加えて,情報のあいまいさ及び情報量を測るためのエントロピーの概念の理解にある.確率と統計の基礎および符号の木および量子化テーブルの観点からみたデータ圧縮についても取り扱う。 |
授業スケジュール /Class schedule |
講義(出村クラス) #1/2 ガイダンス、条件付き確率と大数の法則 #3/4 情報量、情報源 #5/6 情報源符号化 #7/8 瞬時符号、符号空間 #9/10 通信路 #11/12 通信路符号化 #13/14 線形符号 講義(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 (Prefix-free, Trees & Codes, Kraft Inequality, Trees with Prob., Huffman Code) #7/8 Lecture 7 – 8: Probability & Inference Review, Probabilistic Models, Conditional Probability, Bayes’ Rule and Inference, Independence #9 Lecture 9 Independence, Review of Huffman code (for Lab 2) #10/11 Lecture 10-11: Entropy & Source Coding Theorem #12 Lecture 12: Channel & Mutual information Channel/Noisy channel/Channel relationship, Joint prob., system entropies (joint, conditional), chain rule for entropy, Mutual information #13 Lecture 13: Channel Capacity Maximizing mutual information, def. of channel capacity, Capacities of different channels #14 Lecture 14: Channel Coding Theorem The noisy-channel coding theorem (sect. 9.6 – Mackay book), Shannon theorem (10.1 and 6.11) 演習(全クラス共通) 毎週1回2コマずつ7回実施。 演習(出村/大竹クラス) #1 MATLAB 入門 #2 情報源符号化 #3 データ圧縮とノイズ除去 #4 相互情報量とエントロピーの応用 #5 Communication Toolbox 入門1 (QAM) #6 Communication Toolbox 入門2 (通信路符号化におけるエラー訂正) #7 Communication Toolbox 3 (ハミング符号生成器) ITCG Ex class by Profs. Pham and Lu #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 |
教科書 /Textbook(s) |
出村クラス講義教科書 はじめての情報理論 稲井 寛(著) 森北出版 ISBN:978-4-627-84911-2 Phamクラス講義教科書 1. A Student's Guide To Coding And Information Theory, STEFAN M. MOSER PO-NING CHEN. 2. Information Theory, Pattern Recognition, and Neural Networks (English, free), David J. C. MacKay, University of Cambridge, ISBN: 9780521642989. FREE, downloadable from the course Gdrive. |
成績評価の方法・基準 /Grading method/criteria |
期末試験40%、クイズ(2-14回講義)10%、演習50% |
参考(授業ホームページ、図書など) /Reference (course website, literature, etc.) |
実務経験有り:情報理論およびデータ圧縮に関して通信ネットワーク設計などを行なっている。 Communications System Toolbox, MATLAB https://jp.mathworks.com/help/comm/ 授業形態:講義,演習 |
コンピテンシーコード表を開く 科目一覧へ戻る |
開講学期 /Semester |
2023年度/Academic Year 2学期 /Second Quarter |
---|---|
対象学年 /Course for; |
2年 |
単位数 /Credits |
3.0 |
責任者 /Coordinator |
森 和好 |
担当教員名 /Instructor |
浅井 和人, 森 和好, 浅井 信吉, 渡邊 曜大, 呂 国偉, ヴィリエッタ ジョヴァンニ |
推奨トラック /Recommended track |
- |
先修科目 /Essential courses |
- |
更新日/Last updated on | 2023/06/01 |
---|---|
授業の概要 /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: Lu 以下のように14回の授業を4つのブロックに分けて講義と演習を通して学ぶ。 第1ブロック「基礎」では「集合と論理」「関数」「関係」について学ぶ。こ れらは以降の項目の共通の道具となる。部分集合に対する演算、集合を要素と する集合族、単射(1対1写像)や全射(上への写像)、二つの要素の関係を 扱う2項関係の定義と表現法、同値関係と集合の分割などを学ぶ。これらを理 解し使いこなせることが必要である。 第2ブロック「数え上げと組み合せ論」では整数の性質、再帰的な定義法、事 象や対象物の個数を数え上げる方法について学ぶ。「剰余計算」では整数の剰 余に関する基礎、「再帰と帰納」では数学的帰納法の原理、再帰的定義法、 「組み合せ論」では和と積の原理、鳩の巣原理、順列と組み合せ、数え上げの 手法、などを学ぶ。 第3ブロック「グラフ理論」では「グラフの基礎」「有向グラフ」「平面グラ フ」「木」について学ぶ。現実の様々な事象や関係をグラフの概念を用いて理 解することができる。ものとものとのつながりや関係はグラフとして表現され る。「グラフの基礎」では辺や頂点や面、さらに頂点や面の次数を定義しその 基本的な性質と計算機のための行列を用いた表現法について、「有向グラフ」 ではグラフの辺に向き(方向)を持たせることでより現実の事象をより詳しく モデル化する。さらに経路の一筆書き問題を発端として生み出された「平面グ ラフ」の性質、オイラーの定理や多面体定理などを学ぶ。グラフの特殊形とし て「木」構造を学ぶ。 第4のブロックでは数字の大小関係を抽象化して得られる2項関係である「順 序」、さらに公理論的に順序を構成する「束」の概念、さらに「論理」で命題 論理とスイッチング回路、さらに一般化・抽象化しそれらを特別な場合として 含む「ブール代数」について学ぶ。 1. 基礎 (3 回) - 集合論と論理 - 関数 - 関係 2. 数え上げと組み合せ論 (2-3 回) - 剰余計算 - 再帰と帰納 - 組み合せ論 中間試験 (教員によって異なるので注意) 3. グラフ理論 (4-5 回) - グラフの基礎 - 有向グラフ (DAG) - 平面グラフ - 木 4. 順序、論理、ブール代数 (3-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] 期末試験と演習による。(課題の80%以上を消化することが必須)期末試験は概ね150点満点とする。試験の得点 ”p” は、原則として次のように成績 "s" に換算される。s=75+(p-75)/3+e (p>75), s=p+e (p≦75) ここに、"e" は演習点で、最大 s=80 まで加算される。 [N.Asai's and Mori's class] 定期試験 (70%), [中間試験(30%),期末試験(40%)], 演習 (30%) [Viglietta's class] Final exam (70%), Exercises (30%) |
履修上の留意点 /Note for course registration |
中間試験の実施、学生の成績評価法は担当教員によって異なるので注意が必要 である。 |
参考(授業ホームページ、図書など) /Reference (course website, literature, etc.) |
[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[N.Asai's class] http://web-int.u-aizu.ac.jp/~sugiyama/Lecture/DS/2019/welcome.html [N.Asai's class] http://hare.u-aizu.ac.jp/DS/2020/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 |
2023年度/Academic Year 3学期 /Third Quarter |
---|---|
対象学年 /Course for; |
2年 |
単位数 /Credits |
4.0 |
責任者 /Coordinator |
齋藤 寛 |
担当教員名 /Instructor |
西村 憲, 齋藤 寛, 富岡 洋一, 奥山 祐市, 小平 行秀, 新田 高庸 |
推奨トラック /Recommended track |
- |
先修科目 /Essential courses |
- |
更新日/Last updated on | 2023/03/20 |
---|---|
授業の概要 /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. 導入 2. 数の表現 3. ブール代数 4. カルノーマップを用いた二段論理簡単化 5. 様々な論理関数の表現法 6. 遅延と論理回路の性能 7. 中間試験 8. 組み合わせ回路1 9. 組み合わせ回路2 10. メモリ論理 11. 順序回路の設計 12. 有限状態機械を用いた順序回路の設計 13. まとめ 14. その他 以上は,全クラス共通です. |
教科書 /Textbook(s) |
指定なし |
成績評価の方法・基準 /Grading method/criteria |
中間・期末試験 60% レポート 40% 1. 公欠の場合に限り、追試験をうけることができる 2. D判定に関して再試験は行わない 3. 期末試験を受けない、もしくはレポートを全く提出していない場合、単位認定とはならない |
履修上の留意点 /Note for course registration |
新型コロナウィルスの状況によっては,ハイブリッド形態(オンラインと教室) )で行います.オンラインでの参加に関しては,リモートでCadenceのツールを実行できることが条件となります.実行の仕方に関しては,各教員の指示に従ってください. |
コンピテンシーコード表を開く 科目一覧へ戻る |
開講学期 /Semester |
2023年度/Academic Year 1学期 /First Quarter |
---|---|
対象学年 /Course for; |
3年 |
単位数 /Credits |
4.0 |
責任者 /Coordinator |
ベン アブダラ アブデラゼク |
担当教員名 /Instructor |
西村 憲, 中里 直人, ベン アブダラ アブデラゼク, 北道 淳司, 鈴木 大輔, ダン ナム カイン |
推奨トラック /Recommended track |
- |
先修科目 /Essential courses |
事前に学んでおいてほしい科目一覧(下記科目内容の一部な いし全部を既知として授業を進めます) ・ FU04 論理回路設計論 |
更新日/Last updated on | 2023/03/20 |
---|---|
授業の概要 /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 |
Benクラス:講義は英語で行う。 重要な関連科目 ・オペレーティングシステム論 ・並列コンピュータ システム ・組み込みシステム |
参考(授業ホームページ、図書など) /Reference (course website, literature, etc.) |
参考リンク先 初回の講義時にアナウンスする。 |
コンピテンシーコード表を開く 科目一覧へ戻る |
開講学期 /Semester |
2023年度/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 | 2023/03/20 |
---|---|
授業の概要 /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 |
[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-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 |
1. Introduction 2. Operating-System Services 3. Processes 4. Threads and Concurrency 5. CPU Scheduling 6. Process Synchronization 7. Deadlocks 8. Midterm exam (optional) 9. Main Memory 10. Virtual Memory 11. Mass-Storage Structure 12. I/O Systems 13. File-System Interface 14. File-System Implementation 15. Final Review (optional) |
教科書 /Textbook(s) |
1. Operating System Concepts by A. Silberschatz, P. B. Galvin, and G. Gagne, John Wiley & Sons, Inc. 2. Materials and handouts provided by instructors. |
成績評価の方法・基準 /Grading method/criteria |
[H. OI's and K. MATSUMOTO's classes] Midterm exam (30%), Final examination (30%), Exercise reports (40%). [Y. LIU's class] Final examination (50%), Exercise reports (50%). |
履修上の留意点 /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 at: https://www.academia.edu/39949624/Abraham_Silberschatz_Operating_System_Concepts_9th2012_12_2_ The authors of the textbook 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 |
2023年度/Academic Year 4学期 /Fourth Quarter |
---|---|
対象学年 /Course for; |
2年 |
単位数 /Credits |
3.0 |
責任者 /Coordinator |
鈴木 大郎 |
担当教員名 /Instructor |
鈴木 大郎, ハマダ モハメド, 森 和好 |
推奨トラック /Recommended track |
- |
先修科目 /Essential courses |
事前に学んでおいてほしい科目一覧(書き科目内容の一部ないし全部を既知として授業を進める) FU01 アルゴリズムとデータ構造 I FU03 離散系論 |
更新日/Last updated on | 2023/12/19 |
---|---|
授業の概要 /Course outline |
オートマトン言語理論は計算の理論の最も基本的な理論である。ここで中心となるのは、言語といわれる無限集合(主に可算無限である) を記述する方法を知ることである。 本講義では、主要な2つの方法、すなわち、認識/受理システムであるオートマトンと、生成システムである文法についてについて学ぶ。さらに、文法とオートマトンを通じて形式言語の関係、言語の階層性、言語の多様な記述方法について学ぶ。 これらのものは、現実に直面する問題を定式化し、それが容易に解けるものかどうかを判断したりするのに有益なツールとなる。 |
授業の目的と到達目標 /Objectives and attainment goals |
[対応する学習・教育到達目標] (A) 技術者としての専門的・倫理的責任を自覚し、情報科学技術を駆使して社会における要求を分析し、技術的課題を設定・解決・評価することができる (C) 数学・自然科学・情報技術分野の科目の専門的知識と、それらの習得を通して身につけた論理的な思考力や客観的判断力などの科学的思考力を、問題解決に応用できる [コンピテンシーコード] C-AL-007 本講義は以下のことを理解させることを目指している。 1. (可算)無限集合(=言語)を正確に記述することの必要性 2. 言語の記述法、すなわち、言語の認識装置としてのオートマトン、言語の生成装置と しての文法 3. 言語に対するオートマトン、文法の設計法 4. オートマトン、文法に対する制約とそれの言語の記述能力に対する影響、言語のクラスの階層性 5. オートマトンと文法との関係 |
授業スケジュール /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. 有限オートマトンの最小化 7. プッシュダウンオートマトン(PDA) 8. 文法の概要 9. 文法の分類、中間試験 10. 正規文法(rg)と正規言語(rl)、文脈自由文法(cfg)と文脈自由言語(cfl)、文脈自由文法の標準形(チョムスキー標準形(CNF)、グライバッハ標準形(GNF)) 11. 文脈自由文法から標準形への変換、文法とオートマトンとの対応関係 12. 文法とオートマトンとの対応関係(続き)、 正規言語の様々な表現 (右線形文法、左線形文法、正規表現) 13. 正規言語の様々な表現(続き)、言語の階層性(正規言語でない言語の存在、文脈自由言語でない言語の存在、反復補題) 14. 言語の階層性(続き)、計算可能性と計算の複雑性 各回の授業とその内容との対応は、授業の進み具合によって変更になることがある。 |
教科書 /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 |
2023年度/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 | 2023/03/20 |
---|---|
授業の概要 /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. |
教科書 /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 |
2023年度/Academic Year 1学期 /First Quarter |
---|---|
対象学年 /Course for; |
4年 |
単位数 /Credits |
3.0 |
責任者 /Coordinator |
ハマダ モハメド |
担当教員名 /Instructor |
ハマダ モハメド |
推奨トラック /Recommended track |
- |
先修科目 /Essential courses |
事前に学んでおいてほしい科目一覧(下記科目内容の一部ないし全部を既知として授業を進めます) FU08 Automata and Languages |
更新日/Last updated on | 2023/03/20 |
---|---|
授業の概要 /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 |
2023年度/Academic Year 4学期 /Fourth Quarter |
---|---|
対象学年 /Course for; |
3年 |
単位数 /Credits |
3.0 |
責任者 /Coordinator |
西舘 陽平 |
担当教員名 /Instructor |
西舘 陽平, 北里 宏平, 劉 勇 |
推奨トラック /Recommended track |
- |
先修科目 /Essential courses |
MA01 線形代数 I MA02 線形代数 II MA03 微積分 I MA04 微積分 II PL03 プログラミングJAVA I FU01 アルゴリズムとデータ構造 I |
更新日/Last updated on | 2023/03/20 |
---|---|
授業の概要 /Course outline |
数値計算手法の基礎について学ぶ科目。 コンピュータサイエンスにおいて幅広く使われる、数値計算手法やアイディアについて応用例を交えながら学ぶ。 |
授業の目的と到達目標 /Objectives and attainment goals |
[対応する学習・教育到達目標] (A) 技術者としての専門的・倫理的責任を自覚し、情報科学技術を駆使して社会における要求を分析し、技術的課題を設定・解決・評価することができる (C) 数学・自然科学・情報技術分野の科目の専門的知識と、それらの習得を通して身につけた論理的な思考力や客観的判断力などの科学的思考力を、問題解決に応用できる [コンピテンシーコード] C-AL-002-1, C-AR-008, C-AL-005-1, C-AL-008 この科目を修めた受講生は主要な数値計算手法を理解し、それを利用したプログラムを開発し、実用的な問題を解くことができるようになる。 |
授業スケジュール /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 |
Exercises 50%. In class testing 20% Final examination 30%. |
参考(授業ホームページ、図書など) /Reference (course website, literature, etc.) |
数値で学ぶ計算と解析,金谷健一,共立出版. |
コンピテンシーコード表を開く 科目一覧へ戻る |
開講学期 /Semester |
2023年度/Academic Year 1学期 /First Quarter |
---|---|
対象学年 /Course for; |
3年 |
単位数 /Credits |
3.0 |
責任者 /Coordinator |
吉岡 廉太郎 |
担当教員名 /Instructor |
吉岡 廉太郎, 白 寅天, 裴 岩, ヴィジェガス オロズコ ジュリアン アルベルト, イドゥニン パシャ ビン イブラヒム, サクセナ ディーピカー, レ ドアン ホアン, 高野 友貴子 |
推奨トラック /Recommended track |
- |
先修科目 /Essential courses |
事前に学んでおいてほしい科目一覧(下記科目内容の一部ないし全部を既知として授業を進めます) PL03 プログラミングJAVA I |
更新日/Last updated on | 2023/12/19 |
---|---|
授業の概要 /Course outline |
ソフトウェア工学は、ソフトウェア開発に関係する技術や手法に関する学問です。それは、ソフトウェアをどのように作ると良いのか、どのように管理すれば良いのかなど、理論的なものから実践的なものまで実に多くの知識を含んでいます。ソフトウェアが人々の生活をあらゆる面で支えるようになった今日、ソフトウェア工学の重要性は増す一方です。また、コンピュータに携わる技術者として、ソフトウェアに関する基礎知識としてその基本は知っておく必要があります。 この授業では、まず、ソフトウェアを作るのに必要な(一般的な)工程を説明し、各工程が完成するソフトウェアに及ぼす影響について考えます。そして、各工程での課題について考え、関連する技術・手法を紹介します。技術や手法の紹介では、どういった課題があるのかを知り、代表的な解決策について理解してもらうことを目的とします。新しいものも古いものも、必要に応じて取り混ぜて扱います。また、ソフトウェアの種類(組み込み、ウェブ、並列など)による違いについては大きく扱わず、より一般的に通用する部分を対象とします。 以上のように、この授業ではソフトウェア工学がどのような知識・技術群であるかを理解してもらうことに主眼を置きます。 演習では、講義で扱う一般的な知識の理解を助けるため、より具体的な演習課題に取り組みます。各回は、開発工程のいずれかと対応しており、その工程で必要となる作業の基本を順に理解していきます。各課題は実世界の課題を意識して作られているので、理論や基本だけでは理解しづらい要素に気づくこともできます。演習を一通り実施することで、代表的な開発プロセス、開発モデルに沿ったシステム開発を体験することができ、それらの役割を理解できます。 |
授業の目的と到達目標 /Objectives and attainment goals |
[対応する学習・教育到達目標] (A) 技術者としての専門的・倫理的責任を自覚し、情報科学技術を駆使して社会における要求を分析し、技術的課題を設定・解決・評価することができる (C) 数学・自然科学・情報技術分野の科目の専門的知識と、それらの習得を通して身につけた論理的な思考力や客観的判断力などの科学的思考力を、問題解決に応用できる [コンピテンシーコード] C-SE-001, C-SE-002 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 その他、講義および演習の工程毎に講義資料を大学のMoodle上のコースページに用意します。 |
成績評価の方法・基準 /Grading method/criteria |
以下の項目で評価します。 1. クイズ 15% 2. 期末試験 50% 3. 演習 35% 演習は要求課題を充足している度合いを評価します。 各演習課題は原則時間内提出とし、最終提出を次の授業日前日23:59とします。 期末試験では演習課題の内容に対する理解を確認する問題も出題します。 出席はクイズへの回答で確認します。 |
履修上の留意点 /Note for course registration |
・演習は個人で行います。 ・他の受講者と演習課題に関し議論することは、理解を深める上で有益であるため奨励します。しかし、成果物の丸写し等が発覚した場合には、然るべきペナルティを与えるものとします。 ・演習課題に対応するために必要な技術(UML編集に用いるAstahの操作、Javaプログラミング等)について、スキルが足りない場合には、時間外の自助努力を求めることがある。 |
参考(授業ホームページ、図書など) /Reference (course website, literature, etc.) |
講義資料の配布、演習課題の提出、クイズ回答、質疑応答は会津大学Moodleページで行います。 実務経験有り:企業でソフトウェア開発に従事している現役のソフトウェア技術者が講師として、各回の演習課題作成および解答に対する講評とアドバイスを行います。 現役のソフトウェア技術者(30年以上の実務経験)とソフトウェア開発に従事した経験豊富な教員(企業での開発経験を含む)が共同で授業を行います。 |
コンピテンシーコード表を開く 科目一覧へ戻る |
開講学期 /Semester |
2023年度/Academic Year 2学期 /Second Quarter |
---|---|
対象学年 /Course for; |
2年 |
単位数 /Credits |
3.0 |
責任者 /Coordinator |
ピシキン エフゲニー |
担当教員名 /Instructor |
ピシキン エフゲニー, モズゴボイ マキシム, ヴィジェガス オロズコ ジュリアン アルベルト, イエン ニール ユーウェン, 大藤 建太, 藤本 裕輔 |
推奨トラック /Recommended track |
- |
先修科目 /Essential courses |
- |
更新日/Last updated on | 2023/03/20 |
---|---|
授業の概要 /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 |
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. 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 13. 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 14. 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). |
教科書 /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. Classes: Lecture,Exercises |