Pr. Michel Raynal

Membre de l'Institut Universitaire de France
(French University Fellow)

My View
Professional Activities
Scientific Achievements
Un point de vue d'enseignant


1.  What is research? What is teaching? A personal view
Our job (professor) is how to combine research and teaching activities. This section presents personal views (that consequently are both partial and questionable). The style is voluntarily informal and I am conscious that the way this view is exposed is a little bit schematic or even provocative.

To me, “research” is an adventure, both personal and collective, of intellectual nature (it is not a joint venture ...). We are working in a scientific domain (basically, “informatics” can be abstracted as the science of operations), and our job is to set and answer questions (specifically, given a set of operations, what can be computed, and -if any- which is the best solution). More generally, our job is to think -within our scientific domain- for the long run.1 (I basically share the point of view expressed by Odeh Goldreich in his essai “On our duties as scientists” 2). For us, application domains are more important because they ask for new solutions, than for their today economical value. We never have to forget that “it is not by improving the candle technology that electrical lamps have been discovered, understood and mastered”.


□ For Henri Lebesgue (1875-1941) “teaching” was the activity of “penser à haute voix devant les étudiants” (to teach is to think in a loud voice in front of students”). It is not a quiz exercise. I share this view. Of course, new technologies (e.g. embedded in a new programming language) have to be taught, but ultimately, a pupil does not learn how to write in reading explanatory leaflets of washing machines, but in reading great authors from the literature. This means that our lectures have to provide the students with (1) enough food for their brain in order they be able to address and correctly solve the problems they will encounter, and (2) enough background knowledge and insight in order they still have a job in twenty years! As formulated  by Lamport: “Teaching is not an accumulation of facts”3.

□ Students are our “products”, and, due to what they learned, each generation of students gives rise to a new way of thinking when they are going to work in a company, each generation entailing its “small revolution” in the software industry. That is our main impact on the society. Each new student generation makes the industry moves to better knowledge and better practices. That is why teaching is fundamental. And the teaching activity is difficult because we have to teach in a way as simple as possible, and simplicity is very difficult to reach (as Blaise Pascal wrote “I am sorry for having written such a long letter, I had not enough time to write a shorter one”, and Albert Einstein wrote “Make it as simple as possible, but not simpler”). This motivated me to write books, and a great lot of survey papers on emerging topics.

2. My view of computer science and distributed computing

Informatics  can be defined as  the meeting  point between mathematics and  technology.  Roughly speaking, its two components,  computer science and computer engineering, can be seen as complementary facets: computer is to understand, computer engineering is to build. Said in other words, we are concerned with a science of abstraction, namely, creating the right model for a problem and devising the appropriate mechanizable techniques to solve it. This is specifically true in (fault-tolerant/dynamic/large-scale/etc.) distributed computing where finding models that are realistic while remaining abstract enough to be tractable, was, is, and still remains a real challenge.

Distributed computing was born in the late seventies when people started taking into account the intrinsic characteristics of physically distributed systems. The field then emerged as a specialized research area, distinct from networks, operating systems and parallelism. Its birth certificate is usually considered as the publication in 1978 of Lamport’s most celebrated paper “Time, clocks and the ordering of events in a distributed system”. Since then, several high level journals and (mainly ACM and IEEE) conferences are devoted to distributed computing.

□ Distributed computing arises when one has to solve a problem in terms of entities (usually called processes, agents, sensors, peers, actors, processors, nodes, etc.) such that each entity has only a partial knowledge of the many parameters involved in the problem that has to be solved. While parallelism and real-time might be characterized by the words efficiency and on time computing, respectively, distributed computing may be characterized by the word uncertainty. This uncertainty is created by asynchrony, failures, unstable behaviors, non-monotonicity, system dynamism, mobility, low computing capability, scalability requirements, etc.

□ Mastering one form or another of uncertainty is pervasive in all distributed computing problems 4.  As the aim of a theory is to codify knowledge in order it can be transmitted (to students, engineers, practitioners, etc), research in distributed computing theory is fundamental. When something works we must know why it works, and when something does not work ... we must know why it does not work.

3. Why research in distributed computing is fundamental

Looking to the past to appreciate the future

□ One of the main problems in the fifties, sixties and even seventies, was to produce efficient programs. It appears that to attain this goal, researchers have spent lots of efforts in establishing strong results in algorithms and formal languages. The benefit is obvious. The results in algorithms and formal languages allowed us to replace tricks by scientific solutions based on systematic approaches. Now, thanks to their lectures on formal languages and algorithms students know what can be done, what cannot be done, and what can be done efficiently.

□ The same analysis holds for lock-based concurrency. The problem of mastering multiprogramming was addressed in the late sixties and early seventies. Thanks to the work of Brinch Hansen, Dijkstra and Hoare (among others), basic concepts to master lock-based synchronization were developed (e.g., semaphores and monitors) and an associated methodology based on invariants was developed. Thanks to these results, students know how to manage and cope with multithreaded computing, and how to design and analyze multiprocess programs in failure-free environments.

□ Today, it is an obvious fact that languages and synchronization are useful, and, due to lots of associated results (e.g., the fact that the classes of deterministic FSA and the class of non-deterministic FSA are equivalent), that they are among the elements that set up informatics as a science5. We cannot imagine mastering object-oriented programming or software engineering without relying on the scientific background accumulated in language theory, synchronization and other basic domains. The actual advances in software engineering is (partially) an implicit output of these early results. >

□  The moral of the story is that we have to do today research adressing the basics of distributed computing if we want to be able to master future applications, to known what can be done, what cannot be done, what can be done efficiently, etc., despite physical program distribution, asynchrony, failures, mobility, dynamism, unstable behavior, scalability requirements, etc. We have to go from tricks to a scientific knowledge that can be transmitted to, and exploited by, engineers.

Why DC is fundamental

□ The computational universe surrounding us today is clearly very different from that envisioned by designers forty years ago. Even the most futuristic visions of that time of supercomputing and parallel machines (which have guided  the research and absorbed a consequent part of the research funding...) are far from today’s realities (computational realities). More specifically, computing devices are conquering the world. They are spreading out everywhere (and we could now nearly say that a high speed train or a plane is a sophisticated local area network with “additional devices”).

□ The today computational realities are characterized by communities of networked entities communicating with each other, cooperating towards common tasks or the solution to a shared problem,  or using common distributed resources to attain a specific goal, and acting partially in an autonomous way. Said, differently, the computational world is inherently distributed. So, mastering information science and information technology in the future goes through mastering distributed computing.

1  To better understand a part of the the duality researcher/engineer, I sometimes parallel it with the duality historian/journalist. The job of a historian is to analyze and relate events in time, in order to provide us with a continuous, consistent and global view of things that have happened. Differently, the job of a journalist is to relate (and sometimes analyze) the last events that occurred. Similarly to a historian, the job of a professor is to work and investigate scientific domains in order to provide the students with a deep and global view of these domains. Obtaining a view of a domain that allows to provide students with a deep scientific background requires a strong involvement in research. As for a journalist who, differently from a historian, works with “today” facts/inputs, the job of an engineer (differently from a theory researcher) depends highly on the current (perishable) technology. Of course, this view is a little bit schematic, but nevertheless captures a difference in two extreme behaviors encountered in the scientific and engineering communities working in informatics.

3   Teaching concurrency” (ACM Sigact NEWS, 40(1):58-62, 2009).

4  A foundational paper of distributed computing is the celebrated paper “Impossibility of distributed consensus with one faulty process” by Fischer M.J., Lynch N.A., and Paterson M.S., published in the Journal of the ACM, 32(2):374-382, 1985. This paper established the domain on sane foundations.

5  I have considered here only two domains (languages and synchronization). Of course, this list is not exhaustive. I could have taken similar examples in other domains such as databases, computability, algorithms, etc.