• This year SATToSE will feature 10 presentations, three keynotes, a tutorial, a hackathon, a field-trip to GRNET's data center and, last but not least, an Open Mic session.
  • Speakers of work in progress papers, tool demos and paper summaries will have 20 minutes for presentation and 10 minutes for discussions.
08:30 — 09:00 Registration
09:00 — 09:15 Welcome
09:15 — 10:30 Invited keynote: Diomidis Spinellis, Unix Architecture Evolution: Milestones and Lessons Learned
10:30 — 11:00 Coffee break
11:00 — 12:00 Hackathon: Introduction
12:00 — 13:00 Session 1: Testing
13:00 — 14:00 Lunch break
14:00 — 15:00 Invited keynote: Vadim Zaytsev, The Secret Evolution of Bad Languages
15:00 — 15:30 Coffee break
15:30 — 16:30 Session 2: Mining Software Repositories
17:00 — 20:00 City Tour
09:15 — 10:30 Invited keynote: Yannis Smaragdakis, Declarative Static Program Analysis: An Intelligent System over Programs
10:30 — 11:00  Coffee break
11:00 — 12:00 Session 3: Software Ecosystems
12:00 — 13:00 Session 4: Security
13:00 — 14:00 Lunch break
14:00 — 17:00 Field-trip to GRNET's Data Center and Super-computing Facility
17:00 — 19:00 Visit to the Acropolis
19:00 — 22:00 Conference dinner
09:00 — 11:00 Invited tutorial Panos Louridas, Python Bites Software Evolution
11:00 — 11:30  Coffee break
11:30 — 12:30 Session 5: Data & Model
12:30 — 14:00  Lunch break
14:00 — 15:00 Invited keynote Diomidis Spinellis, The Antikythera Mechanism: Hacking with Gears
15:00 — 15:30 Coffee break
15:30 — 17:00 Hackathon results, Open MIC, and Awards
17:00 — 19:00 Archeological Museum
07:00 — 19:00 Day-trip to Aegina island

Detailed Sessions and Talks


09:15 - 10:30

Keynote 1: Unix Architecture Evolution: Milestones and Lessons Learned

Diomidis Spinellis, Athens University of Economics and Business, Greece

Session Chair: Alexandre Bergel

The Unix operating system has had a profound influence on the development of open source software and associated communities. Many of today's systems trace their code or design to a 1970 unnamed operating system kernel, implemented in 2489 lines of PDP-7 assembly language. This evolved into the Unix operating system, whose direct descendants include today's BSD systems and intellectual heirs form the various GNU/Linux distributions.

How did the architecture of Unix evolve over the past half-century? Based on a GitHub repository recording the system's history from 1970 until today, a database recording the evolution of provided facilities, and the reconstruction of the Third and Fourth Edition Unix manuals, we will examine the most significant milestones of this development and the lessons we can learn. Many architectural features, such as layering, system calls, devices as files, an interpreter, and process management, were already visible in the 1970 version. Other ideas followed quickly: the tree directory structure, user-contributed code, I/O redirection, the shell as a user program, groups, pipes, and scripting. Later versions added domain-specific languages, environment variables, a documented file system hierarchy, software packages, virtual memory support, optimized screen handling, networking, storage pools, dynamic tracing, and a packet capture library. Based on a record of facilities documented over the years we will see areas in which evolution continues at an unchanged pace and areas where it appears stalled. We will also see how one measure of code complexity has followed a self-correcting path. Lessons we can derive from this amazing ride include the durability of early architectural features, the value of establishing conventions over the imposition of rigid mechanisms, the importance of additions made after the system's gestation, and the increasing difficulty of bringing about ground-breaking changes as Unix ages.

11:00 - 12:00

Hackathon: Introduction

By Michel Chaudron and Truong Ho-Quang, Chalmers and Gothenburg University, Sweden

What can you do with more than 15,000 UML diagrams collected from 5000 OSS projects? The hackathon is challenging you to use this dataset and answer some interesting research questions. You may find the detailed document about hackathon online.

You may find the hackathon presentation by Michel Chaudron online.

12:00 - 13:00

Session 1: Testing

Session Chair: Alexandre Bergel

Unit test generation using machine learning by Laurence Saes, Joop Snijder and Ana Oprescu. (Work in Progress)
Download the paper

Correctness Testing of Loop Optimizations in C and C++ Compilers by Remi van Veen, Marcel Beemster, Clemens Grelck
Download the paper

14:00 - 15:00

Keynote 2: The Secret Evolution of Bad Languages

Dr. Vadim Zaytsev

Session Chair: Gregorio Robles

People have not always known how to develop domain-specific languages. In fact, first examples of them date back all the way to the 1960s, almost half a century before disciplined software language engineering became a thing. Some of these languages - surprisingly many of them, actually - are still alive today in one form or another, and there are many companies that depend on them with their existence. These languages fall short on each of the aspects that make proper domain-specific languages shine, like notations appropriate for the domain or operating on a higher abstraction level. Their main claim to fame - improved development time - has slowly faded away as well, since an improvement with respect to the COBOL of the 1960s does not even guarantee any advantage against the modern COBOL, let alone properly designed software languages we have today, both in the general-purpose and domain-specific departments. These languages need to retire, but how?

In this lecture we will look very closely at some real "fourth generation programming languages" used either currently or until very recently by our customers, and consider several retirement strategies for them, those that work and those that do not work. The examples will be based on the projects Raincode Labs has been involved in the past and present.

15:30 - 16:30

Session 2: Mining Software Repositories

Session Chair: Tom Mens

On the Effect of Python Style Guide’s Line Length Limit: Does Code Become Less Readable? by Kevin Oliva-Muñoz and Gregorio Robles
Download the paper

Mining Productivity Influencing Factors — Explore and Visualise Software Repositories by Simon Schneider (Work in progress)


09:15 - 10:30

Keynote 3: Declarative Static Program Analysis: An Intelligent System over Programs

Prof. Yannis Smaragdakis

Session Chair: Michel Chaudron

It's the dream of most every programmer: a smart system that "knows more about my code than I do". How do we go about building it? I will argue for the benefits of using logic-based declarative languages as a means to specify static program analysis algorithms. Every aspect of complex program behavior (e.g., regular language features, reflection, exceptions, code generation) is captured by separate logical rules that cooperate to produce a model of what the code does. The result is "holistic" analysis: although every sub-analysis has its own concerns, everything is connected. Concretely, the focus will be on the Doop framework for analysis of Java programs, and especially on its latest developments. Doop encodes multiple analysis algorithms for Java declaratively, using Datalog: a logic-based language for defining (recursive) relations. With an aggressive optimization methodology, Doop also achieves very high performance—often an order of magnitude faster than comparable frameworks.

11:00 - 12:00

Session 3: Software Ecosystems

Session Chair: Vadim Zaytsev

What does the community think about Pythonic code? by Jose Javier Merchante Picazo and Gregorio Robles

Perils of Identity Merging (work in progress) by Damien Legay, Eleni Constantinou, Tom Mens, Gregorio Robles and Jesús González-Barahona. (Work in progress)

12:00 - 13:00

Session 4: Security

Session Chair: Alexander Bergel

On the impact of security vulnerabilities in the npm package dependency network by Alexandre Decan, Eleni Constantinou and Tom Mens.
Download the paper

MHEye: A Hybrid Android Security Assessment Tool for Ordinary Users by Mohammadreza Hazhirpasand

14:00 - 17:00

Field-trip to GRNET's Data Center and Super-computing Facility

GRNET (Greek Research and Technology Network) has a data center and super-computing facility in Athens. The HPC (High Performance Computing) Infrastructure, known as ARIS, has been ranked among the 500 most powerful computers in the world. We will visit the facility during this field-trip.

Don't forget to bring your hat and sunglasses.


09:00 - 11:00

Tutorial: Python Bites Software Evolution

Prof. Panos Louridas

Session Chair: Tom Mens

To study the evolution of software, we need to study data of various forms; extract them, transform them, analyse them, visualise them. Python comes to the rescue with a rich trove of tools and libraries that we can use, covering from data processing and presentation, to querying and advanced machine learning. This allows to carry out our tasks using a single language, instead of jumping through different hoops for different tasks. Moreover, the available tools offer very high-performance implementations of best of breed algorithms, typically written in C, but wrapped in Python so that we do not have to sacrifice convenience for speed. We will walk through these tools, gently introducing them yet without shying away from showing how we can use them to investigate software engineering data.

11:30 - 12:30

Session 5: Data & Model

Session Chair: Diomidis Spinellis

Software Analysis using Natural Language Queries by Pooja Rani

Towards Executable Domain Models by Nitish Patkar

14:00 - 15:00

'A pinch of history' talk: The Antikythera Mechanism: Hacking with Gears

Prof. Diomidis Spinellis

The Mechanism of Antikythera is an astronomical calculator dated in the first century B.C. Its currently agreed-on model consists of 35 gears. Its back face contains four dials tracing a luni-solar calendar and an eclipse prediction table. A number of interlocked gears calculate the ratios required for moving the four dials. The front face shows Sun's and Moon's position in the zodiac. The elliptical anomaly of the Moon is calculated by advancing one gear eccentrically through another, and by mounting that assembly on a gear rotating by the Moon’s long axis precession period. The mechanism’s design eerily foreshadows a number of modern computing concepts from the fields of digital design, programming, and software engineering.

The talk will briefly go over the mechanism's provenance and the modern history of its study, focusing on recent findings that an international cross-disciplinary team of scientists obtained through surface imaging and high-resolution X-ray tomography. The talk will offer a detailed explanation of the mechanism's operation by presenting a Squeak EToys-based emulator that is built and operates entirely on mechanical principles.


Aegina is one of the Saronic Islands of Greece in the Saronic Gulf, 27 kilometers from Athens. We recommend you to come with hat, sunglasses, sunscreen, and swimming suit.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License