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
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.
- The software lifecycle
- Formal requirements specification
- Design through specification languages
- Software construction tools
- Version management
- Build management
- Aspect oriented programming
- Static checking
- Dynamic checking (profiling)
- Empirical software engineering
Required reading for the course consists of a number of chapters of
Software Engineering 9 by Ian Sommerville
1-8, 10-17, 19, 21, 24, 25
In total this is about 550 pages. The information density is, however, quite low.
In addition, the slides of the course (including the guest lectures), the papers
you need to read, the assignments you make are also part of the material for the exam.
Note that the slides address many things not discussed in the book.
The course consists of lectures, doing paper reviews and doing practical assignments.
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.
The other practical assignments will take place in a computer lab, preferably in pairs, and
under supervision of students assistants.
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 and grading
The final grade for the course is composed as follows:
- 20% : grade for paper reviews
- 40% : grade for practical assignments
- 40% : grade for final written exam
All practical assignments are weighted equally, and all paper reviews are weighted equally.
To pass the course the exam grade should be 5.5 or higher, all other grades should be 4 or higher,
and the average should be higher than or equal to 5.5.
If you have not passed the course yet, you are allowed a 2nd chance exam (aanvullende toetsing) if, by replacing
your exam grade by a perfect score of 10, the smallest grade of the practical assignments by a perfect score
of 10, and the smallest grade of your paper reviews by a perfect score of 10, the condition for passing the course
are fulfilled. What constitutes the 2nd chance exam will be established individually for all who qualify to participate.
Note: a part of the course that you did not hand in at all, defaults to the grade zero.