Un même matériel informatique peut remplir de nombreuses fonctions différentes par simple changement du logiciel qu’il exécute. Cette extraordinaire plasticité a permis à l’ordinateur de sortir des centres de calcul et de se répandre partout, des objets du quotidien aux infrastructures de la cité. Quels concepts fondamentaux sous-tendent cette prouesse technique ? Comment maîtriser l’incroyable et souvent effrayante complexité du logiciel ? Comment éviter les « bugs » de programmation et résister aux attaques ? Comment établir qu’un logiciel est digne de confiance ? À ces questions, la logique mathématique offre des éléments de réponse qui permettent de construire une approche scientifiquement rigoureuse du logiciel.