----+++ Contents The IEEE Computer Society defines software engineering as <blockquote> The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. </blockquote> Thus software engineering comprises everything that is involved in building and maintaining software systems, including design and construction, manufacturing and distribution, project management, and human factors of software use and development. Many aspects of software engineering are adequately treated in the rest of the computer science curriculum, e.g., algorithms, data structures, programming languages, programming methodology, and software design. In this course we focus on those aspects of the software process that are required to turn programming into software development, i.e., the activities that are complementary to design and construction of software. This includes the following topics: * Software lifecycle * Software configuration management * Build management * Version management * Software deployment * Software logistics * Software process * Extreme programming * Validation and verification * Software inspection * Software testing * Software evolution * Software metrics * Software reuse These topics will be studied in theory in the form of lectures and papers, and in practice by means of lab exercises and a software project. ----+++ Literature Required reading for the course consists of the [[Guide to the Software Engineering Body of Knowledge]] and a series of software engineering research papers. All literature is accessible via the course website. ----+++ Course form The course consists of lectures, weekly paper reviews, lab exercises and a collaborative software project. ----+++ Prerequisites Students are expected to be mature programmers with some experience with project work. It is expected that students are able to acquire skills in new programming languages and environments (e.g., Linux, version management and build tools). ----+++ Exam form The final grade for the course is composed as follows: * 40% : average of grades for paper reviews * 20% : grade for lab exercise * 40% : grade for project To pass the course all three grades should be higher then 5.5. It is not possible to repeat the project. The lab exercise may be repeated, if it was turned in on time for the first deadline. Failing reviews may be compensated with reviews of new papers, only if all reviews were handed in.