| Academic Year |
2026Year |
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 processes, design, quality assurance, testing, configuration management, software maintenance. |
| 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) | 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 |
In this course, students will systematically learn the processes involved in software development, from development to operation and maintenance. The course covers fundamental concepts of software development, including development processes, design methods, quality assurance, configuration management, and secure coding. |
| Class Schedule |
Week 1 (Lecture 1–2) Overview of Software Engineering / Software Development Processes Week 2 (Lecture 3–4) Requirements Definition / Modeling Languages Week 3 (Lecture 5–6) Object-Oriented Programming / Class Diagrams Week 4 (Lecture 7–8) Object-Oriented Design / Design Patterns Week 5 (Lecture 9–10) Software Architecture / Module Design / Refactoring Week 6 (Lecture 11–12) Software Quality / Software Construction / Coding Standards / Secure Coding / Version Control Week 7 (Lecture 13–14) Software Testing / Test Design / Testability / Automated Testing Week 8 (Lecture 15) Other Topics in Software Engineering
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 |
Lectures 1–2 Understand the overall picture of software development and be able to compare the characteristics of representative development processes (e.g., waterfall and agile).
Lectures 3–4 Understand the role of requirements definition and review the basic concepts of modeling languages (UML) and how to read diagrams.
Lectures 5–6 Organize the main concepts of object-oriented programming (such as classes, inheritance, and polymorphism) and understand the basic notation of class diagrams.
Lectures 7–8 Understand the principles of object-oriented design and consider the purpose and appropriate use cases of typical design patterns.
Lectures 9–10 Review the fundamentals of software architecture and module design, and understand the purpose and benefits of refactoring.
Lectures 11–12 Understand software quality perspectives and review the basics of coding standards, secure coding, and version control.
Lectures 13–14 Organize the types and purposes of software testing and understand the basic concepts of test design and test automation.
Lecture 15 Review related topics in software engineering and consider how to apply them to future learning and practice. |
| 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
Although prior study of object-oriented programming is helpful, the topic 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. |