Software Evolution

6 EC

Semester 1, period 2

5364SOEV6Y

Owner Master Software Engineering
Coordinator dr. L.T. van Binsbergen
Part of Master Software Engineering, year 1
Links Visible Learning Trajectories

Course manual 2025/2026

Course content

This course is designed around lab sessions in which we study real and large (open-source) software systems, written in languages like C, Java, PHP or Ruby. We use Rascal -a programming language workbench, or meta programming language- to apply and build software metrics, software analyses, software visualisations and (if time permits) software transformations. See http://www.rascal-mpl.org. The student is supported with introductory courses and interactive lab sessions while learning this new language in the beginning.

The course is supported by a series of lectures on the theory of software maintenance and evolution, guest lecturers from field experts, and a guided study of a number of research papers about maintenance, reverse engineering, reengineering and renovation. Example topics are clone detection, mining software repositories and refactoring.

Study materials

Syllabus

  • Reader consisting of selected papers on software evolution

Other

  • http://www.rascal-mpl.org: http://www.rascal-mpl.org
  • Potentially other (academic) sources

Objectives

  • Understand a wide range of challenges stemming from the fact that software is developed in large, dynamic teams, is subjected to changing requirements and needs to be adapted to new contexts
  • Apply language engineering and empirical software engineering techniques to large code-bases to analyse them using various software quality metrics (e.g. to measure maintainability)
  • Analyse scientific contributions from selected papers addressing the challenges in software evolution discussed in lectures and covered in practical assignments
  • Evaluate one's own implementation of a software analysis tool by experimenting with the implementation (e.g. tweaking parameters or implementation choices), drawing comparisons with alternative approaches in literature, and/or against a set of clearly specified requirements

Teaching methods

  • Lecture
  • Self-study
  • Computer lab session/practical training
  • Presentation/symposium

The format is focused on practical skills via the lab exercises, such as exploring source code and building tools, and academic skills via the paper self-study. Every week we start with a two hour lecture on the theory of software evolution, which is required to understand the material covered in the lab exercises. The rest of the day and the following day are lab hours. You also need to spend time every week to read about the academic papers and write for the academic writing assignment.

In this course we use the experimental programming language Rascal, which is (beta) open-source software and new to most students. On top of that we dive into many new topics for the students. Therefore the lab time is designed to be an integral and interactive part of the teaching, where the lecturer and the students are both present.

Learning activities

 

Activity

Number of hours

Zelfstudie

53

Lecture

16

Seminar

4

Presentation (giving/attending)

3

Laptop practical

92

Attendance

  • Some course components require compulsory attendance. If compulsory attendance applies, this will be indicated in the Course Catalogue which can be consulted via the UvA-website. The rationale for and implementation of this compulsory attendance may vary per course and, if applicable, is included in the Course Manual.
  • Assessment

    Item and weight Details

    Final grade

    1 (33%)

    Series 1

    1 (33%)

    Series 2

    1 (33%)

    Annotated Bibliography

    All parts of the assessment are weight equally. There is no minimum requirement for either individual part. There are no retake opportunities (except for personal/special circumstances communicated with the study advisor).

    Assignments

    The two practical assignments are executed in pairs (Series 1-2). The written assignment is executed individually (Annotated Bibliography)

    Fraud and plagiarism

    The 'Regulations governing fraud and plagiarism for UvA students' applies to this course. This will be monitored carefully. Upon suspicion of fraud or plagiarism the Examinations Board of the programme will be informed. For the 'Regulations governing fraud and plagiarism for UvA students' see: www.student.uva.nl

    Course structure

    See course reader.

    Additional information

    Recommended prior knowledge:

    • Advanced programming skills in several programming languages.
    • Knowledge of compiler construction (parsing, ASTs, basic code analysis, etc.).
    • Good (academic) English reading and writing skills.

    Contact information

    Coordinator

    • dr. L.T. van Binsbergen