2018/01/30 現在 |
科目一覧へ戻る |
開講学期 /Semester |
2017年度/Academic Year 前期 /First Semester |
---|---|
対象学年 /Course for; |
2年 |
単位数 /Credits |
4.0 |
責任者 /Coordinator |
渡部 有隆 |
担当教員名 /Instructor |
黄 捷, 鈴木 大郎, 陳 文西, 渡部 有隆, 渡邊 曜大, イエン ニール ユーウェン, 裴 岩 |
推奨トラック /Recommended track |
- |
履修規程上の先修条件 /Prerequisites |
P1 or P2 |
更新日/Last updated on | 2017/01/30 |
---|---|
授業の概要 /Course outline |
コンピュータは情報を操作するものです。情報の組織化・操作・利用の方法を勉強することは、コンピュータを効率的に、そして、効果的に使うために非常に重要なことです。プログラミングや現代のデータ処理において、本質的に必要なものは、問題解決のための、あるいは、主記憶と2次記憶装置にあるデータにアクセスするための、効率的なアルゴリズム(算法)と一連の命令です。この効率というものは、処理するデータの構造に直接結び付いています。他のデータ項目に効果的に結び付けることによって、データ項目は、個々の内容を越えた意味を持つようになります。データ構造は、単に項目だけでなく、互いの関係をも考慮した、データの組織化の方法です。 この授業では、アルゴリズムとデータ構造を幅広く紹介し、プログラミング演習によってそれらの定義と実装の方法を学びます。 |
授業の目的と到達目標 /Objectives and attainment goals |
学生はデータ構造とアルゴリズムの長所と短所の評価、データ構造の定義と構築、効率的なアルゴリズムの開発ができるようになります。そして、最先端のデータ構造とアルゴリズムを問題の解法やソフトウェア開発に適用することができるようになります。演習では、限られた資源の下で現実的な問題を解くことにより、アルゴリズムの効率の差がハードウェアの差よりもずっと重要なことを体験します。授業・演習で得られた知識、評価手法、実装方法と応用力は、最先端の研究活動や高度なソフトウェア及びハードウェアの開発に役立てることができます。 |
授業スケジュール /Class schedule |
1導入 2計算量 3配列・リスト 4スタック・キュー 5再帰・分割統治法 6整列I 7整列II 8探索 9木 10二分木 11ヒープ 12ハッシュ 13グラフ 14グラフアルゴリズム 15動的計画法 |
教科書 /Textbook(s) |
教科書 T.コルメン、「アルゴリズムイントロダクション第1巻」「アルゴリズムイントロダクション第2巻」、近代科学社 セジウィック、「アルゴリズムC第1巻」「アルゴリズムC第2巻」、近代科学社 副読本 渡部有隆、「プログラミングコンテスト攻略のためのアルゴリズムとデータ構造」、マイナビ |
成績評価の方法・基準 /Grading method/criteria |
授業への出席 10% 課題 40% 試験 50% このシラバスは本コースの基本情報だけを提供するもので、教科書、授業スケジュール、評価方法などは担当教員により異なる可能性があるので、担当教員の指示に従ってください。 |
履修上の留意点 /Note for course registration |
履修規程上の先修条件:P1 プログラミング入門 または P2 プログラミングC |
参考(授業ホームページ、図書など) /Reference (course website, literature, etc.) |
http://www.u-aizu.ac.jp/course/alg1/ http://web-int.u-aizu.ac.jp/course/alg1/ http://judge.u-aizu.ac.jp/ Sedgewick, 「Algorithms in C」, Addison Wesley Singh, 「Introduction to Data Structures」, T.Cormen「Introduction to Algorithms」 West Decker, 「Data Structures」, Prentice Hall Baase, 「Computer Algorithms」, Addison Wesley (日本語版:サラ・バース、「アルゴリズム入門」, ピアスン・エデュケーション) 築山 修治, 「アルゴリズムとデータ構造の設計法」, コロナ社 奥村 晴彦, 「C 言語によるアルゴリズム事典」, 技術評論社 |
科目一覧へ戻る |
開講学期 /Semester |
2017年度/Academic Year 後期 /Second Semester |
---|---|
対象学年 /Course for; |
2年 |
単位数 /Credits |
2.0 |
責任者 /Coordinator |
髙橋 成雄 |
担当教員名 /Instructor |
髙橋 成雄, 出村 裕英, モハメド ハマダ |
推奨トラック /Recommended track |
- |
履修規程上の先修条件 /Prerequisites |
F3 |
更新日/Last updated on | 2017/01/30 |
---|---|
授業の概要 /Course outline |
効率よくかつ正確に情報を伝達することは,近代デジタル社会における重要な技術課題のひとつである.情報理論はこの問題に対して,数学的な定式化に根ざし,理論的解法を提供する.情報理論の考え方は,確率や統計の定理などを活用し情報通信や誤り訂正のための効率のよい符号化の構築を可能とする.情報理論は,画像データ圧縮,暗号論,ネットワークコミュニケーション,情報量評価などの分野で基本的な役割を演じており,その意味で本科目の履修は重要となる. |
授業の目的と到達目標 /Objectives and attainment goals |
本授業科目の主要な課題は,情報源符号化と通信路符号化の数学的な定式化と,符号化の効率的な構成手法加えて,情報のあいまいさ及び情報量を測るためのエントロピーの概念の理解にある.確率と統計の基礎についても取り扱っていく. |
授業スケジュール /Class schedule |
* 集合,確率,平均と分散, * 条件付き確率,マルコフ過程 * 情報源符号化,瞬時符号 * クラフトの不等式,一意的に復号可能な符号 * 平均符号長,エントロピー,情報源符号化定理 * ハフマン符号,コンパクト符号 * マルコフ情報源,遷移図,エルゴード性 * ランレングス符号,ZL符号 * 情報量,エントロピーの性質 * 条件付きエントロピー,相互情報量 * 通信路容量,2元対称通信路,最尤復号化 * ハミング距離,通信路符号化 * 通信路符号化定理 * パリティチェック,長方形符号,三角形符号 * ハミング符号,生成行列,パリティチェック行列,シンドローム * 原始多項式,符号生成多項式 |
教科書 /Textbook(s) |
大石進一,「例にもとづく情報理論入門」,講談社。 |
成績評価の方法・基準 /Grading method/criteria |
中間試験(1/3),期末試験(1/3),その他小テスト等(1/3). |
履修上の留意点 /Note for course registration |
特になし. |
参考(授業ホームページ、図書など) /Reference (course website, literature, etc.) |
http://www.u-aizu.ac.jp/~shigeo/course/it/ (高橋 成雄) |
科目一覧へ戻る |
開講学期 /Semester |
2017年度/Academic Year 前期 /First Semester |
---|---|
対象学年 /Course for; |
2年 |
単位数 /Credits |
3.0 |
責任者 /Coordinator |
ローター シュミット |
担当教員名 /Instructor |
杉山 雅英, ローター シュミット, 浅井 和人, 森 和好, イゴール ルバシェフスキー |
推奨トラック /Recommended track |
- |
履修規程上の先修条件 /Prerequisites |
- |
更新日/Last updated on | 2017/01/31 |
---|---|
授業の概要 /Course outline |
This course is an introduction to Discrete Mathematics. The subject is important for computer scientists and engineers since almost all computer structures are based on discrete bits. (1) In Logic and Set Theory, the most fundamental concepts of mathematical thinking (elementary logic, sets and mathematical propositions) and basic operations on them are introduced. This yields the structures of Boolean lattices/algebras and propositional calculus. This topic is important for computing since any theoretical argument or model uses this formalism. Examples for applications: using Boolean lattices to simplify computer hardware circuits; using theoretical arguments to design fast computer algorithms. Partition of sets into disjoint subsets (equivalence classes) is also studied. Examples for applications: information classification; computer-reconstruction of noisy images. (2) In Relations and Functions, binary relations and their expression via 0/1-matrices are studied. We study properties of relations such as reflexivity, symmetry and transitivity, order, the composition of relations and corresponding matrix expressions. This includes the study of equivalence relations and classes (see above) which have important applications in computing. Examples: automatic information-clustering (in fuzzy logic and control); automatic simplification of computer programs. Ordered structures are important for understanding information storage and access in computers. The study of relations leads to the study of functions which are a special type of relation. For functions, injectivity, surjectivity, bijectivity are studied. As a consequence of studying bijective (invertible) functions, one can define the cardinality of sets and, in particular, countable sets. Examples for applications: estimating/counting steps in a computation; the study of logic and its consequences for computing such as the following AI question: `Which theorems can be automatically proven given a system of mathematical rules?' Other types of functions such as characteristic functions are studied. Example for applications: computer control based upon fuzzy logic. (3) In Graph Theory & Automata, we first study basic notions such as the degree of vertices, isomorphisms of graphs, walks in graphs, paths in graphs, or the diameter of a graph. In addition, we study a number of special graphs which occur in models and applications. Graphs can be represented by matrices which is important for their computer implementation. Examples for applications: every computer network or the whole WWW can be seen as graphs; information-linkage can be described by graphs (similarity of DNA structures or writing styles among people). Trees are an important class of graphs. A computer file-directory is a tree. Many company-structures are like a tree. Minimal spanning trees and minimal weighted paths in a graph are studied in this course.] Examples for applications: cost-minimalization in transportation or in production facilities. Automata, a formalization of computer programs and computation, are described by certain types of graphs. The simplification of automata, which yields improved software and hardware performance in computers uses a combination of the above topics such as functions and equivalence relations. (4) Finally, Combinatorics is a topic that is connected to most of the above, in particular, if one wants to determine the number of instances for a particular mathematical structure. Several principles of counting are studied, and basic notions such as binomial coefficients, permutations, combinations, repeated permutations, multinomial expansion, and (ordered) partitions. This includes studying mathematical induction. Combinatorics is important to count and estimate the number of computing steps and computing time in applications. |
授業の目的と到達目標 /Objectives and attainment goals |
Logic, Set Theory, Boolean algebras, Relations, Order, Functions, Graph Theory, Finite Automata, and Combinatorics. |
授業スケジュール /Class schedule |
Logic, Set Theory, Boolean algebras, Relations, Order, Functions, Graph Theory, Finite Automata, and Combinatorics. |
教科書 /Textbook(s) |
[1] Discrete Mathematical Structures. B. Kolman, R.C. Busby, S.C. Ross. Prentice Hall [2] Discrete Mathematics. S. Lipschutz (McGraw-Hill), Translated by Hiroshi Narushima. Ohm-sha. |
成績評価の方法・基準 /Grading method/criteria |
Attendance (10%). Exercises (20%). Exams (30% Midterm, 40% Final). 2/3 attendance, and 2/3 homework submission are a requirement to pass. |
履修上の留意点 /Note for course registration |
This is a basic course with essentially high school mathematics as prerequisite. Formal prerequisites: none |
参考(授業ホームページ、図書など) /Reference (course website, literature, etc.) |
Discrete Mathematical Structures. / B. Kolman, R.C. Busby, S.C. Ross. / Prentice Hall Int. Inc. Discrete Mathematics (McGraw-Hill). / S. Lipschutz, / translated by Hiroshi Narushima. Ohm-sha. |
科目一覧へ戻る |
開講学期 /Semester |
2017年度/Academic Year 後期 /Second Semester |
---|---|
対象学年 /Course for; |
2年 |
単位数 /Credits |
4.0 |
責任者 /Coordinator |
齋藤 寛 |
担当教員名 /Instructor |
北道 淳司, 小平 行秀, ウォンミィング チュー, 西村 憲, 齋藤 寛, ベン アブダラ アブデラゼク, 富岡 洋一 |
推奨トラック /Recommended track |
- |
履修規程上の先修条件 /Prerequisites |
- |
更新日/Last updated on | 2017/01/29 |
---|---|
授業の概要 /Course outline |
論理回路設計は,ディジタル集積回路設計の一過程で,集積回路として実現したい機能を0と1をとる論理変数と論理和,論理積,論理否定といった論理演算を用いて設計することです. 設計というからには,良し悪しが存在します.よい設計とは,コストが安い,あるいは性能の良い設計です.回路が正しく動作するよう設計することはもとより,最適化手法を駆使して良い設計を得る必要があります. |
授業の目的と到達目標 /Objectives and attainment goals |
論理回路設計における基礎知識や,設計手法ならびに最適化手法を学び,与えられた仕様から自分で論理回路を設計できるようになることが目的です. 演習では,真理値表などによる仕様より自分で論理回路を生成し,回路図作成ソフトウェア上に設計します.また,シミュレータを使ってシミュレーションを行い,設計された回路が正しいかどうかを検証します. |
授業スケジュール /Class schedule |
(担当教員によって異なりますが、おおよそ以下の内容を学習します) 1 数の表現(二進数,負数の表現,加減算) 2 ブール代数 3 二段論理と二段論理簡単化 4 論理関数の様々な表現 5 遅延とハザード 6 組み合わせ回路設計(各種演算器,階層設計) 7 メモリ論理設計 8 順序回路設計 (有限状態機械,同期式回路) 9 論理検証 |
教科書 /Textbook(s) |
(担当教員によって異なります) |
成績評価の方法・基準 /Grading method/criteria |
(担当教員によって異なります) 齋藤(ベン) 中間試験30%、期末試験30%、レポート40% 西村(チュー) 期末試験50%、レポート50% 小平(富岡) 中間試験25%、期末試験25%、レポート50% |
履修上の留意点 /Note for course registration |
離散系論,論理回路設計特論,コンピュータアーキテクチャ,VLSI設計論 履修規程上の先修条件:なし |
科目一覧へ戻る |
開講学期 /Semester |
2017年度/Academic Year 前期 /First Semester |
---|---|
対象学年 /Course for; |
3年 |
単位数 /Credits |
4.0 |
責任者 /Coordinator |
宮崎 敏明 |
担当教員名 /Instructor |
ウォンミィング チュー, 西村 憲, 劉 勇, 北道 淳司, 宮崎 敏明, 中里 直人, ベン アブダラ アブデラゼク |
推奨トラック /Recommended track |
- |
履修規程上の先修条件 /Prerequisites |
L4 & F4 |
更新日/Last updated on | 2017/01/26 |
---|---|
授業の概要 /Course outline |
コンピュータアーキテクチャの基礎、設計手法、および性能評価法ついて学ぶ。 コンピュータはプロセッサ、メモリ、入出力装置等から成り立っているが、論理回路設計論で学んだ演算器や制御回路をどのように組み合わせることでこれらが構成できるかについて解説する。コンピュータを設計する際には、 性能、コスト、柔軟性、プログラム容易性、消費電力等、さまざまな要求を考慮しなければならない。本科目では商用プロセッサの1つであるMIPSを例に挙げ、そのアーキテクチャを解説し、これらの要求に対してどのような配慮がなされているかを見て行く。演習では、CadenceなどのCAD(Computer Aided Design)ツールを使った MIPS プロセッサの実装及び動作検証シミュレーションを行う。また、アセンブラプログラミングについても学習し、プロセッサの基本動作を理解する。 |
授業の目的と到達目標 /Objectives and attainment goals |
・コンピュータアーキテクチャの主要原理を理解する ・アセンブラプログラミングの基礎を知る ・ハードウエア記述言語を用いたプロセッサ設計の概要を学ぶ |
授業スケジュール /Class schedule |
1. 概要 2. 命令とアセンブリ言語 3. 命令とアセンブリ言語2 4. 性能評価 5. 演算回路: 加算、減算、論理演算、ALU 6. 演算回路2:乗算、除算、浮動小数点 7. データパス 8. 制御回路 9. パイプライン技術 10. パイプライン技術2: ハザード 11. メモリ階層化: キャッシュ 12. メモリ階層化: 仮想記憶 13. ストレージおよびその他入出力: RAIDなど 14. 並列プロセッサ: SIMD/MIMD, ベクトルプロセッサ 15. 並列プロセッサ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 |
[Lue先生クラス] 講義は英語で行われます。 |
参考(授業ホームページ、図書など) /Reference (course website, literature, etc.) |
参考リンク先 初回の講義時にアナウンスする。 参考図書 "HDLによるVLSI設計―VerilogHDLとVHDLによるCPU設計 第2版" 深山正幸 他著 先修科目及び重要な関連科目 先修科目 ・コンピュータシステム概論 ・論理回路設計論 重要な関連科目 ・オペレーティングシステム論 ・コンピュータ構築設計論 ・並列コンピュータアーキテクチャ ・組み込みシステム |
科目一覧へ戻る |
開講学期 /Semester |
2017年度/Academic Year 後期 /Second Semester |
---|---|
対象学年 /Course for; |
2年 |
単位数 /Credits |
4.0 |
責任者 /Coordinator |
アレクサンダー ヴァジェニン |
担当教員名 /Instructor |
劉 勇, アレクサンダー ヴァジェニン, 大井 仁, コンスタンティン マルコフ, 西舘 陽平, 李 鵬, 大津山 公平, 松本 和也 |
推奨トラック /Recommended track |
- |
履修規程上の先修条件 /Prerequisites |
L4 |
更新日/Last updated on | 2017/01/28 |
---|---|
授業の概要 /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. 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. 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 6. File Management Topics to study: File-System Concepts File Attributes File Operations and Access Methods Directory Structure and Implementation Protection Machanizm File-System Organization Allocation Methods Free-Space Management Directory Implementation Efficiency and Reliability Mass-Storage Management 7. Distributed Systems Topics to study: Background Motivation Topology Network Types Communication Strategies Design Strategies |
教科書 /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, and class participation. Exercises: 40 points Quiz, Midterm + Exam: 60 points Reports about results of exercises should be submitted in one week after each exercise. The later submission leads to decreasing the number of points as follows: The submission later than one week will reduce points to 50%, The submission later than two weeks will reduce points to 25%, The submission later than four weeks will reduce points to 10%. |
履修上の留意点 /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.) |
1. Course WWW-site will be provided by each instructor. 2. 「オペレーティングシステム」前川 守著 岩波書店 ISBN4000103466 |
科目一覧へ戻る |
開講学期 /Semester |
2017年度/Academic Year 前期 /First Semester |
---|---|
対象学年 /Course for; |
3年 |
単位数 /Credits |
3.0 |
責任者 /Coordinator |
サバシュ バーラ |
担当教員名 /Instructor |
サバシュ バーラ, ウォンミィング チュー, マキシム モズゴボイ |
推奨トラック /Recommended track |
- |
履修規程上の先修条件 /Prerequisites |
- |
更新日/Last updated on | 2017/02/01 |
---|---|
授業の概要 /Course outline |
A tabular (relational) model of a data is created. The model aims at understanding the users, Programmers and implementation level difficulties. The course prepares the participants to become system engineers, designers, and software developers. The first part, explains relational theory and query languages for databases. Second part contains a study of database management system. |
授業の目的と到達目標 /Objectives and attainment goals |
Database systems are commonly used for information Systems. The course covers system architecture, and database design. It also covers the relational database systems technology. It provides knowledge of application development and experiments of working with relational databases. Concepts related to web data, knowledge and information extraction, and Data Mining are explained. Most of the study uses detailed examples and class exercises. |
授業スケジュール /Class schedule |
1 Apr 7 Data Model+Operations 1-30 1,3 help exercises + HomeWork 2 Apr 14 Datbase Query Languages31-60 3,4 Model Database + Homework 3 Apr 21 Relational Algebra 61-90 4 Database I + HW 4 May 12 Relational Calculus 91-136 4 DatabaseII + HW 5 May 19 Dictionary and storage 61-136 2 Design of a Database + HW 6 May 26 Storage Indexing 136-165 Complete Hw + Ex ( Part I ) -----------------------Mid-Term exam ( May 26 )-------------------------- 7 Jun 2 Objects - Relations 1-20 5 startup(PostgreSQL O-RDBMSs) 8 Jun 09 Data Integrity 21-40 8 loading database 9 Jun 16 DBMS Architecture 41-60 1,2 simple SQL queries 10Jun 23 SQL - Programming 61-80 3 complex SQL queries 11Jun 30 Relational databases 81-100 4 SQL functions and procedures 12Jul 7 Views,XML,O-RDBMS 100-120 22 Database modifications 13Jul 14 Postgres Internals 120-140 10 Web database programming 14Jul 21 Web Data 140-160 10 Complete Hw + Ex ( Part II) 15Jul 28 Postgres APIs 160-190 |
教科書 /Textbook(s) |
Database Systems Concepts, 6th edition, by Korth, H.A., Silberschatz, A., and Sudershan, S., McGrawHill Book Co., 2010. Fundamentals of Database Systems, 7th Edition, by Ramez Elmasri, Shamkant B. Navathe, 2016 , Pearson |
成績評価の方法・基準 /Grading method/criteria |
Mid-term Examination(30 points); Two short quizzes (40 points (20 points each)) Database Programming Assignments(30 points) |
履修上の留意点 /Note for course registration |
Prerequisites Subject(s): Algorithms and Data Structures I and II, Computer Programming I |
参考(授業ホームページ、図書など) /Reference (course website, literature, etc.) |
link for slides/handouts and exercise sheets, Course material, OHPs and notes recommended by the instructor(s). |
科目一覧へ戻る |
開講学期 /Semester |
2017年度/Academic Year 1学期 /First Quarter |
---|---|
対象学年 /Course for; |
3年 |
単位数 /Credits |
3.0 |
責任者 /Coordinator |
鈴木 大郎 |
担当教員名 /Instructor |
森 和好, モハメド ハマダ, 鈴木 大郎 |
推奨トラック /Recommended track |
- |
履修規程上の先修条件 /Prerequisites |
- |
更新日/Last updated on | 2017/01/30 |
---|---|
授業の概要 /Course outline |
オートマトン言語理論は計算の理論の最も基本的な理論である。ここで中心となるのは、 言語といわれる無限集合(主に可算無限である) を記述する方法を知ることである。 本講義では、主要な2つの方法、すなわち、認識/受理システムであるオートマトンと、 生成システムである文法についてについて学ぶ。さらに、文法とオートマトンを通じて 形式言語の関係、言語の階層性、言語の多様な記述方法について学ぶ。 これらのものは、現実に直面する問題を定式化し、それが容易に解けるものかどうかを 判断したりするのに有益なツールとなる。 |
授業の目的と到達目標 /Objectives and attainment goals |
本講義は以下のことを理解させることを目指している。 1. (可算)無限集合(=言語)を正確に記述することの必要性 2. 言語の記述法、すなわち、言語の認識装置としてのオートマトン、言語の生成装置と しての文法 3. 言語に対するオートマトン、文法の設計法 4. オートマトン、文法に対する制約とそれの言語の記述能力に対する影響、 チョムスキーの階層 5. オートマトンと文法との関係 |
授業スケジュール /Class schedule |
1. 序論 はじめに、本講義の概要、講義を受ける上での注意事項などを説明する。 本講義の序論として、言語とは何かを説明し、それを記述する装置としての オートマトン、文法の概要について説明する。 2. オートマトン オートマトンとそれによって受理される言語について学ぶ。具体的には、以下の 4種類のオートマトンについて詳しく学ぶ。 有限オートマトン、プッシュダウンオートマトン、チューリング機械と線形拘束オートマトン 3. 文法 文法とそれによって生成される言語について学ぶ。具体的には、以下の4種類の 文法について詳しく学ぶ。 正規文法と正規言語、文脈自由文法と文脈自由言語、文脈依存文法と文脈依存言語、 句構造文法と句構造文法 4. オートマトンと文法との関係 これまでは、オートマトンと文法とを個別に学んできたが、言語を記述する装置という 観点から何らかの関係があることが期待される。ここでは,両者の関係について学ぶ。 具体的には、これまでに定義された4種類のオートマトンと4種類の文法とが、言語 記述能力という観点から見たとき、対応していることを明らかにする。すなわち、 次のような対応があることを説明する。 有限オートマトンと正規文法、プッシュダウンオートマトンと文脈自由文法、 線形拘束オートマトン文脈依存文法、チューリング機械と句構造文法 5. 言語のクラスの階層性 これまでの講義で4つの言語クラスが存在することを説明した。これから、Chomskyの 階層といわれる関係を明らかにする。そのために各言語のクラスに属する言語が持つ 性質について調べ、一方のクラスには属さない言語が存在することを示す。 具体的には、以下のことを説明する。 正規言語の性質と正規言語ではない言語の存在, 文脈自由言語の性質と文脈自由言語 ではない言語の存在, 文脈依存言語の性質と文脈依存言語ではない言語の存在 6. 計算可能性と計算の複雑性 形式的に定義可能であっても計算可能でない問題が存在することを簡単に説明し、 そのような例として停止問題について触れる。また、計算の複雑性に関するいくつかの 話題として、計算の複雑性のクラスであるPとNP、P-NP問題、NP完全クラスとNP完全 問題について紹介する。 |
教科書 /Textbook(s) |
各教員が教科書を指定する。第1回目の講義までに用意しておくこと。 |
成績評価の方法・基準 /Grading method/criteria |
成績の評価は、次のものに基づいて行なう。 1. 中間試験、期末試験の成績 2. 授業中のクイズ、課題レポート 3. 出席状況 その重みは各教員に依存する。評価方法の詳細については、各教員が 講義のはじめに説明する。 |
履修上の留意点 /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) |
科目一覧へ戻る |
開講学期 /Semester |
2017年度/Academic Year 2学期 /Second Quarter |
---|---|
対象学年 /Course for; |
4年 |
単位数 /Credits |
3.0 |
責任者 /Coordinator |
浅井 信吉 |
担当教員名 /Instructor |
浅井 信吉, コンスタンティン マルコフ |
推奨トラック /Recommended track |
CF,CM |
履修規程上の先修条件 /Prerequisites |
F1 |
更新日/Last updated on | 2017/04/07 |
---|---|
授業の概要 /Course outline |
The study of algorithms is at the very heart of computer science. This course is intended to teach the advanced computer algorithms and techniques for their design and analysis. 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, string pattern matching, 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; Lecture 07 - String-Matching Problem; Midterm Exam. Lecture 09 - Algorithm Design Techniques: Greedy Algorithms; Lecture 10 - Algorithm Design Techniques: Divide-and-Conquer; Lecture 11 - Algorithm Design Techniques: Dynamic Programming; Lecture 12 - Algorithm Design Techniques: Backtracking; Lecture 13 - Random Number Generators; Lecture 14 - Randomized Algorithms; Lecture 15 - Models of Computations. |
教科書 /Textbook(s) |
Robert Sedgewick. Algorithims in C (Addison Wesley Professional, 1990, ISBN:0-201-51425-7) |
成績評価の方法・基準 /Grading method/criteria |
Lab. Exercises: 60%; Mid-Term Exam: 20%; Final Exam: 20%; (Note: Alterable by the professor in charge of the class.) |
履修上の留意点 /Note for course registration |
F3 Discrete Mathematics F1 Algorithms and Data Structures 履修規程上の先修条件:F1 アルゴリズムとデータ構造 |
参考(授業ホームページ、図書など) /Reference (course website, literature, etc.) |
Course Website: http://hare.u-aizu.ac.jp/classaa/2017 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); 7. T. H. Cormen, et al., Introduction to Algorithms, MIT press, 2009.(日本語版:T. コルメン, 他, アルゴリズムイントロダクション 第3版 総合版 (世界標準MIT教科書), 近代科学社, 2013) |
科目一覧へ戻る |
開講学期 /Semester |
2017年度/Academic Year 3学期 /Third Quarter |
---|---|
対象学年 /Course for; |
3年 |
単位数 /Credits |
3.0 |
責任者 /Coordinator |
モハメド ハマダ |
担当教員名 /Instructor |
鈴木 大郎 |
推奨トラック /Recommended track |
SD |
履修規程上の先修条件 /Prerequisites |
F8 |
更新日/Last updated on | 2017/01/23 |
---|---|
授業の概要 /Course outline |
プログラミング言語処理は、コンピュータ科学において基本的かつ必須の科目であり、 1950年代初めから精力的に研究され、今日でも重要な研究分野である。 この授業では、言語処理の基本的な技法とコンパイラの開発について、講義と 簡単なコンパイラのフロントエンドを作成するプログラミング演習を通じて、 学んでいく。 |
授業の目的と到達目標 /Objectives and attainment goals |
この授業の目的は以下の通りである。 -- プログラミング言語処理で培われてきた技法を、将来携わるプログラム開発で応用できる ようにする。 -- プログラミング言語処理に置ける理論と実際との関係を学ぶことで、コンピュータ科学の 理論的な課題を学ぶ必要性に対する動機付けになる。 -- プログラミング演習での中規模のプログラム作成を通して、プログラミング言語処理技法の 習得と、全般的なプログラミングスキルの向上を図る。 この授業を修めた学生は、以下のことについて理解できるようになる。 -- コンパイラ、インタプリタなどのプログラミング言語の処理系の役割 -- コンパイラの重要性 -- コンパイル処理の方法 -- 理論(オートマトンや文法)と実際(プログラミング言語処理系)との関係 また、この授業を修めた学生は、以下のことができるようになる。 -- プログラミング言語についての適切な理解 -- プログラム開発における言語処理系で使われる技法の適切な応用 -- 簡単なコンパイラのフロントエンドの実装を通し、言語処理系の |
授業スケジュール /Class schedule |
本科目の講義では以下の内容を扱う(特に、コンパイラの前半部を重点的に講義する)。 1. 概論: コンパイラの概説。、コンパイラの構成、プログラミング 言語の処理におけるコンパイラとインタプリタの役割。 2. 字句解析: 字句解析器(スキャナ)の役割、字句(トークン)、正規表現、 正規表現による字句の定義、有限オートマトンの字句解析への応用。 3. 構文解析:構文解析器(パーザ)の役割、トップダウン構文解析技法、 LL(1)構文解析、ボトムアップ構文解析技法、LR(1)構文解析、 構文主導型変換法。 4. コンパイラの自動生成系:スキャナとパーサの自動生成、自動生成の ためのツール解説。 5. 意味解析: 意味情報の解析、型検査、記号表。 6. 中間コード生成: 中間言語(抽象構文木、スタック表現(後置表現)、3番地コード)。 3番地コード、中間コードの生成方法。実行時データ構造 7. 中間コード最適化:簡単な最適化技法の紹介 8. 目的コード生成:中間コードからの目的コード生成。コード生成器。 演習では、与えられた原始言語を中間コード(構文木)に翻訳するコンパイラの フロントエンドを作成する。以下のサブプログラムを作成することで、コンパイラの フロントエンドを完成させる。 作成し、 ・字句解析プログラム ・記号表管理プログラム ・構文解析、意味解析、中間コード生成を行う構文主導翻訳 プログラム(パーサ自動生成ツールを利用)、 また、構文解析の手法などについて、講義室での演習も行う。 |
教科書 /Textbook(s) |
コンパイラ -- 言語処理系の基礎から yacc/lex まで -- 大川 知、鈴木 大郎. 近代科学社. 2008. |
成績評価の方法・基準 /Grading method/criteria |
本科目の基本方針は以下の通り。 1. 科目としての要求 (a) 講義への出席 (b) 試験(中間試験(必須)、定期試験) (c) 演習への参加、プログラム課題の提出 2. 評価 中間試験 30%, 期末試験 40%, 演習 30% -- 再試験は行わない。 |
履修上の留意点 /Note for course registration |
Cプログラミング、Javaプログラミング I, データ構造とアルゴリズムの 単位取得済であることが望ましい。オートマトンと言語理論は先修条件なので 履修は必修だが、単位取得していることが求められる。 *履修規程上の先修条件 Formal prerequisites F8 オートマトンと言語理論 |
参考(授業ホームページ、図書など) /Reference (course website, literature, etc.) |
以下の参考書の他に、担当教員が参考書、ハンドアウト、その他の教材の情報を 必要に応じて随時提供する。 1. Compiler Design by Bergmann. WCB. Available for free download at http://elvis.rowan.edu/~bergmann/books.html. 2. Compilers -- Principles, Techniques and Tools by M.S. Lam, R. Sethi, J.D. Ullman and A.V. Aho. Addison-Wesley. (2nd Ed.), 2006. 3. Introduction to Compiler Construction in a Java World by B. Campbell, S. Iyer and B. Akbal-Delibas. Chapman and Hall/CRC, 2012. |
科目一覧へ戻る |
開講学期 /Semester |
2017年度/Academic Year 3学期 /Third Quarter |
---|---|
対象学年 /Course for; |
3年 |
単位数 /Credits |
3.0 |
責任者 /Coordinator |
西舘 陽平 |
担当教員名 /Instructor |
西舘 陽平, ハミード サジ |
推奨トラック /Recommended track |
CM,BM |
履修規程上の先修条件 /Prerequisites |
F1 |
更新日/Last updated on | 2017/01/30 |
---|---|
授業の概要 /Course outline |
数値計算手法の基礎について学ぶ科目。 コンピュータサイエンスにおいて幅広く使われる、数値計算手法やアイディアについて応用例を交えながら学ぶ。 |
授業の目的と到達目標 /Objectives and attainment goals |
この科目を修めた受講生は主要な数値計算手法を理解し、それを利用したプログラムを開発し、実用的な問題を解くことができるようになる。 |
授業スケジュール /Class schedule |
第1週:イントロダクション、数値誤差 -イントロダクション -浮動小数点表現 -コンピュータのパラメータの測定 第2週:浮動小数点演算誤差 -桁落ち -誤差の伝搬 -関数評価 第3週:関数の根 -2分法 -ニュートン法 -系ためのニュートン法 第4週:線形代数方程式 -ベクトルと行列 -ピボットによるガウスの消去法 -LU分解 第5週:逆行列と行列の固有値 -行列式 -行列の反転 -行列の固有値、ヤコビ法による対角化 第6週:補間と曲線あてはめ -ラグランジェ補間 -ニュートン補間 -最小2乗法 第7週:3次スプライン -3次スプライン補間 - B-スプライン 第8週:数値差分と数値積分 -前進差分と中央差分 -数値積分、台形公式 -シンプソン公式 -ガウス求積 第9週:常微分方程式 -オイラー法 -予測子修正法 -ルンゲ・クッタ法 -1階系 第10週:偏微分方程式 -差分法 -ラプラス方程式 -ポアソン方程式 -微分型境界条件 第11週:疎行列のための方法 -行列の形式 -直接解法 -反復法 第12週:乱数生成とモンテカルロ法 -線形合同法 -モンテカルロ法による積分 第13週:有限要素法(1) -ガラーキン法 -変分法による定式化 -有限要素方程式 第14週:有限要素法(2) -離散化 -要素 -3角形要素 第15週:有限要素法(3) -アイソパラメトリック要素 -有限要素方程式の組み立てと解 |
教科書 /Textbook(s) |
講義資料. 数値で学ぶ計算と解析,金谷健一,共立出版. |
成績評価の方法・基準 /Grading method/criteria |
演習課題 50% 中間試験 20% 期末試験 30% |
履修上の留意点 /Note for course registration |
Cプログラミング、Javaプログラミング、アルゴリズムとデータ構造、微分積分、線形代数. 履修規程上の先修条件:F1 アルゴリズムとデータ構造 |
科目一覧へ戻る |
開講学期 /Semester |
2017年度/Academic Year 3学期 /Third Quarter |
---|---|
対象学年 /Course for; |
4年 |
単位数 /Credits |
2.0 |
責任者 /Coordinator |
浅田 智朗 |
担当教員名 /Instructor |
浅田 智朗 |
推奨トラック /Recommended track |
- |
履修規程上の先修条件 /Prerequisites |
- |
更新日/Last updated on | 2017/01/30 |
---|---|
授業の概要 /Course outline |
データ圧縮技術は,その生い立ちが情報理論,符号理論にあり,さまざまな研究が行われている。現実に,それらの理論を知らなくてもデータ圧縮は頻繁に行われており,事実上ブラックボックスのように扱われている。また基本的なことは,情報理論,画像圧縮等で知っていても,いざプログラミングしようとすると困難なことが多い。 この授業では,データ圧縮技術の基本を理解し,各種の圧縮手法を実装することを目標とする。 |
授業の目的と到達目標 /Objectives and attainment goals |
データ圧縮の基本を理解し,各種の基本的な圧縮法を実装できることを目標とする。 |
授業スケジュール /Class schedule |
・ データ圧縮の用語と歴史 ・ Huffman符号 ・ Huffman符号演習 ・ 適応型Huffman符号 ・ 適応型Huffman符号演習 ・ 算術符号 ・ 算術符号演習 ・ 移動窓による圧縮,LZSS ・ LZSS演習 ・ LZW ・ LZW演習 ・ 画像圧縮,DCT ・ DCT演習 ・ Fractal ・ Fractal演習 |
教科書 /Textbook(s) |
データ圧縮ハンドブック[改訂第2版],M.ネルソン,J.L.ゲィリー著,トッパン |
成績評価の方法・基準 /Grading method/criteria |
演習課題のレポート(100%) |
履修上の留意点 /Note for course registration |
C言語に習熟していること。 情報理論を学習していることが望ましい。 |
参考(授業ホームページ、図書など) /Reference (course website, literature, etc.) |
http://web-int.u-aizu.ac.jp/~asada/class/DC.html |
科目一覧へ戻る |
開講学期 /Semester |
2017年度/Academic Year 3学期 /Third Quarter |
---|---|
対象学年 /Course for; |
3年 |
単位数 /Credits |
2.0 |
責任者 /Coordinator |
陳 文西 |
担当教員名 /Instructor |
陳 文西 |
推奨トラック /Recommended track |
- |
履修規程上の先修条件 /Prerequisites |
- |
更新日/Last updated on | 2017/01/30 |
---|---|
授業の概要 /Course outline |
地理情報システム(GIS)やコンピュータグラフィックス(CG)、コンピュータ援用設計(CAD)、パターン認識などでは大量の幾何図形データを高速に処理しなければならない。本科目では、コンピュータでこのような幾何学的な問題を取り扱うための効率的なアルゴリズムとデータ構造の設計と解析を勉強する。 本授業は実世界の問題を提起し、計算幾何学と結びつけ、直観的な考え方から出発し、アルゴリズムを導き出し、適切なデータ構造を用いて問題を解く手法を説明する。 プログラミング宿題の他に、プロジェクト研究課題を設け、計算幾何学知識を活かせて、実際の問題解決へのアプローチを身に付けながら計算幾何学の素晴らしさを楽しむ。 |
授業の目的と到達目標 /Objectives and attainment goals |
計算幾何学の基本となるデータ構造やアルゴリズムを理解し、具体的な問題に対して応用できるようにする。 |
授業スケジュール /Class schedule |
第一章 基本概念 主要な幾何学的問題、典型的なデータ構造とアルゴリズムの復習 第二章 線分交差 直交線分と任意線分の交差検出 第三章 凸包 定義と計算方法(直接法、包装法、Graham走査法、逐次添加法等) 第四章 ボロノイ図 定義、性質と構成方法(直接法、逐次添加法、分割統治法、Fortune走査法) 第五章 ドローネ三角形分割 基本概念、関連術語、求め方(正当な三角形分割法、平面双対法、逐次添加法) 第六章 幾何的領域探索 直交領域探索の概念、1と2次元領域探索 第七章 多角形の三角形分割 問題の提起、基本概念、平面走査法 |
教科書 /Textbook(s) |
Computational Geometry - Algorithms and Applications M. Berg, M. Kreveld, M. Overmars, and O. Schwarzkopf 著 Springer-Verlag 又はその和訳版 コンピュータ・ジオメトリ-計算幾何学:アルゴリズムと応用 M. ドバーグ、M. ファン・クリベルド、M. オーバマーズ、O. シュワルツコップ 著 浅野 哲夫訳、近代出版社 又は 計算幾何学入門 - 幾何アルゴリズムとその応用 譚学厚、平田富夫 著 森北出版 |
成績評価の方法・基準 /Grading method/criteria |
宿題 50% プログラミング問題、4回。 プログラムの実装を通じて、計算幾何学のデータ構造とアルゴリズムに関する知識を深める。 又は プロジェクト研究 50% 1回。 冬休み期間を利用して、実用性のある課題を提出し、色々なリソースから調査活動を展開し、総合的に実際問題解決へのアプローチを勉強する。 及び 期末試験 50% 1回。基本概念についての理解程度を検証する |
履修上の留意点 /Note for course registration |
先修科目 プログラミング言語(C又はJAVA) データ構造とアルゴリズムの基礎 |
参考(授業ホームページ、図書など) /Reference (course website, literature, etc.) |
参考ホームページ 授業用 http://i-health.u-aizu.ac.jp/CompuGeo/index.html 邦文サイト http://www.ise.chuo-u.ac.jp/ise-labs/imai-lab/ http://www.simplex.t.u-tokyo.ac.jp/kika.html 英文サイト http://compgeom.cs.uiuc.edu/~jeffe/compgeom/compgeom.html http://geometryalgorithms.com/ http://mathworld.wolfram.com/ http://www.diku.dk/hjemmesider/studerende/duff/Fortune/ 参考図書 計算幾何学 浅野哲夫 著 朝倉出版 計算幾何学 今井浩、今井圭子 著 共立出版株式会社 Computational Geometry in C J. O'Rourke 著 Cambridge University Press データ構造(アルゴリズムシリーズ1) 浅野哲夫 著 近代科学社 Algorithm in C, Vol. 2(又は同邦訳版) Robert Sedgewick 著 Addison-Wesley |
科目一覧へ戻る |
開講学期 /Semester |
2017年度/Academic Year 1学期 /First Quarter |
---|---|
対象学年 /Course for; |
3年 |
単位数 /Credits |
3.0 |
責任者 /Coordinator |
吉岡 廉太郎 |
担当教員名 /Instructor |
アレクサンダー ヴァジェニン, 白 寅天, ヴィタリー クリュエフ, 吉岡 廉太郎, 裴 岩, ヴィジェガス ジュリアン |
推奨トラック /Recommended track |
CM,SE,CN |
履修規程上の先修条件 /Prerequisites |
P3 |
更新日/Last updated on | 2017/02/28 |
---|---|
授業の概要 /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回 講義:テスト3 結合・システムテストの役割と目標を理解する。 演習:製造工程&テスト工程演習 ソフトウェアのソースコードを作成し、テストを行う。 第15回 講義:まとめ、ソフトウェア工学の将来 講義および演習を含め、学んだこと振り返り、要点をまとめます。 演習:製造・テスト工程演習成果フィードバック 各受講者が作成した製造・テスト工程の成果物に関し、教員側が例解等を提示し、演習のポイント等をフィードバックする。 |
教科書 /Textbook(s) |
テキスト名:ソフトウェア工学 著者名:岸 知二, 野田 夏子 出版社:近代科学社 SBN:978-4764905092 |
成績評価の方法・基準 /Grading method/criteria |
以下の項目で評価します。 1. クイズ 5% 2. 期末試験 60% 3. 演習 35% 演習は要求課題を充足している度合いを評価します。 各演習課題は原則時間内提出とし、最終提出を次の授業日前日24:00とします。 期末試験では演習課題の内容に対する理解を確認する問題も出題します。 |
履修上の留意点 /Note for course registration |
演習は個人で行います。 他の受講者と演習課題に関し議論することは、理解を深める上で有益であるため奨励します。しかし、成果物の丸写し等が発覚した場合には、然るべきペナルティを与えるものとします。 演習課題に対応するために必要な技術(UMLの扱い、Javaプログラミング等)について、スキルが足りない場合には、時間外の自助努力を求めることがある。 欠席は、やむをえない場合を除いて減点とします。 |
参考(授業ホームページ、図書など) /Reference (course website, literature, etc.) |
http://borealis.u-aizu.ac.jp/classes/se1 Moodle http://sealpv0.u-aizu.ac.jp:20000/ |