AY 2015 Undergraduate School Course Catalog

Software Engineering

2016/02/01

Back
開講学期
/Semester
2015年度/Academic Year  後期 /Second Semester
対象学年
/Course for;
4th year
単位数
/Credits
3.0
責任者
/Coordinator
Vitaly V. Klyuev
担当教員名
/Instructor
Vitaly V. Klyuev , Yen Neil Yuwen
推奨トラック
/Recommended track
SE
履修規程上の先修条件
/Prerequisites
P6

更新日/Last updated on 2015/01/30
授業の概要
/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: A Web engineering process; Introduction to Rails on Ruby technology; Ruby vs. other languages;  Web application architecture; Building an Application; Finding your way around Rails; Designing and implementing an example application utilizing Ruby on Rails: a Depot Application; Tasks: Validation, Catalog display, Cart creation, A smarter cart; Universal Design for Web Applications: Google's Approach.

See the course page below for details and updates.
教科書
/Textbook(s)
Agile Web Development with Rails 4 by Sam  Ruby, Dave Thomas and Devis Hansson, The Pragmatic Bookshelf, 2013.
成績評価の方法・基準
/Grading method/criteria
The final grade will be calculated based on the following contributions:
Exercises - 40%,
Quizzes during lectures - 25%,
Final examination - 35%.
履修上の留意点
/Note for course registration
JAVA Programming II

Formal prerequisites:P6 JAVA Programming II
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
Course Web page


Back
開講学期
/Semester
2015年度/Academic Year  前期 /First Semester
対象学年
/Course for;
4th year
単位数
/Credits
3.0
責任者
/Coordinator
Subhash Bhalla
担当教員名
/Instructor
Subhash Bhalla , Wanming Chu , Junya Terazono , Maxim Mozgovoy
推奨トラック
/Recommended track
SE
履修規程上の先修条件
/Prerequisites

更新日/Last updated on 2015/02/02
授業の概要
/Course outline
It is a basic course related to Human-computer Interfaces.
It covers information Systems, Web systems Engineering, Human-computer interaction and IT. It considers how to present information and how to manage and implement scalable web applications.
授業の目的と到達目標
/Objectives and attainment
goals
The course covers concepts in Web Programming,  for web sites and user interaction. The course is focused on developers of large scale Web based systems.
It also covers basic knowledge at Programmer level.
授業スケジュール
/Class schedule
   The following topics are to be covered,
   -XML, XHTML, JavaScript, Perl, Perl CGI programming,
   -Common Gateway Interface (CGI), Alternative technologies,
    Web Server Configuration
   -HTTP, Proxies, Content Navigation

   -CGI (environment, variables, output)
   -Server side scripting with PHP, Web Services
   -Server side scripting with JSP

   -Security: Handling user input, encryption, data storage
   -Data Persistence: files, DBMS, Database Interface
   -Middleware and XML

   -Design: models, debugging of CGI Applications
   -Application Development environments

Lecture - Tuesday Period 3, M2
Exercise - Tuesday period 4, std1, std2

Quiz 1 (May 27) 30 Marks
Quiz 2,3 (June 21, July 12) 20,20 Marks
Exercise class (exercises+Homework) 30 Marks
Total Marks: 30 + 20 + 20 + 30 (100)
教科書
/Textbook(s)
Programming the World Wide Web 2013, (by Sebesta) 7th Edition, Pearson International Edition.
成績評価の方法・基準
/Grading method/criteria
Mid-term Examination(30 points); Two short quizzes (40 points (20 points each)
Web Programming Assignments(30 points)
履修上の留意点
/Note for course registration
1. If Absent: Please inform 'Student Affairs Division'
2. Please complete Hw+Exercises within 1 week
3. All Homework+Exercises(upto Quiz I) must be completed by May 25
4. All Homework+Exercises(after Quiz I) must be completed by July 13
5. Makeup Test (if absent during tests;
   and approved by University/instructor) on July 20
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
Useful Links:
Course directory for handouts and exercise sheets

References:
Book, Course material, slides and notes recommended by the instructor(s).


Back
開講学期
/Semester
2015年度/Academic Year  前期 /First Semester
対象学年
/Course for;
3rd year
単位数
/Credits
3.0
責任者
/Coordinator
Rentaro Yoshioka
担当教員名
/Instructor
Alexander P. Vazhenin , Incheon Paik , Vitaly V. Klyuev , Rentaro Yoshioka , Yan Pei , Hoshino T. (Nihon Unisys)
推奨トラック
/Recommended track
CM,CN,SE
履修規程上の先修条件
/Prerequisites
P3

更新日/Last updated on 2015/01/30
授業の概要
/Course outline
Software Engineering is a field concerning technologies and methods related to software development. It is about how software should be built, how they should be managed and includes a wide range of both theoretical and practical knowledge. As the presence of software in our daily life 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 the making of software and understand how they affect the final product. For each stage of the process, we consider issues that need to be solved and visit related technologies and methods that are available. In presentation of available technologies and methods, the goal 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 the understanding of 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 one-by-one. Each exercise is designed with a real-world application in mind 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
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
Week 1
Lecture : Introduction to Software Engineering
Exercise : Orientation and Requirements Definition 1
Week 2
Lecture: Processes & Requirements Definition
Exercise : Requirements Definition 2
Week 3
Lecture : Requirements Definition 2
Exercise : Requirements Phase - Feedback & Self-check
Week 4
Lecture : Requirements Definition 3
Exercise : Analysis 1
Week 5
Lecture : Analysis : Architectural Design
Exercise : Analysis 2
Week 6
Lecture : Analysis : Architectural Design 2
Exercise : Analysis 3
Week 7
Lecture : Analysis : Architectural Design 3
Exercise : Analysis : Feedback & Self-check
Week 8
Lecture : Design : Module Design
Exercise : Detailed Design 1
Week 9
Lecture : Design : Modules Design 2
Exercise : Detailed Design 2
Week 10
Lecture : Design : Module Design 3
Exercise : Detailed Design 3
Week 11
Lecture : Programming
Exercise : Detailed Design Phase : Feedback & Self-check
Week 12
Lecture : Test
Exercise : Development & Test
Week 13
Lecture : Unit Test
Exercise : Development & Test
Week 14
Lecture : System Test
Exercise : Development & Test
Week 15
Lecture : Summary & Future Perspective
Exercise : Development & Test Phase : Feedback & Self-check
教科書
/Textbook(s)
Handouts for each lecture and exercises will be downloadable from course web-sight.
Related reading material will be instructed during lectures.
成績評価の方法・基準
/Grading method/criteria
1. Quiz 5%
2. Final Examination 60%
3. Exercise 35%
*Exercises are evaluated by the level at which they satisfy the requirements of the task.
* Exercises are expected to be submitted during class. The absolute due date of each exercise is at 23:00 Tuesday of the following week.
履修上の留意点
/Note for course registration
*All exercises should be performed individually (Is not team work).
*Absence without lecturer’s permission will be penalized.

Formal prerequisites:P3 JAVA Programming I
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
http://borealis.u-aizu.ac.jp/classes/se1
Moodle http://sealpv0.u-aizu.ac.jp:20000/


Back
開講学期
/Semester
2015年度/Academic Year  後期 /Second Semester
対象学年
/Course for;
3rd year
単位数
/Credits
3.0
責任者
/Coordinator
Alexander P. Vazhenin
担当教員名
/Instructor
Alexander P. Vazhenin , Yutaka Watanobe
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites
SE3

更新日/Last updated on 2015/01/25
授業の概要
/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 course can be useful for undergraduate and graduate students. It may be used in general software engineering, software specification, software design and management. 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) and Visual Programming paradigm.
授業スケジュール
/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-8: Visual Programming Systems
Topics to study:
- Terminology
- Classification and Theory
- A Review of Visual Programming Systems

Lecture 9: Midterm

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

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

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

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

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

Lecture 15: 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
Software Engineering I, Programming I and II, Java Programming I and II

Formal prerequisites:SE3 Software Eng. I
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
1. Course WWW-site: http://sealpv0.u-aizu.ac.jp/moodle/
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
2015年度/Academic Year  前期 /First Semester
対象学年
/Course for;
4th year
単位数
/Credits
3.0
責任者
/Coordinator
Rentaro Yoshioka
担当教員名
/Instructor
Rentaro Yoshioka , Tatsuki Kawaguchi
推奨トラック
/Recommended track
SE
履修規程上の先修条件
/Prerequisites
P6

更新日/Last updated on 2015/01/30
授業の概要
/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 8-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 15, 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 (two 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
Divide roles among team members, prepare project management system, read RFP.

Week 2: Planning
Interview the customer and develop a plan of the development phases.

Week 3: Planning
Finalize project plan and obtain approval of 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: Requirements Definition
Analyze the problem carefully, derive clear and precise requirement, and obtain consent on the scope of the system with the customer.

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

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

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

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

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

Week 12: Development
Create source code of the software.

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

Week 14: Testing
Test the developed software.

Week 15: 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 individually by each team so progress may vary, but the dates of the interim and final reviews may not be changed.
教科書
/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 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
Important related courses: Software Engineering I, courses on programming (NOTE: these are not prerequisites.)
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 is subject to penalty in final assessment.

Formal prerequisites:P6 JAVA Programming II
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
http://borealis.u-aizu.ac.jp/classes/studio/


Back
開講学期
/Semester
2015年度/Academic Year  後期 /Second Semester
対象学年
/Course for;
3rd year
単位数
/Credits
3.0
責任者
/Coordinator
Maxim Mozgovoy
担当教員名
/Instructor
Maxim Mozgovoy
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites

更新日/Last updated on 2015/02/02
授業の概要
/Course outline
A distributed system is a collection of autonomous computers linked by a network, with software designed to produce an integrated computing facility. A distributed application consists of collaborating objects residing on separate nodes of a network. It is obvious now that distributed systems have become pervasive because many applications require the cooperation of two or more computers. Moreover, the design and implementation of such systems and corresponding software remain challenging and complex tasks. We believe that this computer science course should actively engage the students in exploring the concepts of distributed computing. The course content includes and characterizes Distributed Systems Architectures, Distributed Software Design Issues, Programming Models and Paradigms, explores their services and implementations.
授業の目的と到達目標
/Objectives and attainment
goals
At the end of the course the student should be able to:
- Estimate the features and metrics of the distributed applications and software.
- Distinguish advantages and problems of distributed computing.
- Explain some details of data parallel processing.
- Know how to design client-server applications.
- Show experience in parallel programming.

授業スケジュール
/Class schedule
1. Principles of the Distributed Software Engineering: Classifications, Metrics, and Design Issues,
2. Shared Memory Programming: Basic Concepts, Thread Models, Structured Shared-memory Programming, Distributed Shared-memory,
3. Message Passing Models: Inter-process Communications, MPI and PVM systems, SPMD/MPMD, Master/Slave and Divide/Conquer Paradigms,
4. Client-Server Computing: Models and Application Areas, Sockets, Code Mobility and Agents,
5. Distributed Object Architectures: DCOM, CORBA, Remote Method Invocation,
6. Special Topics of Distributed Software Engineering: Performance, Accuracy, High-Level Programming Models, Cluster and GRID Computing.

教科書
/Textbook(s)
Distributed Systems: Principles and Paradigms by Andrew S. Tanenbaum and Maarten van Steen, Prentice Hall, 2007,

Distributed Systems Concepts and Design by George Coulouris, Jean Dollimore and Tim Kindberg, Fourth Edition, Addison Wesley,2005

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
Students should be prompt for lectures, labs, and exams. Programming assignments must be turned in by the stated date and time. To pass this course, all the requirements must be satisfactorily completed.
The course final grade includes the following parts:

1. Lab Exercises: 20 points.
2. Homework: 30 points.
3. Exams: 50 points (at the middle and at the end of the 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 C/C++ and Java Programming, Algorithms and Data Structures, Object-Oriented Programming, Operating Systems.

Formal prerequisites:None
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
www.tinyurl.com/aizu-dc


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

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