The "Software Development Process" course offers a deep dive into the integral facets of software engineering. Starting with the fundamentals of software architecture and systems engineering, students will learn how to analyze requirements and create system models effectively. The course emphasizes the critical role of software testing and introduces students to essential creational design patterns that enhance code organization. Additionally, learners will discover the importance of version control systems, focusing on practical skills to manage code revisions and collaborate efficiently. By the end of the course, participants will have a robust foundational knowledge to navigate the complexities of software development.
Overview
Syllabus
- Introduction to Software Architecture
- Define what software architecture is and why it matters. Explore foundational patterns, including MVC, layered, and event-driven architectures, to build intuition for structuring real-world systems.
- Introduction to Systems Engineering
- Systems engineering is an approach to design, develop and manage complex systems across their lifecycle, focusing on defining customer needs and then requirements, design, implementation and testing.
- Requirements Analysis and System Modeling
- Requirement analysis define what a system must do, while system modeling visualizes structure and behavior to ensure clear design, traceability, and successful development.
- Introduction to Testing in Software Development
- Learn why TDD exists, how it fits into modern software practices, and what types of tests (unit, integration, end-to-end) support a robust testing culture.
- Creational Design Patterns
- Apply creational patterns—Singleton, Factory Method, and Builder—to design flexible solutions where object creation should be separated from usage.
- What is Version Control
- Version control is an incredibly important part of a professional programmer's life. In this lesson, you'll learn about the benefits of version control and install the version control tool Git!
Taught by
Liam Stevens, Jose Cano, Laura Morinigo, Afreen Aliya, and Richard Kalehoff