AY 2017 Undergraduate School Course Catalog

Software Engineering

2018/01/30

Back
開講学期
/Semester
2017年度/Academic Year  3学期 /Third Quarter
対象学年
/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 2017/01/27
授業の概要
/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;
Where to go?

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.

Puntambekar A.A., Web Engineering, Technical Publications, 2012.

Mazin S. Al-Hakeem, Fundamentals of Web Engineering: An Engineering Approach to Develop Web Services, Contents and Environment under Standards Specification of Web Design, Lambert Academic Publishing, 2012.
成績評価の方法・基準
/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
2017年度/Academic Year  1学期 /First Quarter
対象学年
/Course for;
4th year
単位数
/Credits
3.0
責任者
/Coordinator
Subhash Bhalla
担当教員名
/Instructor
Subhash Bhalla, Wanming Chu, Maxim Mozgovoy
推奨トラック
/Recommended track
SE
履修規程上の先修条件
/Prerequisites

更新日/Last updated on 2017/02/01
授業の概要
/Course outline
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.
授業の目的と到達目標
/Objectives and attainment
goals
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.
授業スケジュール
/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
教科書
/Textbook(s)
Programming the World Wide Web 2016, (by Sebesta) 8th Edition,
   Pearson International Edition.
成績評価の方法・基準
/Grading method/criteria
Quiz 1 ( 30 Marks )
Quiz 2,3 ( 20,20 Marks )
Exercise class (exercises+Homework) 30 Marks
Total Marks: 30 + 20 + 20 + 30 (100)
履修上の留意点
/Note for course registration
  Background in Algorithms, Data Structures and Programming
参考(授業ホームページ、図書など)
/Reference (course
website, literature, etc.)
All lectures and exercises are supported by Slides, Notes and reading material as recommended by the Lecture/exercise teacher.


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

更新日/Last updated on 2017/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) 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
2017年度/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 2017/01/23
授業の概要
/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
2017年度/Academic Year  4学期 /Fourth Quarter
対象学年
/Course for;
3rd year
単位数
/Credits
3.0
責任者
/Coordinator
Maxim Mozgovoy
担当教員名
/Instructor
Maxim Mozgovoy
推奨トラック
/Recommended track
履修規程上の先修条件
/Prerequisites

更新日/Last updated on 2017/01/18
授業の概要
/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