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.