The discipline of software engineering has changed considerably since its introduction three decades ago. Although the principles remain the same, the context in which they are applied is continuously evolving. This module teaches principles and their application in a way that can help students learn new paradigms fast and catch up with inevitable changes of software development realities. It provides an introduction to process models, requirements elicitation and covers the principles and concepts relevant to software design. In CS2103, an introductory software engineering module, students learn the basic concepts and knowledge of software engineering in terms of the object oriented analysis and design. There are many other activities in software development process that every software engineer is expected to be well versed with. This module considers various activities in software development process, and emphasises software architectural design, design principles and best practices. It also prepares students with essentials to take on the role of software engineer in the industry by introducing them to the basics of software evolution and project management.