Programming tools for intelligent systems


Thèse ou mémoire / Thesis or Dissertation

Date de publication

Autrices et auteurs

Identifiant ORCID de l’auteur

Contributrices et contributeurs

Direction de recherche

Publié dans

Date de la Conférence

Lieu de la Conférence

Éditeur

Cycle d'études

Maîtrise / Master's

Programme

Affiliation

Mots-clés

  • Kotlin
  • Docker
  • Outils de programmation
  • Programming tools
  • Systèmes de type
  • Type systems
  • Différenciation automatique
  • Automatic differentiation
  • Tests automatisés
  • Automated testing
  • Systémes embarqués
  • Embedded systems
  • Génie logiciel
  • Systèmes intelligents
  • Intelligent systems
  • Machines virtuelles
  • Virtual machines
  • ROS
  • Metamorphic testing
  • Programmation différenciable
  • Differentiable programming
  • Programmation probabiliste
  • Probabilistic programming
  • Software engineering
  • Programmation fonctionnelle
  • Functional programming
  • Compilateurs
  • Compilers
  • Generative modeling
  • Modélisation générative
  • Rétropropagation
  • Backpropagation
  • Fuzzing
  • Test métamorphique
  • Apprentissage automatique
  • Test de propriété
  • Metamorphic testing
  • Property-based testing
  • Analyse statique
  • Static analysis
  • Moteur de production
  • Build automation
  • Intégration continue
  • Continuous integration
  • Machine learning
  • Mathématiques appliquées
  • Applied mathematics
  • Langages de programmation
  • Programming languages

Organisme subventionnaire

Résumé

Les outils de programmation sont des programmes informatiques qui aident les humains à programmer des ordinateurs. Les outils sont de toutes formes et tailles, par exemple les éditeurs, les compilateurs, les débogueurs et les profileurs. Chacun de ces outils facilite une tâche principale dans le flux de travail de programmation qui consomme des ressources cognitives lorsqu’il est effectué manuellement. Dans cette thèse, nous explorons plusieurs outils qui facilitent le processus de construction de systèmes intelligents et qui réduisent l’effort cognitif requis pour concevoir, développer, tester et déployer des systèmes logiciels intelligents. Tout d’abord, nous introduisons un environnement de développement intégré (EDI) pour la programmation d’applications Robot Operating System (ROS), appelé Hatchery (Chapter 2). Deuxièmement, nous décrivons Kotlin∇, un système de langage et de type pour la programmation différenciable, un paradigme émergent dans l’apprentissage automatique (Chapter 3). Troisièmement, nous proposons un nouvel algorithme pour tester automatiquement les programmes différenciables, en nous inspirant des techniques de tests contradictoires et métamorphiques (Chapter 4), et démontrons son efficacité empirique dans le cadre de la régression. Quatrièmement, nous explorons une infrastructure de conteneurs basée sur Docker, qui permet un déploiement reproductible des applications ROS sur la plateforme Duckietown (Chapter 5). Enfin, nous réfléchissons à l’état actuel des outils de programmation pour ces applications et spéculons à quoi pourrait ressembler la programmation de systèmes intelligents à l’avenir (Chapter 6).


Programming tools are computer programs which help humans program computers. Tools come in all shapes and forms, from editors and compilers to debuggers and profilers. Each of these tools facilitates a core task in the programming workflow which consumes cognitive resources when performed manually. In this thesis, we explore several tools that facilitate the process of building intelligent systems, and which reduce the cognitive effort required to design, develop, test and deploy intelligent software systems. First, we introduce an integrated development environment (IDE) for programming Robot Operating System (ROS) applications, called Hatchery (Chapter 2). Second, we describe Kotlin∇, a language and type system for differentiable programming, an emerging paradigm in machine learning (Chapter 3). Third, we propose a new algorithm for automatically testing differentiable programs, drawing inspiration from techniques in adversarial and metamorphic testing (Chapter 4), and demonstrate its empirical efficiency in the regression setting. Fourth, we explore a container infrastructure based on Docker, which enables reproducible deployment of ROS applications on the Duckietown platform (Chapter 5). Finally, we reflect on the current state of programming tools for these applications and speculate what intelligent systems programming might look like in the future (Chapter 6).

Table des matières

Notes

Notes

Autre version linguistique

Ensemble de données lié

Licence

Approbation

Évaluation

Complété par

Référencé par

Ce document diffusé sur Papyrus est la propriété exclusive des titulaires des droits d'auteur et est protégé par la Loi sur le droit d'auteur (L.R.C. (1985), ch. C-42). Sauf si le document est diffusé sous une licence Creative Commons, il ne peut être utilisé que dans le cadre d'une utilisation équitable et non commerciale comme le prévoit la Loi (i.e. à des fins d'étude privée ou de recherche, de critique ou de compte-rendu). Pour toute autre utilisation, une autorisation écrite des titulaires des droits d'auteur sera nécessaire.