This document provides an introduction to software engineering. It discusses why software engineering is needed due to the bitter reality that many software projects fail or do not meet requirements. Common reasons for failure include unclear requirements, unrealistic schedules and budgets, and weak communication between project stakeholders. The document introduces key aspects of software engineering including defined processes, documentation, and use of methods to improve communication and management of software projects. Finally, it discusses factors for successful projects including clear goals, user involvement, tools and qualified team members.