Course Description

Swe0607

Contents

The IEEE Computer Society defines software engineering as

The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software.

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 (large scale) software development focusing on topics not treated in sister courses like Modelleren en Systeemontwikkeling, Projectmanagement and Software Architecture.

In the lectures, I shall focus largely on two aspects: a formal approach to software engineering and the use of tools to alleviate many of the problems inherent in programming in the large. Finally, I shall make a short excursion to empirical software engineering.

Literature

Required reading for the course consists of Software Engineering 8 by Ian Sommerville, the slides of the course, and a number of software engineering research papers. Not all chapters of the book are material for the exam. For details consult the course schedule.

Note that the book is a somewhat more general, less UML-bound version of much of what was treated during the prerequisite course on Modelleren en Systeemontwikkeling. As a result, the slides of the course take a more formal and tooloriented approach that complement the contents of the book. Both should be read in preparation for the exam.

Pointers to the papers will be available from the course website. These papers will give a more in-depth and up-to-date view of selected topics from Software Engineering.

Course form

The course consists of lectures, doing paper reviews, doing practical assignments and reviewing (some of) the work of your fellow students.

You are expected to read the book by yourself, although selected parts of it will recur in the lectures. The book is largely a global overview of the field: comprehensive, but not very deep.

The paper reviews should be done individually and without assistance from the people involved in the course. The other practical assignments will take place in a computer lab, under supervision of students assistants.

Prerequisites

Students are expected to be mature programmers. 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:

  • 20% : grade for paper reviews
  • 40% : grade for practical assignments (and peer reviews thereof)
  • 40% : grade for final written exam

To pass the course all grades should be higher then 4, and the average should be higher than 5. It is not possible to redo the paper reviews or the peer reviewing: you may only redo the exam and/or one practical assignments.

Minimum effort to qualify for 2nd chance exam: You may only apply for 'aanvullende toetsing' if at most one of your grades is lower than 4. Additionally, under the conditions stated above, it should be theoretically possible to obtain a sufficient average grade.