AY 2024 Undergraduate School Course Catalog

Foundations of CSE

2024/11/21

Open Competency Codes Table Back

開講学期
/Semester
2024年度/Academic Year  4学期 /Fourth Quarter
対象学年
/Course for;
1st year
単位数
/Credits
4.0
責任者
/Coordinator
WATANOBE Yutaka
担当教員名
/Instructor
WATANOBE Yutaka, PEI Yan, HUANG Jie, CHEN Wenxi, SAXENA Deepika, SEMBA Shogo, THENUWARA HANNADIGE Akila Sanjaya.S, ZHOU Yinghui
推奨トラック
/Recommended track
先修科目
/Essential courses
更新日/Last updated on 2024/01/25
授業の概要
/Course outline
Computers manipulate information. Learning how to organize, manipulate, and use information is critical to using computers efficiently and effectively. An essential need in programming is efficient algorithms (arithmetic) for solving problems or processing large amounts of data. This efficiency is directly tied to the structure of the data being processed. Data structure is a way of organizing data so that changes to and access to the data can be done efficiently, taking into account not just the set of data, but also their relationships to each other.
In this class, students learn a broad range of algorithms and data structures, and how to define and implement them through programming exercises.
授業の目的と到達目標
/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 code]
C-AL-001, C-AL-002-1, C-AL-003-1, C-AL-004-2, C-AL-005-1, C-AL-006-1

Students will be able to evaluate the strengths and weaknesses of data structures and algorithms as well as to develop efficient algorithms. In addition, the students will be able to apply the state-of-the-art of data structures and algorithms for solving problems and developing software. The aim of the exercises is to solve practical problems under limited resources and know from experience that the efficiency of an algorithm is much more important than that of hardware. Acquired knowledge and techniques will be used for their state-of-the-art research and software development in the future.
授業スケジュール
/Class schedule
1 Introduction
2 Analysis of Algorithms, Sort I
3 Data Structures
4 Search I, Hash
5 Recursion, Divide and Conquer
6 Sorting II
7 Tree
8 Binary Search Tree
9 Heap
10 Dynamic Programming
11 Graph
12 Graph Algorithms
13 Heuristic Search
14 Selected Topics
教科書
/Textbook(s)
Textbooks
Thomas H. Cormen, Introduction to Algorithms 1.

Supplementary reader
Thomas H. Cormen, Introduction to Algorithms 2.
Y. Watanobe, Algorithms and Data Structures for Programming Contest.
成績評価の方法・基準
/Grading method/criteria
AA: Algorithm Assignment - Max: 100 points
PA: Programming Assignment - Max: 100 points
CE: Coding Examination - Max: 120 points
PE: Paper Examination - Max: 120 points
Theory: sqrt(AA × PE)
Practice: sqrt(PA × CE)
Final Score = sqrt(Theory × Practice)
履修上の留意点
/Note for course registration
Students should learn Intro. Programming and C Programming.



参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
Couse Web Site
http://web-ext.u-aizu.ac.jp/course/alg1/

Web Site for exercises
https://onlinejudge.u-aizu.ac.jp/

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

The course coordinator Yutaka Watanobe has practical work experience. He collaborated with Givery Inc. to develop the programming skill check tool and materials which can be useful for personnel assessment, training and education. He has provided a number of problems and related test data as one of main contents. He also has experience in developing large scale software in practical use, such as development environments and educational support systems. Based on his experience, he can teach a wide range of algorithms and data structures.

The course instructor Yan Pei has practical work experience. He worked for Neusoft Ltd. (China、CMMI5) and Alpine Electronics Europe D&R GmbH (Germany) for five years, where he attended and led software development projects (million LOC level) and teams, designed core algorithms, and applied for and obtained industrial patents. Based on these experiences, he can deliver lectures on algorithm and complexity, programming, and software engineering, etc.

The course instructor Wenxi Chen has practical working experience. He had worked for Nihon Kohden Industrial Corp. for 5 years where he was involved in R&D of bioinstrumentation, signal processing and data analysis. Based on his experience, he can teach the basis of Algorithms and Data Structures.


Open Competency Codes Table Back

開講学期
/Semester
2024年度/Academic Year  3学期 /Third Quarter
対象学年
/Course for;
3rd year
単位数
/Credits
3.0
責任者
/Coordinator
DEMURA Hirohide
担当教員名
/Instructor
DEMURA Hirohide, PHAM Tuan Anh, OHTAKE Makiko, LE Doan Hoang
推奨トラック
/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)
MA07 Probability and Statistics
LI14 CSE Exercise II
FU01 Algorithms and Data Structures I
FU03 Discrete Systems
更新日/Last updated on 2024/02/06
授業の概要
/Course outline
This course “Information Theory and Data Compression” gives knowledge and basic skills as follows. Transmitting information efficiently and accurately is one of the important technical challenges in the modern digital society. Information theory is rooted in mathematical formulation and provides a theoretical solution to this problem. The idea of information theory makes it possible to construct an efficient coding for information communication and error correction by utilizing the probability and the statistical theorem. Information theory plays an important role in fields such as image data compression, cryptology theory, network communication, information quantity evaluation, etc.
授業の目的と到達目標
/Objectives and attainment
goals
[Competency Codes]
C-DS-001-3, C-DS-004, C-DS-006-1, C-DS-007,

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

The main contents of this course are mathematical formulation of source coding and channel coding, efficient construction method of coding, and entropy for measuring information ambiguity and information volume. This course includes basis of probability and statistics, and data compression from viewpoints of coding tree and quantization table.
授業スケジュール
/Class schedule
Lecture for Demura’s class (in Japanese)
# 1/2 Guidance,  Conditional Probability and Law of Large Numbers
# 3/4 Information, Information Source
# 5/6 Source Coding
# 7/8 Instant Code, Code space
# 9/10 Communication Channel
# 11/12 Channel Coding Theory
# 13/14 Linear Coding

Lecture for Pham’s class (ITCG in English)
#1 Lecture 1:  Course introduction, Intro. to Information Theory
#2 Lecture 2:  Errors and Error Detecting Codes
#3/4 Lecture 3 – 4: Error Correcting Codes - Repetition and Hamming codes
#5/6 Lecture 5 – 6: Data compression & Huffman Code
#7/8 Lecture 7 – 8: Probability & Inference
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)


Laboratory Exercise for all classes
We have an exercise class (two periods) a week.
Class in Japanese (Profs. Demura and Ohtake)
#1 MATLAB activation
#2 Information, Information Source
#3 Source Coding
#4 Mutual information and application of entropy
#5 Communication Toolbox 1 (QAM)
#6 Communication Toolbox 2 (Error correction in channel coding)
#7 Communication Toolbox 3 (Humming Code Generator)

ITCG Class in English (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)
Demura’s class in Japanese :
はじめての情報理論
稲井 寛(著) 森北出版
ISBN:978-4-627-84911-2

Pham’s class (ITCG in English):
Information Theory, Pattern Recognition, and Neural Networks (English, free)
David J. C. MacKay, University of Cambridge
ISBN: 9780521642989
成績評価の方法・基準
/Grading method/criteria
Final exam 40%, Quiz(2nd-14th lectures) 10%, Exercise 50%
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
The course instructors has working experiences: Instructors are familiar with Information Theory and Data Compression based on telecommunication network design, etc.

Communications System Toolbox, MATLAB
https://jp.mathworks.com/help/comm/


Open Competency Codes Table Back

開講学期
/Semester
2024年度/Academic Year  2学期 /Second Quarter
対象学年
/Course for;
2nd year
単位数
/Credits
3.0
責任者
/Coordinator
MORI Kazuyoshi
担当教員名
/Instructor
ASAI Kazuto, MORI Kazuyoshi, ASAI Nobuyoshi, WATANABE Yodai, VIGLIETTA Giovanni, NASSANI Alaeddin
推奨トラック
/Recommended track
先修科目
/Essential courses
更新日/Last updated on 2024/01/26
授業の概要
/Course outline
"Discrete Systems" is also called "Discrete Mathematics." This course
deals with and analyzes various discrete events and objects
mathematically.  "Discrete Systems" has been developed with discretely
mathematical concept and fundamental methodology for computing,
computers, networks, programming, and algorithms.  In that sense, the
course Discrete Systems is a mathematical foundation for computer
science and technology and has many fundamental studies and various
applications.  The concept of Discrete Systems is now universal
infrastructure and common language to represent modern ICT
(Information and Communication Technology).
授業の目的と到達目標
/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-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

As described in "Course Outline," "Discrete Systems" is mathematics
for computer science and engineering, and is supporting important
foundation of modern ICT.  Objectives of this course are that students
can understand and represent various discrete events (phenomena) using
"Discrete Systems" as a universal language and infrastructure.
Moreover, students are recommended to implement programs using
theories studied in the course.
授業スケジュール
/Class schedule
Allocation of lecutures and exercises is as follows:

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

Exercises:
C1: K.Asai
C2: N.Asai
C3: Mori
C4: Y.Watanabe
C5: Viglietta
C6: TBD

Contents of Lecture and Exercise are constructed 4 Blocks with 14
sessions.

The first block "Basic" contains "Set and Logic," "Functions," and
"Relations," which are fundamentals for further study in Discrete
Systems. Notions to be learned include subsets, set family, injection,
surjection, binary relation, equivalent relation, and set
partition. Students must understand and apply this "Basic."

The second block "Counting and Combinatorics" contains the fundamental
property of integers, recursive definition, and counting of events and
objects. "Module calculation" covers the essential property and
calculation of integer modules. "Recursion and Induction" covers the
principle of mathematical induction, recursive definition.
"Combinatorics" covers principles of sum and product, pigeonhole
principle, permutation, and combination, various counting techniques.

The third block "Graph Theory" contains general idea of graphs and
applications of graphs. Practical events and relations are represented
and understood using the concept of graphs. "Basics of Graphs" covers
the fundamental notions of graph theory; vertex, edge, face, and path,
fundamental properties of graphs, and matrix representation of graphs
for computation implementation. "Directed graphs" covers graphs with
direction (orientation) to represent more practical modeling. "Planar
graphs" covers Euler's theorem and polyhedron theorem. Finally,
"Trees" covers the tree structures as a special case of graphs.

The fourth block "Order, Logic, Boolean Algebra" contains abstract
"Order" relation which is an analogy of order property for numbers.
"Lattice" is introduced as a special partially ordered set with
algebraic structure and two binary operations. "Logic" and "Boolean
Algebra" cover elementary logic and propositional calculus. "Boolean
Algebra" is a special type of lattice and related to the construction
of switching circuits.

   1. Basic (3 lectures)
     - Set Theory and Logic
     - Functions
     - Relations

   2. Counting and Combinatorics (2-3 lectures)
     - Modulo calculation
     - Recursion and Induction
     - Combinatorics

     Mid-term exam (optional)

   3. Graph Theory (4-5 lectures)
     - Basics of Graphs
     - Directed graphs
     - Planar graphs
     - Tree

   4. Order, Logic, Boolean Algebra (3-4 lectures)
     - Order
     - Lattice
     - Logic
     - Boolean algebra
教科書
/Textbook(s)
[K.Asai's class]
Handouts delivered.

[N.Asai's class]
S.Lipschutz, Theory and Problems of Discrete Mathematics, Ohmsha.

[Mori's class]
Necessary materials to be distributed.

[Viglietta 's class]
Seymour Lipschutz, Marc Lipson, "Discrete Mathematics", Schaum's Outline
Series, Fundamental Mathematics in Computer Science, McGraw Hill.
成績評価の方法・基準
/Grading method/criteria
Doing or not doing mid-term exam and grading methods are different
professor by professor. If you have any questions, please contact to
your class professor.

The followings are the current grading methods of each class.

[K.Asai's class]
By Final exam and Exercises. (More than 80% of homework assignments should be done.)
One can have 100% grade only by Final exam, but exercise score may be added supplementally.

[N.Asai's and Mori's class]
Exams (70%), [Mid-exam(30%),Final-exam(40%)], Exercise (30%)

[Viglietta's class]
Final exam (70%), Exercises (30%)
履修上の留意点
/Note for course registration
The languages are Japanese for Classes C1 to C4 and
English for Classes C5 and C6.
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
[K.Asai's class]
http://web-ext.u-aizu.ac.jp/~k-asai/classes/class-texts.html

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

[Mori's class]
Seymour Lipschutz, Hiroshi Narushima, "Discrete Mathematics",
Ohmsha. translated version (Revised Third Edition)
Seymour Lipschutz, Marc Lipson, "Discrete Mathematics", Series of
Schaum's Outline Series, Fundamental Mathematics in Computer
Science, McGraw Hill.

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


The course instructors have working  experiences:

[N.Asai]
1997-2000 Researcher, WaveFront Co. Ltd.
2002-2003 Visiting researcher, National Institute of Environmental Study
2001-2010 Collaborative Research with Asahi Glass Company

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.

[Mori]
1988-1988 Shinko Electric Co.,Ltd.
Implementataion of Computer Algebra System, REDUCE, on SELCOS, a
computer system for Industrial Control.


Open Competency Codes Table Back

開講学期
/Semester
2024年度/Academic Year  3学期 /Third Quarter
対象学年
/Course for;
2nd year
単位数
/Credits
4.0
責任者
/Coordinator
SAITO Hiroshi
担当教員名
/Instructor
NISHIMURA Satoshi, SAITO Hiroshi, TOMIOKA Yoichi, OKUYAMA Yuichi, KOHIRA Yukihide, NITTA Koyo, SEMBA Shogo
推奨トラック
/Recommended track
先修科目
/Essential courses
更新日/Last updated on 2024/01/21
授業の概要
/Course outline
Logic circuit design is a design process in digital VLSIs such as processors. The main objective of logic circuit design is to design functional requirements implemented on digital VLSIs using logic variables which take 0 or 1 and logic operations (AND, OR, NOT). Not only circuits are designed from a specification correctly but also it is necessary to design optimum circuits to satisfy design requirements such as cost and performance.
授業の目的と到達目標
/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.

In lectures, students study the basic knowledge, design method, and optimization method
for logic circuit design. In exercises, students design logic circuits from specification
such as truth table using a schematic editor. In addition, students verify whether the
designed circuits are correct or not by using a logic simulator.

The goals of this course are as follows:
1. Students can design the minterm cannonical disjunctive form from truth tables
2. Students can minimize two-level logic functions using Karnaugh map
3. Students can design sequential circuits using finite state machine
授業スケジュール
/Class schedule
1. Introduction
2. Representation of numbers
3. Boolean algebra
4. Two-level logic minimization using Karnaugh map
5. Various representations of logic functions
6. Delay and performance of logic circuits.
7. Mid-term examination
8. Combinational circuits 1
9. Combinational circuits 2
10. Memory logics
11. Design of sequential circuits
12. Design of sequential circuits using finite state machine
13. Summary
14. Others
教科書
/Textbook(s)
Not assigned
成績評価の方法・基準
/Grading method/criteria
Mid-term/final examination 60%
Reports 40%
1. You can take the examinations if your absent is authorized absence
2. No re-examination for "D" evaluation
3. No credit is given if you do not take the final examination or submit any reports


Open Competency Codes Table Back

開講学期
/Semester
2024年度/Academic Year  1学期 /First Quarter
対象学年
/Course for;
3rd year
単位数
/Credits
4.0
責任者
/Coordinator
BEN ABDALLAH Abderazek
担当教員名
/Instructor
NISHIMURA Satoshi, NAKASATO Naohito, BEN ABDALLAH Abderazek, KITAMICHI Junji, DANG Nam Khanh, SEMBA Shogo
推奨トラック
/Recommended track
先修科目
/Essential courses
Courses preferred to be learned prior to this course:
- FU04 Logic circuit design
更新日/Last updated on 2024/01/22
授業の概要
/Course outline
Students will learn fundamental issues of computer architecture with its design approach, and performance evaluation methods. A computer consists of a central processing unit, memory, I/O devices, and so on. In this course, the students will understand how a computer is established by combining some computing and control units which are composed of logic circuits learned in “Logic Circuit Design” course. More precisely, the students will learn abovementioned issues using MIPS processor as an example. In the exercises, the students will implement a simplified MIPS processor by using CAD (Computer Aided Design) tools such as Cadence. In addition, the students will study how a program runs on a processor through developing some programs using an assembly programming language.
授業の目的と到達目標
/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-AR-002, C-AR-003,C-AR-004,C-AR-005

1. Understand the main principles of computer architecture.
2. Understand the behavior of processor through assembly programming.
3. Use CAD tools for the design and verification of the processor, and learn the abstract of processor design.
授業スケジュール
/Class schedule
Lecture schedule / contents
1. Introduction (Chapter 1)
2. Performance evaluation (Chapter 1)
3. Instruction set & assembly language (Chapter 2)
4. Instruction set & assembly language 2 (Chapter 2)
5. Arithmetic for computer: addition, subtraction, ALU, etc (Chapter 3)
6. Arithmetic for computer2: multiplication, division, floating point (Chapter 3)
7. Datapath (Chapter 4)
8. Controller (Chapter 4)
9. Pipeline (Chapter4)
10. Pipeline 2: hazards (Chapter 4)
11. Memory hierarchy: cache (Chapter 5)
12. Memory hierarchy: virtual memory (Chapter 5)
13. Storage & I/O (Chapter 5, etc.)  Parallel processor: SIMD/MIMD, Vector processors, etc. (Chapter 6)
14. Review and/or some advanced topics (Interesting content about Computer Architecture)

Exercise schedule / contents
1. Introduction
2. Assembly Programming Language (Basic instructions only)
3. Assembly Programming Language (Develop a multiply routine using immediate instructions)
4. Assembly Programming Language (JAL and sub-routine call)
5. Understand mechanisms of RF and ALU(Confirm using a simulator)
6. Develop a simple CPU and confirm its behavior using basic instructions
7. Develop a simple CPU and confirm its behavior using simple programs developed in Ex. 2
8. Develop a simple CPU and confirm its behavior using the multiply routine developed in Ex. 3
9. Reserve day for catching up delay of Ex 5-7, and review
10. Pipeline (Solve ex. problems in the textbook)
11. Cache (Solve ex. problems in the textbook)
12. Virtual memory (Solve ex. problems in the textbook)
13. Integrated final exercise 1 (or Ex for multicore, or review of previous exercises. Depending on the progress of the class)
14. Integrated final exercise 2 (or Ex for multicore, or review of previous exercises. Depending on the progress of the class)
教科書
/Textbook(s)
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
Final examination (50%), Exercise report (50%). (No makeup examination)
履修上の留意点
/Note for course registration
(Ben class) The lecture will be offered in English

Related courses which include important concepts relevant to the course:
-Operating Systems
-Parallel Computer System
-Embedded Systems
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
Course website:
Will be announced in the first class



Open Competency Codes Table Back

開講学期
/Semester
2024年度/Academic Year  4学期 /Fourth Quarter
対象学年
/Course for;
2nd year
単位数
/Credits
4.0
責任者
/Coordinator
LIU Yong
担当教員名
/Instructor
LIU Yong, OI Hitoshi, MARKOV Konstantin, NISHIDATE Yohei, MATSUMOTO Kazuya, DANG Nam Khanh, ZHOU Yinghui
推奨トラック
/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 2024/01/24
授業の概要
/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.


Open Competency Codes Table Back

開講学期
/Semester
2024年度/Academic Year  4学期 /Fourth Quarter
対象学年
/Course for;
2nd year
単位数
/Credits
3.0
責任者
/Coordinator
SUZUKI Taro
担当教員名
/Instructor
SUZUKI Taro, MORI Kazuyoshi, NASSANI Alaeddin, THENUWARA HANNADIGE Akila Sanjaya.S
推奨トラック
/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)

FU01 Algorithms and Data Structures I
FU03 Discrete Systems
更新日/Last updated on 2024/01/25
授業の概要
/Course outline
Theory of automata and languages is one of the most fundamental fields of theory of computing. The core concept is to obtain the method to describe infinite sets which are called languages (countable ones are dealt in this field mainly).

We study two important systems to describe them: Automata, the recognizing/accepting systems, and Grammars, the generating systems. We study the relation of formal languages through grammars and automata. We focus on hierarchies of languages.

They are standard tools of the well-educated computer scientist, who often uses them to reformulate a problem in an easily solvable form, or to recognize the language that cannot be feasibly handled in general.
授業の目的と到達目標
/Objectives and attainment
goals
[competency code]

C-AL-007

At the end of the course the student should be able to:

1. know the necessity to describe infinite (countable)
   sets(= languages) correctly

2. know methods to describe languages, automata as recognizers
   and grammars as generators of them

3. design automata and grammars for languages

4. understand the restriction on the automata and grammars and
   the hierarchy of describing powers of languages caused by
    such restriction

5. understand the relation between automata and grammars
授業スケジュール
/Class schedule
Although class schedule depends on professors, each professor deals with the following topics (the order depends on professors).

1. Introduction

Important items students should know and obey are explained. Then, languages we study in this course is introduced, and automata and grammars as devices for describing languages are generally explained.

2. Automata

Automata and languages accepted by them are extensively studied. We deal with finite automata(FA) and pushdown automata(PDA). Three classes of finite automata (deterministic finite automata(DFA), nondeterministic finite automata(NFA), nondeterministic finite automata with empty moves(lλ-NFA, also known as ε-NFA) and their relationship is explained. We also deal with minimization of DFAs.

3. Grammars

Grammars and languages generated by them are explained in detail. Following four types of grammars and languages are explained: regular grammars(RG) and regular languages(RL), context-free grammars(CFG) and context-free languages(CFL). We deal with regular expressions(RE) as an expression of regular languages. Normal forms of context-free grammar (Chomsky normal form(CNF) and Griebach Normal form(GNF) are also explained.

4. Relationship between Automata and Grammars

We learn relationship between automata and grammars as the devices to describe languages. Correspondences between finite automata and regular grammars, pushdown automata and context-free grammars are explained,

5. The Hierarchy of Language Classes

We establish a hierarchy among language classes and show some property which every language in one class satisfies, and then using it, we show the existence of a language which does not belong to the class. That is, we explain followings: Properties of Regular Languages and the Existence of Languages which are not Regular, Properties of Context-Free Languages and the Existence of Languages which
are not Context-Free.

6. The computability and computational complexity

We briefly explain the existence of non-computable problems even if they are formally defined. As an example of such problems, we introduce the Halting Problem. We also briefly explain the introduction of computational complexity and show some topics such as P and NP classes of computational complexity, NP complete class and some examples of NP complete problems.

Class schedule for each professor is as follows.

Kazuyoshi Mori
1,2.
Mathematical Introduction. Introduction to Formal Languages with Operations of Words and Formal Languages.

3,4,5.
Finite Automata (FA) (Deterministic (DFA), Nondeterministic (NFA), and Nondeterministic with ε-moves (ε-NFA)). Regular Languages(RL). Relationship between DFA, NFA, and ε-NFA.  Non-Regular Languages (Pumping Lemma). Minimization of Deterministic Finite Automata.

6,7.
Pushdown Automata (PDA)(Deterministic (DPDA) and Nondeterministic (NPDA)). Context-Free Languages (CFL). Non-Context-Free Languages (Pumping Lemma for CFL).
8.
Midterm Examination.
9,10.
Formal Languages.  Regular Grammars (RG). Linear Grammars (LG). Regular Expressions (RE). Relationship between FA, RG, RE, and RL.
11,12,13.
Context-Free Grammars (CFG).  Derivation tree.  Relationship between NPDA, CFG, and CFL.  Chomsky Normal Forms (CNF). Griebach Normal Forms(GNF).
14.
Other Computing Models, Grammars, and Languages. Hierarchy of Language Classes. Computability and Computational Complexity.

Mohamed Hamada
1. Mathematical background I: Sets, Relations, Functions.
2. Mathematical background II: Graphs, Trees, Proof techniques.
3. Finite Automata: Deterministic finite automata (DFA) with examples
4. Regular expressions, Nondeterministic finite automata (NFA) and NFA to DFA conversion
5. Nondeterministic finite automata with empty move (λ-NFA) and conversion to NFA
6. Deterministic finite automata to regular expression conversion
7. Finite automata minimization
8. Midterm exam
9. Grammar: Regular grammar (RG) and Context-free grammar (CFG)
10. CFG Parsing, and grammar ambiguity
11. Normal forms: Chomsky Normal form (CNF), CFG to CNF conversion, Griebach Normal form (GNF)
12. Regular languages, Non-regular languages and Pumping lemma
13. Context-free languages and Push down automata (PDA)
14. Introduction to Turing machines and computability theory

Taro Suzuki
1. Introduction to automata, grammars and language theory.  Mathematical introduction
2-4. finite automata: Deterministic finite automata (DFA), Nondeterministic finite automata (NFA), Nondeterministic finite automata with empty moves (λ-NFA)
5. Equivalence of DFA, NFA and λ-NFA
6. Minimization of finite automata
7. Pushdown automata (PDA)
8. Introduction to Grammar
9. The Classification of grammars, Mid-term exam
10. Regular grammars(RG) and Regular languages(RL, Context-free grammars(CFG) and context-free languages(CFL), Normal forms of Context-free grammars (Chomsky Normal form(CNF),  Griebach Normal forms (GNF))
11. Transformation of CFGs to CNFs, Correspondences between automata and grammars
12. Correspondences between automata and grammars(continued), Various presentation of regular languages (right-linear grammars(RGL), left-linear grammars (LGL), regular expressions)
13. Various presentation of regular languages(continued), Hierarchy of language classes (the existence of non-regular languages and non-context-free languages, the pumping lemma for regular languages and for context-free languages)
14. Hierarchy of language classes(continued), Computability and Computational Complexity

The correspondence between classes and topics described above may be changed according to the progress of the course.


教科書
/Textbook(s)
No textbook is used. Materials will be distributed from each professor.
成績評価の方法・基準
/Grading method/criteria
The weights of the final exam is 40%. The other grading methods and criteria depend on professors.

Kazuyoshi Mori.
Midterm exam: 30%  Exercise: 30%

Mohamed Hamada
the class activities: 14% (1% per class)  Midterm exam: 20%  Exercise: 26%

Taro Suzuki
Midterm exam: 30%  Exercise: 30%
履修上の留意点
/Note for course registration
Students will be expected to have fundamental knowledge about not only Programming and Algorithms but also Computer hardware and its (abstract) behavior.

FU10 Language Processing Systems requires the knowledge studied in this course. Especially, in the first part (lexical analysis and syntax analysis) of a language processing system such as a compiler, the knowledge of automata and grammars is indispensable. Therefore, students who will study Language Processing Systems are strongly recommended to enroll this course.
参考(授業ホームページ、図書など)
/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.

The course instructors have work experiences:
Prof. Suzuki was engaged in the development of language processing systems on Prolog inference machines from 1987 to 1990 at MTC Co.,Ltd. Based on his experience, he can teach the basics of language theory and its relationship with language processing systems.
Prof. Mori was engaged in the implementation of REDUCE, a computer algebra system, on SELCOS, a computer system for industrial control at Shinko Electric Co.,Ltd in 1988, where REDUCE runs on RLISP.  Based on his experience he can teach the basics of a theoretical aspect as well as mechanical aspect of computing.


Open Competency Codes Table Back

開講学期
/Semester
2024年度/Academic Year  2学期 /Second Quarter
対象学年
/Course for;
3rd year
単位数
/Credits
3.0
責任者
/Coordinator
ASAI Nobuyoshi
担当教員名
/Instructor
ASAI Nobuyoshi, YAGUCHI Yuichi, MARKOV Konstantin, SUZUKI Taro, LIU Yong, YEN Neil Yuwen
推奨トラック
/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,
FU01 Algorithms and Data Structures 1
更新日/Last updated on 2024/01/26
授業の概要
/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 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.
This course is offered online.
授業の目的と到達目標
/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 Japanese 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.


Open Competency Codes Table Back

開講学期
/Semester
2024年度/Academic Year  1学期 /First Quarter
対象学年
/Course for;
4th year
単位数
/Credits
3.0
責任者
/Coordinator
HAMADA Mohamed
担当教員名
/Instructor
HAMADA Mohamed
推奨トラック
/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)
FU08 Automata and Languages
更新日/Last updated on 2024/01/19
授業の概要
/Course outline
Languages processing is a fundamental and vital subject in computer science. It is a subject which has been studied intensively since the early 1950’s and continues to be an important research field today. Languages processing is an important part of the undergraduate curriculum for many reasons:
1. It provides students with a better understanding of and appreciation for       programming languages.
2. The techniques used in languages processing can be used in other applications with command languages.
3. It provides motivation for the study of theoretic topics.
授業の目的と到達目標
/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.

Students understand the role of languages processing systems such as compilers and translators, the processing methods of languages, the importance of compilers, and the relation between theory and practice (that is, formal language theory and languages processing systems).
授業スケジュール
/Class schedule
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)
Several book recommendations and other reading materials will be described in lectures
成績評価の方法・基準
/Grading method/criteria
Class activities: 14 %
Exercise: 26 %
Midterm exam: 20 %
Final Exam: 40 %
履修上の留意点
/Note for course registration
Automata theory
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
Will be given in lecture


Open Competency Codes Table Back

開講学期
/Semester
2024年度/Academic Year  4学期 /Fourth Quarter
対象学年
/Course for;
3rd year
単位数
/Credits
3.0
責任者
/Coordinator
NISHIDATE Yohei
担当教員名
/Instructor
NISHIDATE Yohei, KITAZATO Kohei, LIU Yong
推奨トラック
/Recommended track
先修科目
/Essential courses
MA01 Linear Algebra I
MA02 Linear Algebra II
MA03 Calculus I
MA04 Calculus II
PL03 JAVA Programming I
FU01 Algorithms and Data Structures I
更新日/Last updated on 2024/01/26
授業の概要
/Course outline
This course provides basics of numerical methods. Applications of numerical methods in all main areas of floating-point computing are covered. The course focuses on ideas and techniques that are widely used in Computational Science.
授業の目的と到達目標
/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-AL-002-1, C-AR-008, C-AL-005-1, C-AL-008

Students who successfully complete this course will be able to: demonstrate an understanding of the main numerical methods; develop computer programs based on numerical methods; use methods of numerical analysis in practical problems.
授業スケジュール
/Class schedule
1: Introduction. Computer Precision
- Introduction to numerical analysis
- Floating-point representation
- Determination of computer parameters

2: Errors of Floating-point Computations
- Loss of significance
- Error propagation
- Function evaluation

3: Zero of a Function
- Bisection method
- Newton's method
- Newton's method for nonlinear system of equations

4: Linear Algebraic Equations
- Vectors and matrices
- Gauss elimination
- LU decomposition

5: Matrix Inversion. Matrix Eigenvalues
- Determinant of a matrix
- Matrix inverse
- Eigenvalues of a matrix. Jacobi diagonalization

6: Interpolation and Curve Fitting
- Lagrange polynomials
- Newton polynomials
- Least-squares curve fitting

7: Spline Interpolations
- Piecewise cubic spline
- B-spline

8:  Mid-term Examination

9: Numerical Differentiation and Integration
- Forward difference and central difference
- Numerical integration. Trapezoidal rule
- Simpson’s rules
- Gauss quadrature

10: Ordinary Differential Equations
- Euler’s method
- Predictor-corrector method
- Runge-Kutta methods
- First-order systems

11: Partial Differential Equations
- Finite difference method
- Laplace equation
- Poisson equation
- Derivative boundary conditions

12: Methods for Sparse Matrices
- Matrix storage
- Direct solution methods
- Iterative methods

13: Random Number Generation and Monte Carlo Method
- Linear Congruential Generators
- Integration by Monte Carlo Method

14: Review
教科書
/Textbook(s)
Lecture notes
成績評価の方法・基準
/Grading method/criteria
Prerequisites: C Programming, Algorithms and Data Structures.
Related courses: Calculus, Linear Algebra, Java Programming.
履修上の留意点
/Note for course registration
Exercises 50%.
In class testing 20%
Final examination 30%.
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
数値で学ぶ計算と解析,金谷健一,共立出版.


Open Competency Codes Table Back

開講学期
/Semester
2024年度/Academic Year  1学期 /First Quarter
対象学年
/Course for;
3rd year
単位数
/Credits
3.0
責任者
/Coordinator
YOSHIOKA Rentaro
担当教員名
/Instructor
YOSHIOKA Rentaro, PAIK Incheon, PEI Yan, VILLEGAS OROZCO Julian Alberto, Idnin Pasya Bin Ibrahim, SAXENA Deepika, LE Doan Hoang, KONO Yukiko
推奨トラック
/Recommended track
先修科目
/Essential courses
Courses preferred to be learned prior to this course (This course assumes an understanding of entire or partial content of the following courses)
PL03 Programming JAVA I
更新日/Last updated on 2024/01/24
授業の概要
/Course outline
Software Engineering is a field concerning technologies and methods related to software development. It is about how software should be built and how it should be managed and includes a wide range of both theoretical and practical knowledge. As the presence of software in our daily lives seems only to increase, the importance of software engineering is also increasing. It is also one of the fundamental knowledge of software that any engineer in the IT field should understand.
In this course, we first study the processes involved in making software and understand how they affect the final product. We consider issues that need to be solved for each stage of the process and visit related technologies and available methods. The goal of presenting available technologies and methods is to understand the issues and their representative solutions. Both historical and cutting-edge technologies will be introduced as necessary. We will not cover the differences that arise with different forms of software (such as embedded, web-based, parallel, etc.) but focus on more general and common aspects.
In summary, this course focuses on understanding the knowledge and technology sets comprising Software Engineering.
In exercises, to help them understand basic knowledge, students will work on concrete exercise problems. Each exercise class covers one stage of the development process, and the work required in each stage will be covered individually. Each exercise is designed with a real-world application in mind, so it is possible to realize issues that are difficult to notice only by theory and basics. After completing all the exercises, students will experience a typical development process and understand its role and effects.
授業の目的と到達目標
/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-SE-001, C-SE-002

1. Be able to explain the knowledge and technologies involved in Software Engineering
2. Be able to explain the typical stages of a development process and explain their characteristics and issues involved.
3. Be able to develop an application by employing a typical process and model
授業スケジュール
/Class schedule
Class 1
Lecture : Introduction to Software Engineering
Exercise : Orientation and Requirements Definition 1
Class 2
Lecture: Processes & Requirements Definition
Exercise : Requirements Definition 2
Class 3
Lecture : Requirements Definition 2
Exercise : Requirements Phase - Feedback & Self-check
Class 4
Lecture : Requirements Definition 3
Exercise : Analysis 1
Class 5
Lecture : Analysis – Architectural Design
Exercise : Analysis 2
Class 6
Lecture : Analysis – Architectural Design 2
Exercise : Analysis 3
Class 7
Lecture : Analysis – Architectural Design 3
Exercise : Analysis – Feedback & Self-check
Class  8
Lecture : Design – Module Design
Exercise : Detailed Design 1
Class 9
Lecture : Design – Modules Design 2
Exercise : Detailed Design 2
Class 10
Lecture : Design – Module Design 3
Exercise : Detailed Design 3
Class 11
Lecture : Programming
Exercise : Detailed Design Phase – Feedback & Self-check
Class 12
Lecture : Test
Exercise : Development & Test
Class 13
Lecture : Unit Test, Integration Test, and System Test
Exercise : Development & Test
Class 14
Lecture : Summary & Future Perspective
Exercise : Development & Test Phase – Feedback & Self-check
教科書
/Textbook(s)
Software Engineering Theory and Practice, Shari Lawrence Pfleeger and Joane M.Atlee, Prentice Hall
Handouts for each lecture and exercise will be downloadable from the UoA Moodle site.
Related reading material will be instructed during lectures.


成績評価の方法・基準
/Grading method/criteria
1. Quiz 15%
2. Final Examination 50%
3. Exercise 35%
*Exercises are evaluated by the level at which they satisfy the task's requirements.
* Exercises are expected to be submitted during class. The final due date of each exercise is at 23:59 of the day before the next lecture.
*Final exam will also include problems to check understanding of the exercise topics.
*Attendance will be checked by submission of quizzes.
履修上の留意点
/Note for course registration
・All exercises should be performed individually (Is not teamwork).
・Discussions with fellow students are recommended, but copying the work of others is strictly prohibited and will be penalized.
・Students are requested, if necessary, to self-study necessary knowledge and skills (including details of UML, Java, Astah) outside of course hours.
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
Course material, exercise submissions, quizzes, and QA are provided through the UoA Moodle page.

The course instructor has working experience: A company employee working on development projects will create weekly exercises and provide review and advice to student work throughout the course.
A currently active software engineer (with more than 30 years’ experience) and faculty with previous software development experience (including practical software development in industry) will jointly provide lectures and exercises.


Open Competency Codes Table Back

開講学期
/Semester
2024年度/Academic Year  2学期 /Second Quarter
対象学年
/Course for;
2nd year
単位数
/Credits
3.0
責任者
/Coordinator
PYSHKIN Evgeny
担当教員名
/Instructor
PYSHKIN Evgeny, MOZGOVOY Maxim, VILLEGAS OROZCO Julian Alberto, YEN Neil Yuwen, OFUJI Kenta, FUJIMOTO Yusuke
推奨トラック
/Recommended track
先修科目
/Essential courses
This course is based on PL01 “Introduction to Programming” and PL02 “C Programming” courses delivering primary knowledge of programmable computational process and data type concepts.
更新日/Last updated on 2024/01/23
授業の概要
/Course outline
The course is focused on representing the following conceptual units (please see the class schedule for implementation details):
- Foundation Concepts necessary for introducing basic data management principles,
- Data modeling approaches, implementation and practical use.
- Methods and organization of data storage, versioning, distribution and backup.
- Accessing and storing data with using database systems and specialized data management systems.
- Knowledge about genesis of information systems and ability to create entity-relationship data models.
授業の目的と到達目標
/Objectives and attainment
goals
[Corresponding Learning Outcomes]
(A)Graduates are aware of their professional and ethical responsibilities as an engineer, and are able to analyze societal requirements, and set, solve, and evaluate technical problems using information science technologies in society.
(C)Graduates are able to apply their professional knowledge of mathematics, natural science, and information technology, as well as the scientific thinking skills such as logical thinking and objective judgment developed through the acquisition of said knowledge, towards problem solving.

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

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

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

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

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


Responsibility for the wording of this article lies with Student Affairs Division (Academic Affairs Section).

E-mail Address: sad-aas@u-aizu.ac.jp