AY 2021 Undergraduate School Course Catalog

Software Engineering

2022/01/30

Back

開講学期
/Semester
2021年度/Academic Year  2学期 /Second Quarter
対象学年
/Course for;
3rd year
単位数
/Credits
3.0
責任者
/Coordinator
YEN Neil Yuwen
担当教員名
/Instructor
YEN Neil Yuwen, NITTA Koyo
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites
使用言語
/Language
更新日/Last updated on 2021/02/07
授業の概要
/Course outline
Nowadays, the Web is not only the source of information for the end users. Companies migrate more of their business activities to Web based systems. We are facing increasing demands for professionals who can design large Web systems. Web engineering is a relatively new term in computer science. It can be defined as a discipline of systematic development of Web applications.
授業の目的と到達目標
/Objectives and attainment
goals
The aim of this course is to study current concepts and methods for Web application engineering.
授業スケジュール
/Class schedule
The main topics covered in the course are as follows:

Lecture 1
Introduction

Lecture 2
A Web engineering process

Lecture 3
Communication

Lecture 4:
Web App Architectures

Lectures 5 – 6:
Introduction to Dart Technology

Lectures 6 - 7:
Knockout.js Technology

Lecture 8 – 9:
Introduction to WordPress

Lecture 10:
A WordPress Blog

Lecture 11:
Responsive Web Design

Lecture 12:
Bootstrap vs.W3.CSS

Lecture 13
Universal Design for Web Applications: Google's Approach

Lecture 14
Where to go?

Course contents and the programming language may change due to the latest releases of related technology. More, if any, up-to-the-date information concerning web engineering application development will be shared to the students.
教科書
/Textbook(s)
No designated textbook is required but students are encouraged to follow the content of

The Modern Web: Multi-Device Web Development with HTML5, CSS3, and JavaScript by Peter Gasston, No Starch Press, 2013.
Dart 1 for Everyone Fast, Flexible, Structured Code for the Modern Web by Chris Strom, The Pragmatic Programmers, LLC., 2014.
Anatomy of a web application using node.js, ExpressJS, MongoDB & Backbone.js by Jason Crol, 2015.
Knockout.js: Building Dynamic Client-Side Web Applications by Jamine Munro, O’Reilly Media, 2015.
成績評価の方法・基準
/Grading method/criteria
The final grade will be calculated based on the following contributions:
Exercises - 45%,
Active Participation during lectures - 20%,
Final examination - 35%.
履修上の留意点
/Note for course registration
Formal prerequisites: JAVA Programming II


Back

開講学期
/Semester
2021年度/Academic Year  4学期 /Fourth Quarter
対象学年
/Course for;
3rd year
単位数
/Credits
3.0
責任者
/Coordinator
VAZHENIN Alexander P.
担当教員名
/Instructor
VAZHENIN Alexander P., WATANOBE Yutaka
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites
使用言語
/Language
更新日/Last updated on 2021/01/27
授業の概要
/Course outline
This course covers many current topics of interest in software engineering. Some of the topics covered are formal methods to specify requirements of software systems, software reuse, software maintenance, software maintenance models, and evaluation of processes, products, and resources. It includes Advanced Treatment of Selected Software Engineering issues: Software Maintenance, Software Configuration Management, Software Re-engineering, Managing People, Critical Systems Development, User Interface Design and Evaluation, Emerging Technologies like Visual Programming, Security Engineering, and other advanced topics including student presentation topic as well as student engineering topic.
授業の目的と到達目標
/Objectives and attainment
goals
The objective of the course is to impart knowledge to students about methods in software development. The methods range from how to precisely specify software requirements to how to evaluate the methods and their products and required resources. This is achieved in three parts: first, lectures are given on several current topics of interest; second, students are asked to make a presentation on a topic interesting to them; and third, students are given a programming project to design and implement a system using the Object-Oriented (Java).
授業スケジュール
/Class schedule
Lecture 1: The Nature of Software Engineering
Topics to study:
- How did software engineering become a term?
- Is there a good technical solution to software development problems?
- How and why are agile methods considered more people-affirming?
- Compare software engineering with other professions.

Lecture 2: Revisioning Software
Topics to study:
- Collaborative development problems,
- Revision control,
- VCS terminology,
- Collaborative development and conflict resolution.

Lecture 3: The Human Factors in Software Engineering
Topics to study:
- Human Diversity;
- Limits to Thinking;
- Knowledge Modeling;
- Personality Types;
- Human Factors Engineering.

Lecture 4: The Managing People and Team Work
Topics to study:
- Selecting and Motivating Staff
- Ego-less Programming
- Managing Groups
- The People Capability Maturity Model

Lecture 5-6: User Interface Design and Evaluation
Topics to study:
- User Interface Design Principles
- User Interaction Styles
- Information Presentation
- GUI Features
- Message System Features
- System Documentation
- User Interface Design Process
- Interface Evaluation

Lecture 7: Visual Programming Systems
Topics to study:
- Terminology
- Classification and Theory
- A Review of Visual Programming Systems

Lecture 8: Midterm

Lecture 9: Software change: Maintenance and Architectural Evolution
Topics to study:
-Program evolution dynamics
-Software maintenance
-Architectural evolution

Lecture 10: Software re-engineering
Topics to study:
-Source code translation
-Reverse engineering
-Program structure improvement
-Program modularization
-Data re-engineering

Lecture 11: Critical systems development
Topics to study:
-Dependable processes
-Dependable programming
-Fault tolerance
-Fault tolerant architectures

Lecture 12: Software Security Engineering
Topics to study:
-Security concepts
-Security risk management
-Design for security
-System survivability

Lecture 13: Code Writing
Topics to study:
-Organization and Purposes
-Quality requirements
-Algorithmic complexity
-Methodologies
-Measuring language usage
-Debugging

Lecture 14: Student presentations
教科書
/Textbook(s)
1.Software Engineering, 5-9th editions by Ian Sommerville, publisher: Addision-Wesley
2.Human Aspects of Software Engineering by J.E. Tomayko and O. Hazzan, Charles River Media Inc., 2004
3. User Interface Design and Evaluation by D. Stone, C. Jarrett, M.Woodroffe, Sh. Mincha
4. Lecture notes distributed by the instructor will be developed from materials collected from books, journals and proceedings papers.
成績評価の方法・基準
/Grading method/criteria
Your final grade includes the following parts
1). All Lab Exercises: 50 points in total including:
* Presentation Topic: 20 points
* Engineering Topic: 30 points
- All reports submitted: 20 points
- The GUI Interface designed:10 points
2). Midterm Test: 25 points
3). Final Exam: 25 points
履修上の留意点
/Note for course registration
It would be good if students have knowledge about basics of Software Engineering, Programming in Java  and C.
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
The course instructor Alexander Vazhenin has practical working experience. He worked for the Computer Center of Siberian Division of the Russian Academy of Sciences for 15 years where he was involved in R&D of software design and operating systems. Based on his experience, he can teach the basics of Software Engineering.

1. Course WWW-site: http://sealpv2.u-aizu.ac.jp/
2. Software Engineering: A Practitioner's Approach, 4th edition by Roger S. Pressman, publisher: McGraw-Hill
3. B.B. Agarwal, S.P. Tayal, M. Gupta, Software Engineering & Testing, Computer Science Series.


Back

開講学期
/Semester
2021年度/Academic Year  前期 /First Semester
対象学年
/Course for;
4th year
単位数
/Credits
3.0
責任者
/Coordinator
YOSHIOKA Rentaro
担当教員名
/Instructor
YOSHIOKA Rentaro, KAWAGUCHI Tatsuki
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites
使用言語
/Language
更新日/Last updated on 2021/01/28
授業の概要
/Course outline
Students will develop software for real-world customers in teams and through the process deepen their understanding of software engineering.
In this course, each student team will receive a development request from a real customer. On average each team will consist of 3-10 students. Teams will start from listening to customers to request and defining requirements of the software. This will be followed by design, development, and test phases, and on Week 14, each team will present their project activity as well as the completed software, and finally deliver the software to the customer.
Professional software engineers will support each team as coaches to advice on practical development tasks. Every week, each team will report their progress to the coaches and lecturers. Meetings with customers will be held as required. The phases of the development will be controlled by specific deliverables that must be submitted in order to advance to the next phase. Teams will present at two review meetings (interim and final) where they must quantitatively analyze project work hours, accomplishments, and quality.
In order to deliver software that best satisfies customer requirements, including both functional and quality requirements, utmost creativity and effort is imperative. A considerable amount of outside classroom hours are spent to acquire necessary knowledge and skills as well as to revise work. Furthermore, self-motivated and proactive involvement by all members of the team is essential for a successful delivery.
授業の目的と到達目標
/Objectives and attainment
goals
1. The student understands the challenges related to developing software with specific functional and quality requirements, and the basic methods in solving them.
2. The student understands the necessity of project management in order to develop software under limited resources (people, time, equipment) , and experience the various methods related to each stage of development (requirements definition, design, development, test).
3. The student understands the need to quickly act in an uncertain real-world environment, such as identifying multi-disciplinary problems and accurate communication of information, and will learn basic methods.
Overall, the student will understand the difficulties (and rewards!) of developing practical software of respectable size.
授業スケジュール
/Class schedule
In each lecture (3 periods),
1. Progress report by each team (10 minutes)
2. Feedback on the reported content by lecturers
3. Short lecture on the week’s activity by lecturer
4. Meeting of team and customer
will be performed.

Week 1: Project Kickoff and Planning
Divide roles among team members, prepare project management system, receive overview of project background and requirements from client, and develop a plan of the project.

Week 2: Field Work
Visit client site to understand the problem and environment of the required solution. (Schedule is subject to client’s circumstances)

Week 3: Requirements Definition
Analyze the problem carefully, derive clear and precise requirement, and obtain consent on the scope of the system with the customer.

Week 4: Requirements Definition
Analyze the problem carefully, derive clear and precise requirement, and obtain consent on the scope of the system with the customer.

Week 5: Requirements Definition
Analyze the problem carefully, derive clear and precise requirement, and obtain consent on the scope of the system with the customer.

Week 6: Interim Review
The customer will examine the current progress and decide whether the team may proceed to the following phases.

Week 7: Analysis
Based on the results from requirements definition phase, logically analyze the requirements and plan a practical solution.

Week 8: Analysis
Based on the results from requirements definition phase, logically analyze the requirements and plan a practical solution.

Week 9: Design
Describe the structure and behavior of functions/objects of the system with consideration to programming.

Week 10: Design
Describe the structure and behavior of functions/objects of the system with consideration to programming.

Week 11: Development
Create source code of the software.

Week 12: Development
Create source code of the software, and begin testing.

Week 13: Testing
Test the developed software.

Week 14: Final review
The customer will evaluate the test results as well as other deliverable from design phase, and decide whether the software is valid for acceptance.

*Schedule management is performed by the teams so progress may vary, but the dates of the interim and final reviews cannot be changed. Teams are requested to actively prototype.
教科書
/Textbook(s)
Handouts will be provided as necessary.
成績評価の方法・基準
/Grading method/criteria
There is no exam. Performance will be assessed by the following items.
1. Presentation at interim and final review 25%
2. Quality of deliverables (Technical documents and software) 25%
3. Individual report 40%
4. Participation in class activities and attitude 10%
* Contribution of each student will be checked in weekly progress reports and project management system.
* Insights of customers and coaches will be taken into consideration for the assessment
* In the individual report, each student is requested to describe their activities and contribution in the project, answer questions related to knowledge of software engineering and project management involved.
履修上の留意点
/Note for course registration
• Pre-requisite courses
FU14 Introduction to Software Engineering
IE03 Integrated Software Exercise I
IE04 Integrated Software Exercise II
• Students are required to attend an individual interview with the lecturers before first lecture usually scheduled from last week of March.
• Necessary knowledge and skills vary depending on the nature of each project.
• Students are requested to self-study (individually or in teams, outside of classroom hours) any knowledge or skills as required to complete the project.
• Participation in all lectures and meetings is mandatory. Being absent, late, or leaving early without prior approval of lecturers are subject to penalty in final assessment.
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
https://www.u-aizu.ac.jp/enpit/record/2019_software.html
https://www.u-aizu.ac.jp/enpit/record/2018_software.html
https://www.u-aizu.ac.jp/enpit/record/2017_software.html

The course instructor has working experiences: Company employees working on development projects will review, evaluate, and provide advice to student development activity and work throughout the course.
Currently active software engineers (with more than 30 years’ experience) and faculty with previous software development experience will jointly provide lectures and exercises.



Back

開講学期
/Semester
2021年度/Academic Year  4学期 /Fourth Quarter
対象学年
/Course for;
3rd year
単位数
/Credits
3.0
責任者
/Coordinator
MOZGOVOY Maxim
担当教員名
/Instructor
MOZGOVOY Maxim
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites
使用言語
/Language
更新日/Last updated on 2021/01/22
授業の概要
/Course outline
Concurrent programs take advantage of modern multicore and multiprocessor machines to implement algorithms that run concurrently (in parallel) to achieve higher performance and better user experience. Distributed computing brings this idea to the next level, dealing with the systems made up of independent computers, linked by a network.

At the present time, both concurrent and distributed systems are widespread, due to high popularity of multicore machines and computer networks. However, the design and implementation of such systems and corresponding software remains a challenging task. We have to know how to coordinate independent processes to achieve high performance and avoid common pitfalls.

The goal of this course is to introduce the basics of concurrent and distributed systems design and implementation. We will cover a number of classical and modern approaches to this problem, paying special attention to the practical aspects of implementation using Java language.
授業の目的と到達目標
/Objectives and attainment
goals
At the end of the course the student should be able to:
- Understand the key advantages of concurrent and distributed systems and common problems the developers may encounter.
- Know different approaches to concurrent and distributed systems design, their advantages and disadvantages.
- Be able to implement simple concurrent and distributed systems using modern tools.
- Be aware of the historical perspective of the developments in this area, understand modern trends and technologies.
授業スケジュール
/Class schedule
1. Introduction
2. Basics of Concurrency
3. Synchronizing Processes
4. Introduction to Model Checking and Promela Language
5. Model Checking with SPIN and Linear Temporal Logic
6. From Shared-memory Model to Message Passing
7. Distributed Programming with MPI & Tuple Space Model
8. Types of Distributed Systems
9. Client-Server Programming
10. RMI: Distributed Objects in Java
11. Modern Concurrent Programming in Java
12. OpenMP Technology.
教科書
/Textbook(s)
- Distributed Systems: Principles and Paradigms by Andrew S. Tanenbaum and Maarten van Steen, Prentice Hall, 2007.

- M. Ben-Ari. Principles of Concurrent and Distributed Programming, 2nd Ed. Addison-Wesley, 2006.

- G. R. Andrews. Foundations of Multithreaded, Parallel, and Distributed Programming. Addision-Wesley, 2000.

- M. L. Liu, Distributed Computing: Principles and Applications, Addison-Wesley, 2004.
成績評価の方法・基準
/Grading method/criteria
The final grade is based on the following parts:

- Exercises (50% of the final score).
- Two exams (30% of the final score).
- Quizzes on lecture content (20% of the final score).

We keep strict deadlines in this course.
履修上の留意点
/Note for course registration
The presented course is not an introductory subject. It is intended for students who already have basic experience in programming such as Java Programming, Algorithms and Data Structures, Object-Oriented Programming, Operating Systems.


Back

開講学期
/Semester
2021年度/Academic Year  2学期 /Second Quarter
対象学年
/Course for;
3rd year
単位数
/Credits
3.0
責任者
/Coordinator
RAGE Uday Kiran
担当教員名
/Instructor
CHU Wanming, RAGE Uday Kiran
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites
使用言語
/Language
更新日/Last updated on 2021/02/02
授業の概要
/Course outline
Database Management System (DBMS, in short) is one of the fundamental courses in the field of computer science. In-depth knowledge on DBMS is critical to understand the advanced topics, such as data warehousing, data mining, artificial intelligence, big data analytics, cloud computing, machine learning, and deep learning.

In this course, the students will learn both theoretical and practical aspects of DBMS. The lecture classes facilitate the students to understand the theoretical concepts of DBMS. The exercise classes are intended to guide students in developing a real-world DBMS system.

Two periods of teaching + one period of exercise
授業の目的と到達目標
/Objectives and attainment
goals
Objective:
In this course, the students will understand the architecture of the database, types of databases, the methodology to design a database effectively, and the methods to query the database. The main goal of this class is to empower students with a skill set that can provide a competitive edge over others at their workplace.

Goals:
1. Enabling the students to choose an appropriate database system to satisfy their work requirements
2. Empowering students to develop their own database system
3. Facilitating students in developing cost-efficient queries

授業スケジュール
/Class schedule
Lecture topics:
1. Database System Concepts and Architecture
2. Data Modeling using Entity-Relationship Model and UML Modeling
3. Relational Algebra and Calculus
4. Structured Query Language-1 (Querying textual and numerical attributes)
5. Structured Query Language-2 (Querying spatial and temporal attributes)
6. Structured Query Language-3 (views, drivers, and other advanced topics)
7. MID-TERM EXAM
8. Functional Dependencies and Normalization
9. Data Storage and Indexing
10. Transaction Processing Concepts (ACID and BASE)
11. Database Recovery Techniques
12. Distributed Databases
13. Storing big data using HBASE-1
14. Storing big data using HBASE-2

Exercise topics:
1. Understanding SORAMAME air pollution data.
2. Developing ER-Schema for SORAMAME data
3. Developing SORAMAME database in Postgres (Part-1, with no spatiotemporal attributes)
4. Modifying SORAMAME database by incorporating spatiotemporal attributes
5. Adding the data into the base using JDBC drivers
6. Querying the data in Postgres -1
7. Querying the data in Postgres -2
8. Discussion on previous works
9. Optimizing SORAMAME database using Normalization
10. Creating views
11. Backup and restore of the SORAMAME database
12. Executing Spatial queries on the database
13. Visualizing spatial data using QGIS
教科書
/Textbook(s)
Fundamentals of database systems: ELMASRI and NAVATHE
成績評価の方法・基準
/Grading method/criteria
Mid-term: 15% of weightage
Classroom assignments: 10% of weightage
Final exam: 35% of weightage
Exercises: 40% of weightage


Back

開講学期
/Semester
2021年度/Academic Year  3学期 /Third Quarter
対象学年
/Course for;
3rd year , 4th year
単位数
/Credits
3.0
責任者
/Coordinator
RAGE Uday Kiran
担当教員名
/Instructor
RAGE Uday Kiran, NITTA Koyo
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites
使用言語
/Language
更新日/Last updated on 2021/02/02
授業の概要
/Course outline
Data Mining (DM) and Machine Learning (ML) are two sides of the same coin, which is knowledge discovery in data. DM puts the user at the center and focuses on providing an interpretable form of knowledge that exists in the data. On the contrary, ML puts accuracy at the center and focuses on black-box models to achieve high accuracy.

DM plays a crucial role in developing decision support systems or expert systems. In contrast, ML plays a pivotal role in recommender systems. An AI researcher should be familiar with both types of learning approaches.

Two periods of teaching + one period of exercise
授業の目的と到達目標
/Objectives and attainment
goals
Technological advances in the field of computer science have enabled organizations to collect voluminous data in databases. Useful knowledge that can empower end-users with competitive information is hidden in this voluminous data. Unfortunately, conventional statistical techniques are inadequate to extract knowledge hidden in this data. This scenario is called “Data Rich-Information Poor Situation” (or finding a needle in a haystack).  The field of data mining has emerged to address this problem in real-world applications.

Data mining represents a collection of techniques that aim to discover knowledge hidden in databases. Data mining techniques include pattern mining (or association rule mining), classification, clustering, and prediction.

In this course, the students will first understand the basic types of data and fundamental forms of the data. This understanding of data is critical to know the limitations of any data mining/machine learning technique. Next, students will learn about different data mining techniques. Finally, students will learn which data mining technique to apply to what type of data. The main goal of this class is to empower students with a skill set that can provide a competitive edge over others at their workplace.
授業スケジュール
/Class schedule
Lecture topics:
1. Introduction to Data Warehousing
2. Introduction to Data Mining
3. Frequent pattern mining
a. Apriori algorithm
b. ECLAT algorithm
4. Frequent pattern mining
a. Frequent pattern-growth
b. Rare Item Problem
5. Closed and maximal frequent pattern mining
6. Clustering techniques
a. Types of clustering techniques
b. K-means and Elbow method
7. Hierarchical clustering techniques
8. Density-based clustering techniques
9. Dimensionality reduction techniques
10. Classification techniques
a. Emerging and Jumping patterns
b. Associative classifiers
11. Classification techniques
a. Bayesian
b. Decision trees
12. Classification techniques
a. Lazy learners
13. Measures for evaluation
14. Prediction techniques

Exercise topics:
1. Assigning projects to students. Students have to code the algorithm presented in the paper.
2. Introduction to ARFF, WEKA, SPMF, and PAMI_Pykit
3. Executing Apriori and ECLAT algorithms on various databases and plots
4. Evaluating the FP-growth algorithm
5. Evaluation of Frequent pattern mining closed frequent pattern mining, and maximal frequent pattern mining algorithms
6. Clustering in WEKA - 1
7. Clustering in WEKA - 2
8. Discussion on project status
9. Dimensionality reduction using PCA
10. Classification in WEKA - 1
11. Classification in WEKA - 2
12. Classification in WEKA - 3
13. Presentation of the projects - 1
14. Presentation of the project - 2
教科書
/Textbook(s)
Data Warehousing and Mining: Han and Kamber
成績評価の方法・基準
/Grading method/criteria
Students will be graded based on the project and the final exam. The project carries 50% of weightage, 10% of weightage to classroom exercises, 25% of weightage of exercises, and the final exam has 15% of weightage.

In the project, a research article will be assigned to each student. Students have to write their own code for an algorithm presented in the report.


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

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