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
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 software development, i.e., the
activities that are complementary to design and construction of software,
including the following topics:
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
Required reading for the course consists of
'A Handbook of Software and Systems Engineering
and a series of software engineering research papers.
The book should be ordered, pointers to the papers are available on the course website.
The course consists of lectures, weekly paper reviews,
and a collaborative software project.
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).
The final grade for the course is composed as follows:
- 30% : grade for maintaining a log of activities and paper reviews
- 30% : grade for project
- 40% : grade for final written exam
To pass the course all grades should be higher then 5.5. It is not possible to repeat the project. The exam may be repeated by a new exam.