Software Engineering (SE) is an established discipline that comprises requirement analysis, design, construction, testing, as well as the economics, and management issues of the creation and maintenance of software. A SE has the special knowledge and skills necessary to develop and maintain large, complex software systems. A Software Engineer approaches all of these problems in a pragmatic and organized way and is concerned with the theoretical and practical aspects of technology, cost, and social impact of effective and efficient software. Degree programs in software engineering have many courses in common with computer science. However, when it comes to techniques concerned with the reliability of software and with developing and maintaining software that is correct from the start of its development, the engineering knowledge and experience provided in SE programs go beyond what general Computer Science programs provide. It is considered a necessity by many professionals and educators in the SE field that students of SE should participate in the development of software to be used in earnest by others.