Hiroshima University Syllabus

Back to syllabus main page
Japanese
Academic Year 2025Year School/Graduate School School of Informatics and Data Science
Lecture Code KA238101 Subject Classification Specialized Education
Subject Name ソフトウェア工学I
Subject Name
(Katakana)
ソフトウェアコウガク1
Subject Name in
English
Software Engineering I
Instructor OKAMURA HIROYUKI
Instructor
(Katakana)
オカムラ ヒロユキ
Campus Higashi-Hiroshima Semester/Term 3rd-Year,  First Semester,  2Term
Days, Periods, and Classrooms (2T) Mon5-8:ENG 107
Lesson Style Lecture Lesson Style
(More Details)
Face-to-face
Lecture & practice 
Credits 2.0 Class Hours/Week 4 Language of Instruction B : Japanese/English
Course Level 3 : Undergraduate High-Intermediate
Course Area(Area) 25 : Science and Technology
Course Area(Discipline) 02 : Information Science
Eligible Students Third-year students
Keywords Software Engineering, Development Process, Design, Quality Assurance, Testing, Version Control, Software Maintenance, Team Development 
Special Subject for Teacher Education   Special Subject  
Class Status
within Educational
Program
(Applicable only to targeted subjects for undergraduate students)
Goals of this lecture are
(1) learn the knowledge on software development process
(2) learn the knowledge on software design
(3) learn the skill on modeling that is necessary for software design 
Criterion referenced
Evaluation
(Applicable only to targeted subjects for undergraduate students)
Program of Electrical,Systems and Information Engineering
(Abilities and Skills)
・Concepts, knowledge and methods which are the basis for studies related to electrical, systems, and information engineering.

Computer Science Program
(Comprehensive Abilities)
・D2. Ability to derive optimal system solutions based on abundant cutting-edge information technologies for cross-sectoral issues in a diversified and complicated information society.

Data Science Program
(Abilities and Skills)
・A. Information infrastructure development technology, information processing technology, technology that analyzes data and creates new added value.

Intelligence Science Program
(Comprehensive Abilities)
・D3. Ability to grasp complexly intertwined social needs and issues from a bird's-eye view and solve issues with a multifaceted perspective and analytical ability based on a wide range of knowledge in intelligent science. 
Class Objectives
/Class Outline
This course systematically covers the software development process from initial development to operation and maintenance. Students will learn the fundamentals of software development processes, design methodologies, and quality assurance principles. Practical skills such as version control, CI/CD, secure coding, and team development techniques will also be covered. The ultimate goal is to develop the ability to build software with a strong focus on quality. 
Class Schedule 1st Introduction to Software Engineering (Basic Concepts and Importance)
2nd Software Development Process (Lifecycle and Models)
3rd Requirements Definition and Specification Design (Functional/Non-functional Requirements, Use Cases, etc.)
4th Basics of UML and Design (Class Diagrams, Sequence Diagrams, etc.)
5th Object-Oriented Design (SOLID Principles, Responsibility Segregation, etc.)
6th Design Patterns I (Singleton, Factory, Strategy, etc.)
7th Design Patterns II (Adapter, Decorator, Composite, etc.)
8th Software Architecture (Monolithic, Microservices, etc.)
9th Version Control (Git, Branching Strategies, GitHub Usage, etc.)
10th Testing and Quality Assurance (V&V, Unit Testing, TDD, etc.)
11th Software Maintenance (Technical Debt, Refactoring, etc.)
12th Coding Standards and Secure Coding (Static Analysis, Vulnerability Countermeasures, etc.)
13th Comprehensive Exercise I (Team Development)
14th Comprehensive Exercise II (Team Development)
15th Summary (Review and Future Learning Guidance)


Reports and Final Examinations 
Text/Reference
Books,etc.
Basic (minimal necessary) materials are distributed as electronic files through LMS 
PC or AV used in
Class,etc.
Handouts, Microsoft Teams, Other (see [More Details])
(More Details) Visual Studio Code 
Learning techniques to be incorporated PBL (Problem-based Learning)/ TBL (Team-based Learning), Post-class Report
Suggestions on
Preparation and
Review
1st & 2nd Understand the overall software development process and compare different process models.
3rd & 4th Recognize the importance of specification design and review the basics of use case and class diagrams.
5th & 6th Consider the benefits of object-oriented design and think about appropriate applications of design patterns.
7th & 8th Organize different types of software architecture and learn criteria for selecting appropriate designs.
9th & 10th Practice Git operations and organize different types and purposes of testing.
11th & 12th Develop coding skills with a focus on maintainability and security.
13th & 14th Engage in team development while considering design, implementation, and review with quality in mind.
15th Reflect on the entire course and plan future learning strategies. 
Requirements This course assumes at least a basic understanding of programming, including:
• Basic syntax of C, Java, or Python
• Variables and data types (e.g., int, float, string, list)
• Control structures (if, for, while)
• Function definitions and calls (parameters, return values)
• Basic data structures such as arrays and lists

This course will be conducted in Japanese. 
Grading Method Grades will be determined based on assignments (50 points) and the final exam (50 points). A passing grade is awarded only if all the following conditions are met:
1. The assignment score is at least 25 out of 50 points.
2. The final exam score is at least 25 out of 50 points.
3. The total score (assignments + final exam) is at least 60 out of 100 points.

Failure to meet any of the above conditions will result in a failing grade. Additionally, missing any assignments may result in failure, even if the total score meets the requirements. 
Practical Experience Experienced  
Summary of Practical Experience and Class Contents based on it Software development 
Message - It is encouraged that students actively ask questions to the teacher and assistants.
- Please bring your laptop PC. 
Other The following topics will be covered in the lectures, but prior exposure will help with smoother understanding:
1. Basics of Object-Oriented Programming (Optional but Helpful)
• Concept of classes and instances
• Using class in Python/Java
• Defining and calling methods in Python/Java
2. Basics of Git (Optional but Helpful)
• Commands: git clone, git add, git commit, git push
• Experience using GitHub is beneficial

Although prior study of object-oriented programming and Git is helpful, these topics will be covered in the course, so prior knowledge is not required. However, students are expected to be familiar with basic programming syntax. 
Please fill in the class improvement questionnaire which is carried out on all classes.
Instructors will reflect on your feedback and utilize the information for improving their teaching. 
Back to syllabus main page