Software Engineering 1 – CS 2401
The course provides an in-depth exploration of key concepts and practices in the field of software engineering. It begins with an introduction to Software Engineering, covering the Software Development Life Cycle (SDLC), Software Requirements Engineering, Analysis, Software Design Architecture, Software Development Methodologies like Agile and Scrum. Students will gain hands-on experience with Software Testing, Quality Assurance, Software Maintenance, while understanding the importance of security, ethics, software evolution, cohesion, coupling, GRASP principles, UML diagrams, Git, GitHub, and software cost estimation. The course concludes with a focus on emerging trends, including DevOps, AI, Cloud-Native Software Engineering, preparing students for the evolving landscape of software development. Jenkins, GitLab CI, or Travis CI will be explored to enhance students’ knowledge of Continuous Integration practices.
Learning Objectives and Outcomes:
Program Learning Outcomes (PLOs):
1. Students will be able to provide a framework in applying strategies for the effective design of computing systems.
2. Students will be able to explain apply appropriate methods in the planning, development, and management of design projects 3. Students will be able to cover the knowledge and skills needed to analyze problems from multiple perspectives and seek resolution through multiple methods and tools.
4. Students will be able to apply mathematics methods effectively to analyze and resolve problems. 5. Students will be able to communicate effectively using well organized arguments and credible supporting evidence. 6. Students will be able to enhance a command of critical thinking with respect to computer ethics, privacy, and security.
Course Learning Outcomes (CLOs):
1. Describe the Fundamentals of Software Engineering, SDLC Models and Roles in Software engineering.
2. Identify the principles of Software Requirements and Design.
3. Compare Software Development Methodologies, understand Testing and quality assurance techniques.
4. Explain the process of Software Maintenance, Evolution, and discuss Ethical issues in software development.
5. Discuss Emerging Trends in Software Engineering like DevOps, AI-driven development, blockchain, and cloud-native architectures on modern software development.
Course Schedule and Topics
This course will cover the following topics in eight learning sessions, with one Unit per week. The Final Exam will take place during Week/Unit 9 (UoPeople time).
Week 1: Unit 1 – Introduction to Software Engineering and Software Development Life Cycle
Week 2: Unit 2 – Software Requirements Engineering and Analysis
Week 3: Unit 3 – Software Design and Architecture
Week 4: Unit 4 – Software Development Methodologies
Week 5: Unit 5 – Software Testing and Quality Assurance
Week 6: Unit 6 – Software Maintenance and Evolution
Week 7: Unit 7 – Software Quality Assurance, Security, and Ethical Considerations
Week 8: Unit 8 – Emerging Trends in Software Engineering (DevOps, Continuous Integration, AI in SE)
Week 9: Unit 9 – Final Exam
Learning Guide
The following outlines how this course will be conducted, with suggested best practices for students.
Week 1: Unit 1 – Introduction to Software Engineering and Software Development Life Cycle
● Watch/Read the reading assignments due 3rd – 4th day of the week (recommended)
● Discussion first response due 4th day of the week
● Discussion replies due 6th day of the week
● Self-quiz due 7th day of the week
Week 2: Unit 2 – Software Requirements Engineering and Analysis
● Watch/Read the reading assignments due 3rd – 4th day of the week (recommended)
● Assignment activity due 6th day of the week
● Self-quiz due 7th day of the week
Week 3: Unit 3 – Software Design and Architecture
● Watch/Read the reading assignments due 3rd – 4th day of the week (recommended)
● Discussion first response due 4th day of the week
● Discussion replies due 6th day of the week
● Assignment activity due 6th day of the week
● Self-quiz due 7th day of the week
● Graded quiz due 7th day of the week
Week 4: Unit 4 – Software Development Methodologies
● Watch/Read the reading assignments due 3rd – 4th day of the week (recommended)
● Discussion first response due 4th day of the week
● Discussion replies due 6th day of the week
● Assignment activity due 6th day of the week
● Self-quiz due 7th day of the week
Week 5: Unit 5 – Software Testing and Quality Assurance
● Watch/Read the reading assignments due 3rd – 4th day of the week (recommended)
● Discussion first response due 4th day of the week
● Discussion replies due 6th day of the week
● Assignment activity due 6th day of the week
● Self-quiz due 7th day of the week
Week 6: Unit 6 – Software Maintenance and Evolution
● Watch/Read the reading assignments due 3rd – 4th day of the week (recommended)
● Discussion first response due 4th day of the week
● Discussion replies due 6th day of the week
● Self-quiz due 7th day of the week
Week 7: Unit 7 – Software Quality Assurance, Security, and Ethical Considerations
● Watch/Read the reading assignments due 3rd – 4th day of the week (recommended)
● Assignment activity due 6th day of the week 7
● Self-quiz due 7th day of the week
Week 8: Unit 8 – Emerging Trends in Software Engineering (DevOps, Continuous Integration, AI in SE)
● Watch/Read the reading assignments due 3rd – 4th day of the week (recommended)
● Discussion first response due 4th day of the week
● Discussion replies due 6th day of the week
● Self-quiz due 7th day of the week
Week 9: Unit 9 – Final Exam
● Final exam due 7th day of the week