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.