Keynote I - The New Generation of Algorithmic Debuggers (Josep Silva Galiana)
Algorithmic debugging is a debugging technique that has been extended to practically all programming paradigms. Roughly speaking, the technique constructs an internal representation of all (sub)computations performed during the execution of a buggy program; and then, it asks the programmer about the correctness of such computations. The answers of the programmer guide the search for the bug until it is isolated by discarding correct parts of the program. After twenty years of research in algorithmic debugging many different techniques have appeared to improve the original proposal. Recent advances in the internal architecture of algorithmic debuggers face the problem of scalability with great improvements in the performance thanks to the use of static transformations of the internal data structures used. The talk will present a detailed comparison of the last algorithmic debugging techniques analyzing their differences, their costs, and how can they be integrated into a real algorithmic debugger.
Keynote II - From Program Execution to Automatic Reasoning: Integrating Ontologies into Programming Languages (Alexander Paar) [slides]
Since their standardizations by the W3C, the Extensible Markup Language (XML) and XML Schema Definition (XSD) have been widely adopted as a format to describe data and to define programming language agnostic data types and content models. Several other W3C standards such as the Resource Description Framework (RDF) and the Web Ontology Language (OWL) are based on XML and XSD. At the same time, statically typed object-oriented programming languages such as Java and C# are most widely used for software development.
This talk will delineate the conceptual bases of XML Schema Definition and the Web Ontology Language and how they differ from Java or C#. It will be shown how XSD facilitates the definition of data types based on value space constraints and how OWL ontologies are amenable to automatic reasoning. The superior modeling features of XSD and OWL will be elucidated based on exemplary comparisons with frame logic-based models. A significant shortcoming will become obvious: the deficient integration of XSD and OWL with the type systems of object-oriented programming languages.
Eventually, the Zhi# approach will be presented that integrates XSD and OWL into the C# programming language. In Zhi#, value space-based data types and ontological concept descriptions are first-class citizens; compile time and runtime support is readily available for XSD and OWL. Thus, the execution of Zhi# programs is directly controlled by the artificial intelligence inherent in ontological models: Zhi# programs don't just execute, they reason.