Principles of Software Engineering
💻

Principles of Software Engineering

★ Premium · 📖 98 lessons

Principles of Software Engineering is a practical, hands-on course designed to teach students how professional software is planned, designed, built, tested, deployed, and maintained. The course begins with software engineering fundamentals and development processes, then moves through requirements engineering, software design and modeling, object-oriented design, SOLID principles, design patterns, architecture, source control, maintainable code, testing, security, DevOps, cloud-native development, and AI-assisted software engineering. Students learn not only how software works, but how engineering practices help teams build systems that are reliable, maintainable, secure, and capable of evolving over time. Throughout the course, students apply these concepts through practical exercises and hands-on labs that mirror real software-development work. Activities include developing requirements and user stories, evaluating software designs, working with Git, creating automated tests, identifying security weaknesses, containerizing applications, building CI/CD workflows, and exploring modern cloud-native development practices. By the end of the course, students will have a broad understanding of the complete software development lifecycle and the engineering principles, tools, and professional practices used by modern software development teams.

← Back to Courses

Course Content

98 lessons
Module 1: Introduction to Software Engineering and Development Processes 7 items
1.1
What Is Software Engineering?
Video
1.2
The Software Development Life Cycle and Development Teams
Video
1.3
Risk, Failure, and Professional Responsibility
Video
1.4
Classic and Iterative Process Models
Video
1.5
Agile Software Development
Video
1.6
DevOps and Choosing a Methodology
Video
1.7
Introduction to Software Engineering and Development Processes Quiz
Quiz
Module 2: Requirements Engineering 5 items
2.1
Understanding Software Requirements
Video
2.2
Gathering and Expressing Requirements
Video
2.3
Managing Requirements Over Time
Video
2.4
Requirements, User Stories, and Acceptance Criteria for the Course Project
Lab
2.5
Requirements Engineering Quiz
Quiz
Module 3: Principles of Good Software Design and Modeling 10 items
3.1
From Requirements to Design
Video
3.2
Modularity and Information Hiding
Video
3.3
Core Design Principles
Video
3.4
Designing for Change and Recognizing Poor Design
Video
3.5
Introduction to Modeling and UML
Video
3.6
Behavioral and Structural Diagrams
Video
3.7
Data Models and Effective Documentation
Video
3.8
Analyzing and Improving Poor Software Design
Lab
3.9
Designing UML Diagrams for the Course Project
Lab
3.10
Principles of Good Software Design and Modeling Quiz
Quiz
Module 4: Object-Oriented Design and SOLID Principles 7 items
4.1
Object-Oriented Design Fundamentals
Video
4.2
Inheritance, Polymorphism, and Composition
Video
4.3
Interfaces and an Introduction to SOLID
Video
4.4
The Five SOLID Principles
Video
4.5
Applying SOLID in Practice
Video
4.6
Refactoring a Python Application Using SOLID Principles
Lab
4.7
Object-Oriented Design and SOLID Principles Quiz
Quiz
Module 5: Software Design Patterns 6 items
5.1
What Design Patterns Are and Why They Matter
Video
5.2
Creational and Behavioral Patterns
Video
5.3
Structural Patterns and MVC
Video
5.4
Using Patterns Wisely
Video
5.5
Implementing Design Patterns in Python
Lab
5.6
Software Design Patterns Quiz
Quiz
Module 6: Software Architecture 7 items
6.1
What Is Software Architecture?
Video
6.2
Classic Architectural Styles
Video
6.3
Monoliths, Services, and Microservices
Video
6.4
Event-Driven and Distributed Systems
Video
6.5
Architectural Quality and Tradeoffs
Video
6.6
Converting a Simple Application into a Layered Architecture
Lab
6.7
Software Architecture Quiz
Quiz
Module 7: Source Control and Collaborative Development 6 items
7.1
Why Source Control Matters
Video
7.2
Commits, Branches, and Merging
Video
7.3
Collaborative Git Workflows
Video
7.4
Versioning and Release Management
Video
7.5
Developing a Feature Using a Git Feature-Branch Workflow
Lab
7.6
Source Control and Collaborative Development Quiz
Quiz
Module 8: Writing Maintainable Software 7 items
8.1
Writing Clean Code
Video
8.2
Documentation and Standards
Video
8.3
Code Smells and Refactoring
Video
8.4
Managing Dependencies and Configuration
Video
8.5
Technical Debt and Code Quality
Video
8.6
Identifying Code Smells and Refactoring an Existing Application
Lab
8.7
Writing Maintainable Software Quiz
Quiz
Module 9: Software Testing and Quality Assurance 7 items
9.1
Why Software Testing Matters
Video
9.2
Levels of Testing
Video
9.3
Writing Effective Tests
Video
9.4
Automated Testing and Coverage
Video
9.5
Continuous Testing and Quality Assurance
Video
9.6
Building an Automated Python Test Suite
Lab
9.7
Software Testing and Quality Assurance Quiz
Quiz
Module 10: Secure Software Engineering 6 items
10.1
Security as an Engineering Responsibility
Video
10.2
Authentication, Authorization, and Data Protection
Video
10.3
Dependency and Application Vulnerabilities
Video
10.4
Security Testing and the Software Supply Chain
Video
10.5
Identifying and Correcting Security Weaknesses in a Sample Application
Lab
10.6
Secure Software Engineering Quiz
Quiz
Module 11: DevOps, Continuous Delivery, and Software Maintenance 10 items
11.1
What Is DevOps?
Video
11.2
Continuous Delivery and Deployment
Video
11.3
CI/CD Pipelines and Containers
Video
11.4
Infrastructure and Deployment Strategies
Video
11.5
The Software Maintenance Lifecycle
Video
11.6
Monitoring and Observability
Video
11.7
Managing Legacy Systems
Video
11.8
Containerizing the Project and Building a Simple CI Workflow
Lab
11.9
Modernizing a Small Legacy Application
Lab
11.10
DevOps, Continuous Delivery, and Software Maintenance Quiz
Quiz
Module 12: Cloud-Native and Distributed Software 6 items
12.1
Cloud Computing and Cloud-Native Applications
Video
12.2
Designing Stateless, Service-Based Systems
Video
12.3
Microservices and Event-Driven Systems
Video
12.4
Scalability, Resilience, and Distributed Data
Video
12.5
Designing a Cloud-Native Version of the Course Application
Lab
12.6
Cloud-Native and Distributed Software Quiz
Quiz
Module 13: AI-Assisted Software Engineering 7 items
13.1
AI in the Software Development Lifecycle
Video
13.2
AI-Assisted Requirements and Design
Video
13.3
AI-Assisted Testing, Debugging, and Refactoring
Video
13.4
Risks of AI-Generated Code
Video
13.5
Responsible and Human-Guided AI Use
Video
13.6
Using an AI Assistant to Analyze, Test, and Refactor an Application
Lab
13.7
AI-Assisted Software Engineering Quiz
Quiz
Module 14: Software Engineering as a Profession 7 items
14.1
Software Project Planning
Video
14.2
Managing Risk and Agile Planning
Video
14.3
Leadership and Communication
Video
14.4
Working on Software Teams
Video
14.5
Ethics and Responsibility
Video
14.6
Growing as a Software Engineer
Video
14.7
Software Engineering as a Profession Quiz
Quiz