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. |