The scientific activity of APR mainly develops around Algorithms and Languages and several projects exist, with many collaborations

+

The scientific activity of APR mainly develops around Algorithms and Languages and several projects exist, with many collaborations. We follow a dual approach to achieving safe and efficient applications by combining programming languages (design, implementation and program analysis tools) and algorithms (modeling, complexity analysis,random generation) through theory (formal approach in semantics and combinatorics) and practice (concrete objectives producing prototyping softwares and industrial applications).

The APR team is based on three axes following a common research theme around concurrency:

-

In the field of random generation of structures, Boltzmann model, which

+

- Combinatorics and Analysis of algorithms

-

comes from analytic combinatorics, shows to be particularly efficient for

+

- Languages and Tools for Critical Softwares and Web Applications

-

generating objects obeying complex constraints. The goal of the action "Random Generation" is to develop Boltzmann methods for the automatic generation of tests for intensive and large scale applications, particularly in the context of testing and checking software.

+

- Algorithms and Languages for Multicore Processors

+

+

<html><h3>Combinatorics and Analysis of algorithms</h3></html>

+

In the APR team, we develop combinatorial me- thods for analysing the performances of algorithms and randomly sampling complex structures. Our methods allow to quantify the complexity of algorithms and efficiently generate combinatorial objects. Our research both aims at extending the expressiveness of the models, and adapting the methods to real application domains : information retrieval in massive data, robustness tests or software validation, modeling of graphs, quantita- tive study of concurrency. We lead several ambitious projects such as non-uniform sampling, sampling with multi-parameter specifications, graph computing with GPU programming as well as quantitative analysis of programming languages.

-------------

-------------

-

<html><h3>Web, Languages and Coherence Action</h3></html>

+

<html><h3>Languages and tools for Critical Softwares and Web Applications</h3></html>

+

+

The APR team works also on design and implementation of programming languages from the point of view of expressiveness, reliability and efficiency. We aim at building a complete chain from computation models (processes calculus, type systems, static analysis, ...) to actual implementations. Theses works focus on two different application domains. On the one hand we are interested in the development of tools for the certification of critical systems (tests and static analysis by abstract interpretation). On the other hand, web-based technologies offers an excellent laboratory for new ideas, such as computational migration and synchronous-reactive programming for multi-tier applications. Both domains revolve around component-based systems which strongly benefit from a top-down vision (global control, type system, monitors, multi-tier design)

-

The goal of this action is to design and implement multitarget langages for the Web, compiled for client-server and database, with an objective of coherence. We both develop formal semantics for concurrent and distributed computing, and implement languages using these extensions to design Web applications.

-------------

-------------

-

<html><h3>Seminars and working groups</h3></html>

+

<html><h3>Algorithms and Languages for Multicore Processors</h3></html>

A real need for abstraction arose out of the democratization of parallelism and concurrency. These abstractions should facilitate parallel composition while allowing a compiler to generate efficient code for a given target architecture. These abstractions must also be clearly specified and allow the static analysis of a number of properties to ensure the safe execution of the programs created. The great strength of our team on this research theme is the complementarity of the work we have carried out in recent years. On the one hand, we have a recognized expertise concerning advanced algorithmics and parallel programming techniques, particularly in the shared memory model and data-parallelism. This concerns, on the one hand, the abstraction of the hardware, CPU and GPU, and the algorithms adaptation for these specific hardware and on the other hand the tools of static analysis by abstract interpretation for concurrent programs for shared memory models as well as for communicating processes. In a complementary way, we have studied concurrency and mobility based on π-calculus.