Software Engineering (SE) is a bridge connecting the basic concepts and principles of CS with the variety of users who can benefit from technologies based upon those principles. It includes the design and development of software systems which are effective, efficient, robust, maintainable, and maximally useful and usable. It also includes the design and development of techniques, processes and higher level tools by which these applications can be developed in a timely, cost effective and sustainable manner. At both levels it requires a systematic approach which deals with quantifiable measures of quality and effectiveness, as well as attention to the critical nature of the various products of the process. Therefore requires familiarity with the basic needs and processes in the various application domains, with the principles of good engineering practice and with the underlying concepts and principles of computer science. It requires expertise in problem analysis, solution design, program development, documentation and understanding of the ways in which humans interact with technological systems.