Sylvain Hallé's Homepage

My photo

Hello! My name is Sylvain Hallé and I am currently a Professor of Computer Science and the Canada Research Chair in Software Specification, Testing and Verification at Université du Québec à Chicoutimi, Canada. I started working at UQAC in 2010, after completing a PhD from Université du Québec à Montréal and working as a postdoc at University of California Santa Barbara.

I am always looking for good students for M.Sc. and Ph.D. projects. If you are interested, please have a look at my ongoing projects and do not hesitate to contact me.

A few quick links

Who am I?

Here are a few tidbits about me, in exactly 200 words. Want a detailed CV? Here's one (beware, it has more than 20 pages).

My research concentrates on automated testing of various types of software systems, runtime verification and stream processing. My teaching includes databases, network security, web programming.

Over the past 15 years, I have worked with many companies, including Ericsson, Ubisoft, Hydro-Québec, and Industrial Alliance. I have also done consulting for local lawyers offices, mostly on web security.

I earned five Best Paper Awards in international conferences. I am a double recipient of the Governor General's Academic Medal. I am also a Senior Member of both IEEE and ACM. I have also won a teaching award from my institution.

I am co-founder and current head of UQAC's Formal Computer Science Lab (called LIF). It has its own website; please visit it for the latest news about our team.

As a student in the early 2000s, I was part of a comic duet called Le Duo Tang; I produced TV shows, many radio skits, three full-length stage productions, and was involved in the creation of the SMAC project.

I write software for research but also for fun. I am the main author behind a few projects, such as TeXtidote and Beepbeep. I am also a longtime Linux enthusiast; I exclusively use free software.

An Overview of My Research

I like to wear many hats. My research interests, although diverse, are all interlinked. Click on the elements below to reveal a short description of each topic --each has about 100 words.

An "event stream" is anything that is formed of a sequence of data elements; for example, it can be produced from sensors, through logging instructions inserted inside a running program, or by many other kinds of systems. I develop theory and software related to the processing of these streams. This can be used for automated testing, realtime analytics, pattern detection. Most of my work is accomplished through BeepBeep, an open source Java library that I have been developing for many years, and which has been applied to dozens of use cases. I even published a (free) textbook on the subject.
I am interested in two elements of Computer Security. The first is the detection of suspicious behavior or attacks, which can be done by observing events produced by the system; for example, I have applied stream processing to detect policy violations in Java programs. The second element is the protection of a log (or any other document) from retroactive manipulations of its history --that is, preventing someone from rewriting the past. I have developed Artichoke-X, a system that uses blockchains (yes, blockchains) to do so. I applied this theory to enforce lifecycle constraints on PDF documents without the need for a centralized trusted authority (EDOC 2016 Best Paper Award).
Testing a piece of software is often seen as a manual task. There are two ways one can help testers automate part of their work. First, one can develop what are called "oracles", which can determine by themselves whether a system passes or fails a test; for example, I developed a system called Cornipickle that can automatically spot UI bugs in web pages (ICST 2015 Best Tool Award). Second, one can develop tools that generate test cases by themselves. On this side, I am interested in techniques to generate sequences of interactions; this is supported by the SealTest library, on which lots of works remains to be done.
I call "traceability" the process of relating the outputs produced by a computation to the inputs that were given to it. For example, if one processes a file to produce a series of values, traceability would allow to determine what part of the file has contributed to what part of the output. It can prove an excellent way to understand how a piece of software produces its results. One application of this concept is to scientific reproducibility. My main contribution in this topic is the development of LabPal, a library that helps researchers design, process and package experiments that run on a computer. One feature of LabPal is precisely its built-in "provenance" constructs, as is illustrated in this YouTube video.

Other Research Links

Contact Me

Sylvain Hallé, Ph.D.
Department of Computer Science
Université du Québec à Chicoutimi
555, boul. de l'Université
Chicoutimi, Québec, G7H 2B1, Canada

shalle AT acm.org

sylvainhalle