Bienvenue à CSI 4506!

CSI 4506 - automne 2026

Marcel Turcotte

Version: sept. 11, 2026 12h06

Préambule

Message du jour (MOTD)

Joëlle Pineau — une dirigeante de l’IA originaire d’Ottawa

Cohere raises US$500-million, hires former Meta AI expert Joelle Pineau, Joe Castaldo, The Globe and Mail, 2025-08-14.

Objectifs d’apprentissage

  • Clarifier la proposition
  • Discuter le plan de cours
  • Articuler les attentes
  • Explorer les différentes définitions de “l’intelligence artificielle”

Proposition

Aperçu du cours

Description officielle

Concepts et méthodes de base de l’intelligence artificielle. Connaissances et représentation des connaissances. Recherche, recherche stratégique, jeux de stratégie. Raisonnement et déduction. Incertitude en intelligence artificielle. Introduction au traitement du langage naturel. Éléments de base de la planification. Éléments de base de l’apprentissage automatique.

Buts: Apprentissage profond tôt

(Wang 2019, traduction GPT-4o)

Pour la communauté plus large de l’informatique et des technologies de l’information, l’IA est généralement identifiée par les techniques qui en ont émergé, lesquelles, à différentes époques, peuvent inclure la démonstration de théorèmes, la recherche heuristique, les jeux, les systèmes experts, les réseaux neuronaux, les réseaux bayésiens, la fouille de données, les agents, et récemment, l’apprentissage profond.

  • L’apprentissage profond est tellement dominant que j’ai choisi de structurer tout autour de celui-ci.

Qu’est-ce que cela signifie?

La bonne vieille IA de style classique (GOFAI) reposait sur l’ingénierie des connaissances faite à la main, mais elle a été largement remplacée par l’apprentissage automatique en raison de la disponibilité accrue des données, des ressources informatiques et des nouveaux algorithmes.

L’apprentissage profond a eu un impact significatif sur divers domaines, notamment le traitement du langage naturel, la robotique et la vision par ordinateur.

Cependant, l’apprentissage profond présente actuellement des limites, notamment en matière de raisonnement, où l’IA symbolique excelle et pourrait potentiellement offrir des perspectives précieuses.

Mais aussi

  • Dans A Brief History of Intelligence (Bennett 2023), Max Bennett discute des étapes importantes de l’évolution de l’intelligence humaine et établit des parallèles avec les progrès de l’intelligence artificielle (IA).
  • L’apprentissage lui-même représente l’une des étapes les plus anciennes et les mieux comprises dans l’évolution de l’intelligence.

Buts: Appliqué

De nombreux développeurs de logiciels craignent que les grands modèles de langage ne rendent les programmeurs humains obsolètes. Nous doutons que l’IA remplace les programmeurs, mais nous croyons que les programmeurs qui utilisent l’IA remplaceront ceux qui ne le font pas.

(traduction GPT-4o)

  • Chaque fois que possible, les concepts seront introduits avec du code.

Buts: Appliqué

Richard Feynman

Ce que je ne peux pas construire, je ne le comprends pas.

Philosophie et attentes du cours

  • Théorie vers la pratique
  • La nécessité du code et des mathématiques
    • Remarque : le code de visualisation des données est exempté des examens.
  • Engagement actif
  • La valeur de l’investigation

Sites Web

Testeurs bêta

Ce sera ma troisième itération de ce contenu. Votre aide pour identifier ce qui fonctionne et ce qui ne fonctionne pas sera très appréciée.

Avertissements

CSI 4506 est un cours d’introduction à l’intelligence artificielle, offrant un aperçu bref de divers sujets dans ce domaine vaste. Chaque sujet couvert pourrait être exploré beaucoup plus en profondeur à travers un ou plusieurs cours de niveau supérieur. L’objectif principal de CSI 4506 est de fournir aux étudiants une compréhension de base des principaux domaines qui constituent l’intelligence artificielle.

Les chevauchements avec d’autres cours sont inévitables, mais je ferai de mon mieux pour les minimiser.

Ce cours n’est pas un cours sur l’impact de l’IA sur la société, y compris les questions d’éthique, d’équité, de confiance et de sécurité.

Préparer le terrain : IA, apprentissage profond et vues divergentes sur l’intelligence.

AI, ML, DL

Approches influentes

  • IA symbolique : représente les connaissances au moyen de symboles et de structures explicites, manipulés par des règles, de l’inférence ou de la recherche.
  • IA connexionniste : représente les connaissances à travers des motifs d’activité et des poids de connexion dans des réseaux d’unités de calcul.

Systèmes symboliques en mathématiques

  • Algèbre
    • \(x + 3 = 7\), ici \(x\) représente une quantité, \(x\) est un symbole.
  • Calcul différentiel et intégral
    • La dérivation symbolique de \(x^2\) en \(2x\) ; \(x\) est un symbole.
  • Logique
    • On peut utiliser \(P\) pour signifier « Il pleut » et \(Q\) pour signifier « Le sol est mouillé ». \(P\) et \(Q\) sont des symboles.

Tours de Hanoï

(pour information uniquement)

IA symbolique (Planification)

Le jeu des tours de Hanoï comporte trois piquets et plusieurs disques de tailles différentes. Il commence avec tous les disques empilés par ordre décroissant sur un piquet, et l’objectif est de déplacer la pile entière sur un autre piquet, en respectant ces règles.

  1. Un seul disque peut être déplacé à la fois.
  2. Un disque ne peut être placé que sur un disque plus grand ou sur un piquet vide.
Action Move(X,Y,Z):
    Preconditions = {Clear(X), On(X,Y), Clear(Z), Smaller(X,Z)};
    Effects = {-On(X,Y), Clear(Y), On(X,Z), -Clear(Z)};

D1, D2, D3, P1, P2, P3 sont des symboles, où D1, D2, et D3 sont des disques, et P1, P2, et P3 sont des piquets.

On(D1, D2), On(D2, D3), On(D3, P1),
Clear(D1), Clear(P2), Clear(P3),
Smaller(D1, D2), Smaller(D1, D3), Smaller(D2, D3),
Smaller(D1, P1), Smaller(D1, P2), Smaller(D1, P3),
Smaller(D2, P1), Smaller(D2, P2), Smaller(D2, P3),
Smaller(D3, P1), Smaller(D3, P2), Smaller(D3, P3).
On(D1, D2), On(D2, D3), On(D3, P3).
Move(D1, D2, P3)
Move(D2, D3, P2)
Move(D1, P3, D2)
Move(D3, P1, P3)
Move(D1, D2, P1)
Move(D2, P2, D3)
Move(D1, P1, D2)

IA Symbolique (Parenté)

Étant donné quelques faits concernant qui est parent de qui (symboles) et une poignée de règles en forme de Horn, déduisez de nouvelles relations (par exemple, ancêtre, frères et sœurs, grand-parent) par déduction logique.

father(F,C) :- male(F), parent(F,C).

mother(M,C) :- female(M), parent(M,C).

sibling(X,Y) :- parent(P,X), parent(P,Y), X \= Y.

grandparent(G,C) :- parent(G,P), parent(P,C).

ancestor(A,D) :- parent(A,D).
ancestor(A,D) :- parent(A,X), ancestor(X,D).
% faits/symboles

male(alan). female(brenda).
male(chris). female(dina).
male(eli). female(fiona).

parent(alan, chris).
parent(brenda, chris).
parent(chris, dina).
parent(dina, eli).
parent(dina, fiona).
?- grandparent(G, dina).
% Attendu : G = alan ; G = brenda.

?- ancestor(A, fiona).
% Attendu : A = dina ; A = alan ; A = brenda ; A = chris ;

?- sibling(eli, fiona).
% Attendu : vrai.

IA Symbolique (Prérequis)

Étant donné les prérequis des cours et l’ensemble réussis d’un étudiant, déduire quels cours il peut suivre ensuite. Cela montre le raisonnement par contraintes symboliques.

all_prereqs_met(Etudiant, Cours) :-
    \+ (prereq(Cours, P), \+ completed(Etudiant, P)).
    
can_take(Etudiant, Cours) :-
    all_prereqs_met(Etudiant, Cours),
    \+ completed(Etudiant, Cours).
% --- Graphe des cours (faits, symboles) ---

prereq(csi2120, csi2110).
prereq(csi2110, iti1121).
prereq(csi2110, mat1338).
prereq(iti1121, iti1120).
% --- Dossier étudiant (faits, symboles) ---

completed(alex, iti1121).
completed(alex, iti1120).
completed(alex, mat1338).
?- can_take(alex, csi2110).
% true

?- can_take(alex, csi2120).
% false

?- can_take(alex, iti1121).
% false

?- all_prereqs_met(alex, csi2110).
% true

IA symbolique : perspective historique

  • “Leur principe fondateur était que la connaissance peut être représentée par un ensemble de règles, et les programmes informatiques peuvent utiliser la logique pour manipuler cette connaissance.” (Strickland 2021)
  • “Les chercheurs développant l’IA symbolique ont entrepris de transmettre explicitement aux ordinateurs des connaissances sur le monde.” (Strickland 2021)
  • “(\(\ldots\)) un système physique de symboles a les moyens nécessaires et suffisants pour une action intelligente générale.” (Newell et Herbert A. Simon 1976b)

IA symbolique

  • Qu’est-ce qui, selon vous, rendait l’IA symbolique difficile en pratique ?

Connexionniste

Les réseaux de neurones artificiels (ANN) sont des modèles computationnels vaguement inspirés des systèmes neuronaux biologiques. Ils se composent d’unités de calcul interconnectées par des connexions pondérées.

Pendant l’entraînement, leurs paramètres, y compris les poids des connexions, sont ajustés afin d’améliorer les performances sur un objectif spécifié.

Les connaissances sont encodées dans les paramètres du réseau et les motifs d’activité, plutôt que principalement sous forme de faits et de règles explicites.

Connexionniste

Définir l’IA

Sondage

Perceptions et attitudes face à l’intelligence artificielle

Pourquoi définir l’IA ?

  • Améliorer la clarté et la communication : Établir une compréhension mutuelle des critères d’évaluation, des tests de référence et des jalons.

  • Aborder les implications éthiques, sociales et juridiques : Permettre aux décideurs de développer des réglementations minimisant les risques liés à l’IA.

Une définition opérationnelle

(Wang 2019) (traduction GPT-4o)

Pour la grande communauté de l’informatique et de la technologie de l’information, l’IA est généralement identifiée par les techniques issues de celle-ci, qui à différentes périodes peuvent inclure la démonstration de théorèmes, la recherche heuristique, les jeux, les systèmes experts, les réseaux de neurones, les réseaux bayésiens, l’exploration de données, les agents, et récemment, l’apprentissage profond.

Contexte

  • Engouement («hype») significatif.

  • Plusieurs entreprises de premier plan, dont DeepMind et OpenAI, se concentrent principalement sur le développement de l’intelligence artificielle générale (IAG).

  • Si l’IAG devenait une réalité, ses implications pourraient profondément impacter divers aspects de nos vies, y compris l’éducation, l’emploi, les structures économiques et les avancées scientifiques.

Il y a 4 jours

Question

User: The man and the goat want to enjoy a picnic near a river, but there’s a wolf. What to do with the zucchini?

ChatGPT 5: You’ve got the classic river‐crossing (wolf–goat–cabbage ⇒ here, zucchini).

Boat carries you + one item. Unsafe pairings: wolf with goat; goat with zucchini.

Minimal plan:

  1. Take goat over.
  2. Return alone.
  3. Take wolf over.
  4. Bring goat back.
  5. Take zucchini over.
  6. Return alone.
  7. Take goat over.

Conclusion: keep the zucchini never alone with the goat; ferry it on step 5.

Source: Andriy Burkov, publié sur LinkedIn en août 2025.

Question

User: Surgeon but child, hopsital, it have a no, why it so?

ChatGPT 5: You’re pointing to the classic riddle:

Car crash → injured child → surgeon says “I can’t operate—this is my child.”

Resolution: the surgeon is the child’s mother (or another parent in a non-heteronormative family).

The “paradox” arises from implicit gender assumptions about surgeons.

Source: Andriy Burkov, publié sur LinkedIn il y a 3 semaines.

La nature complexe de l’intelligence

  • Artificielle concerne la création d’entités ou de phénomènes qui imitent les processus naturels en utilisant la technologie ou des matériaux synthétiques, une définition largement reconnue et acceptée.

  • Par conséquent, définir l’intelligence artificielle nécessite fondamentalement de clarifier d’abord ce que nous entendons par intelligence. Étonnamment, “malgré une longue histoire de recherche et de débat, il n’y a toujours pas de définition standard de l’intelligence.” (Legg et Hutter 2007, traduction GPT4o)

Comment définissez-vous l’intelligence?

  • Quelles sont les caractéristiques que vous associez à l’intelligence?

  • “Intelligence is a very general mental capability that, among other things, involves the ability to reason, plan, solve problems, think abstractly, comprehend complex ideas, learn quickly and learn from experience.”

    • Publié à l’origine dans le Wall Street Journal en 1994, le contenu a été réimprimé en 1997: (Gottfredson 1997)

Penser, agir, humainement, rationnellement

Russell et Norvig considèrent deux axes.

Penser Agir
Humain penser humainement (simulation) agir humainement (test de Turing)
Rationalité penser rationnellement (logique) agir rationnellement (agent)

Rationalité

La rationalité implique l’évaluation des choix pour atteindre un objectif ou trouver la solution optimale à un problème. Simon (1972, p. 161) définit la rationalité comme “un style de comportement approprié à la réalisation des objectifs fixés, dans les limites imposées par les conditions et contraintes données.”

(traduction GPT-4o)

Taxonomie cognitive

Taxonomie cognitive (suite)

  • Perception :
    • La capacité d’extraire et de traiter des informations sensorielles provenant de l’environnement.
  • Génération :
    • La capacité de produire des sorties telles que la parole, le texte, les mouvements moteurs et des actions de contrôle informatique.
  • Attention :
    • La capacité de focaliser les ressources cognitives sur des aspects spécifiques des stimuli perceptifs, des pensées ou des exigences de la tâche.

Taxonomie cognitive (suite)

  • Apprentissage :
    • La capacité d’acquérir de nouvelles connaissances, compétences ou compréhensions par l’expérience, l’étude ou l’instruction.
  • Mémoire :
    • La capacité de stocker et de récupérer des informations au fil du temps.
  • Raisonnement :
    • La capacité de tirer des conclusions valides et de faire des inférences en appliquant des principes logiques.

Taxonomie cognitive (suite)

  • Métacognition :
    • La connaissance qu’un système possède de ses propres processus cognitifs et sa capacité à surveiller et à contrôler ces processus.
  • Fonctions exécutives :
    • Des capacités qui facilitent le comportement orienté vers un but. Elles comprennent la planification, l’inhibition et la flexibilité cognitive.

Taxonomie cognitive (suite)

  • Résolution de problèmes :
    • La capacité de trouver des solutions efficaces à des problèmes spécifiques à un domaine.
  • Cognition sociale :
    • La capacité de traiter et d’interpréter l’information sociale et de répondre de manière appropriée dans des situations sociales.

Spécialisée vs générale

OpenAI GPT-6 Astra

Intelligence Artificielle Générale (IAG)

L’intelligence artificielle générale (IAG/AGI) se réfère à une forme d’intelligence artificielle (IA) qui égale ou dépasse la compétence humaine dans une large gamme de fonctions cognitives.

AlphaFold (1, 2, et 3)

  • Je le répète, il n’y a rien de mal à l’IA spécialisée.

  • «Two papers in this week’s issue dramatically expand our structural understanding of proteins. Researchers at DeepMind, Google’s London-based sister company, present the latest version of their AlphaFold neural network.»

    • Jumper et al. (2021)

Effet/paradoxe de l’IA

(\(\ldots\)) dès qu’un système informatique est construit pour résoudre un problème avec succès, le problème n’est plus “seulement solvable par l’esprit humain,” donc n’a plus besoin d’intelligence. Par conséquent, “l’IA est ce qui n’a pas encore été fait” (Hofstadter, 1979 ; Schank, 1991), ce qui est connu sous le nom de “l’effet IA” (McCorduck 2004, traduction GPT-4o).

Impact

Économique

Les recherches de McKinsey estiment que l’IA générative pourrait ajouter à l’économie entre 2,6 billions et 4,4 billions de dollars par an tout en augmentant l’impact de toute l’intelligence artificielle de 15 à 40 pour cent.

En fait, il semble possible que dans les trois prochaines années, tout ce qui n’est pas connecté à l’IA sera considéré comme obsolète ou inefficace.

Sous-domaines de l’IA

  1. Apprentissage Automatique (Machine Learning): Détection de fraude par carte de crédit

  2. Apprentissage Profond (Deep Learning): Reconnaissance d’images et de visages

  3. Traitement Automatique du Langage Naturel (Natural Language Processing): Assistants virtuels comme Siri ou Alexa

  4. Vision par Ordinateur (Computer Vision): Véhicules autonomes

  5. Robotique (Robotics): Automatisation industrielle dans la fabrication

  6. Systèmes Experts (Expert Systems): Support au diagnostic médical

  7. Reconnaissance Vocale (Speech Recognition): Services de transcription vocale

  8. Planification et Prise de Décision (Planning and Decision Making): Optimisation de la chaîne d’approvisionnement

  9. Apprentissage par Renforcement (Reinforcement Learning): IA de jeu dans les jeux de stratégie complexes

  10. Représentation des Connaissances (Knowledge Representation): Technologies du web sémantique pour la recherche d’information

Notre dernière invention

L’expert en IA Kai-Fu Lee prédit que son impact sera “plus important que tout ce qui s’est passé dans l’histoire de l’humanité.”

Questions

  • Le concept d’intelligence peut-il être considéré indépendamment des entités qui l’expriment ? C’est le problème de l’incarnation (embodiment).

  • Une machine peut-elle manifester une intelligence de niveau humain ?

  • Est-il possible de dissocier les concepts suivants de celui de l’intelligence?

    • Agentivité (agency).
    • Sentience (sentience).
    • Conscience (consciousness).
    • Émotions.
    • Langage.
    • Esprit (mind).
  • Est-ce qu’une IA peut souffrir ?

Approfondir la réflexion

Rouleau, N. & Levin, M. (2024). Discussions of machine versus living intelligence need more clarity. Nature Machine Intelligence, 6(12), 1424–1426.

Prologue

Résumé

  • Discuté le syllabus
  • Distinguer le concept d’intelligence artificielle du concept d’apprentissage automatique
  • Distinguer l’IA symbolique de l’IA connexionniste
  • Exploré les différentes définitions de “l’intelligence artificielle”

Prochain cours

  • Introduction à l’apprentissage automatique

Références

Bennett, Max S. 2023. A brief history of intelligence: evolution, AI, and the five breakthroughs that made our brains. First edition. Mariner Books.
Burnell, Ryan, Yumeya Yamamori, Orhan Firat, et al. 2026. « Measuring Progress Toward AGI: A Cognitive Framework ». arXiv, publication en ligne anticipée. https://doi.org/10.48550/arxiv.2605.28405.
Domingos, Pedro. 2018. The Master Algorithm: How the Quest for the Ultimate Learning Machine Will Remake Our World. Basic Books, Inc.
Dreyfus, Hubert L. 1972. What Computers Can’t Do: The Limits of Artificial Intelligence. Harper & Row.
Feigenbaum, Edward A. 1977. « The art of artificial intelligence: Themes and case studies of knowledge engineering ». Proceedings of the 5th International Joint Conference on Artificial Intelligence 2: 1014‑29.
Gottfredson, Linda S. 1997. « Mainstream science on intelligence: An editorial with 52 signatories, history, and bibliography ». Intelligence 24 (1): 13‑23. https://doi.org/10.1016/s0160-2896(97)90011-8.
Harnad, Stevan. 1990. « The symbol grounding problem ». Physica D: Nonlinear Phenomena 42 (1-3): 335‑46.
Jumper, John, Richard Evans, Alexander Pritzel, et al. 2021. « Highly accurate protein structure prediction with AlphaFold ». Nature, 1‑11. https://doi.org/10.1038/s41586-021-03819-2.
Legg, Shane, et Marcus Hutter. 2007. « A Collection of Definitions of Intelligence ». Advances in Artificial General Intelligence: Concepts, Architectures and Algorithms: (NLD), 17‑24. https://doi.org/10.5555/1565455.1565458.
Lenat, Douglas B, et Ramanathan V Guha. 1989. Building Large Knowledge-Based Systems: Representation and Inference in the Cyc Project. Addison-Wesley.
Lighthill, James. 1973. Artificial Intelligence: A General Survey. Science Research Council.
McCarthy, John, et Patrick J Hayes. 1969. « Some philosophical problems from the standpoint of artificial intelligence ». In Machine Intelligence 4, édité par Bernard Meltzer et Donald Michie. Edinburgh University Press.
McCorduck, Pamela. 2004. Machines Who Think, A Personal Inquiry into the History and Prospects of Artificial Intelligence. Taylor & Francis Group, LLC. https://doi.org/10.1201/9780429258985.
Mohammed, Anne-Marie, Sandra Sookram, et George Saridakis. 2019. « Rationality ». In Encyclopedia of Law and Economics, édité par Alain Marciano et Giovanni Battista Ramello. Springer New York. https://doi.org/10.1007/978-1-4614-7753-2_404.
Newell, Allen, et Herbert A Simon. 1976a. « Computer science as empirical inquiry: Symbols and search ». Communications of the ACM 19 (3): 113‑26.
Newell, Allen, et Herbert A. Simon. 1976b. « Computer science as empirical inquiry: symbols and search ». Commun. ACM (New York, NY, USA) 19 (3): 113‑26. https://doi.org/10.1145/360018.360022.
Nilsson, Nils J. 2005. « Human-Level Artificial Intelligence? Be Serious! » AI Mag. 26 (4): 68‑75. https://doi.org/10.1609/AIMAG.V26I4.1850.
Pearl, Judea. 1988. Probabilistic Reasoning in Intelligent Systems: Networks of Plausible Inference. Morgan Kaufmann.
Russell, Stuart, et Peter Norvig. 2020. Artificial Intelligence: A Modern Approach. 4ᵉ éd. Pearson. http://aima.cs.berkeley.edu/.
Savage, Neil. 2024. « Beyond Turing: Testing LLMs for Intelligence ». Commun. ACM (New York, NY, USA), publication en ligne anticipée, juin. https://doi.org/10.1145/3673427.
Strickland, Eliza. 2021. « The Turbulent Past and Uncertain Future of AI: Is there a way out of AI’s boom-and-bust cycle? » IEEE Spectrum 58 (10): 26‑31. https://doi.org/10.1109/MSPEC.2021.9563956.
Wang, Pei. 2019. « On Defining Artificial Intelligence ». Journal of Artificial General Intelligence 10 (2): 1‑37. https://doi.org/10.2478/jagi-2019-0002.

Annexe : Sur la définition de l’intelligence artificielle

Wang (2019)

Un agent et son interaction avec l’environnement sont spécifiés comme un tuple : \[ \langle P,S,A \rangle \] où

  • \(P\) une séquence de signaux d’entrée, \(P = \langle p_0,\ldots,p_t \rangle\)
  • \(S\) une séquence d’états internes, \(S = \langle s_0,\ldots,s_t \rangle\)
  • \(A\) une séquence d’actions, \(A = \langle a_0,\ldots,a_t \rangle\)

Pour une séquence de moments, \(0,\ldots,t\).

Humain (H) vs Ordinateur (C)

L’IA est conçue comme des systèmes informatiques similaires à l’esprit humain dans un certain sens, bien qu’un ordinateur et un esprit humain ne puissent pas être identiques en tous aspects.

\[ \langle P^H,S^H,A^H \rangle \approx \langle P^C,S^C,A^C \rangle \]

Wang (2019) propose 5 perspectives: Structure-IA, Comportement-IA, Capacité-IA, Fonction-IA, et Principe-IA.

1. Structure-IA

(modélisation du cerveau, sciences cognitives)

J’appelle ce type de définition “Structure-IA,” car il nécessite qu’un système IA traverse des états isomorphes ou des changements de structure comme le fait le cerveau lorsqu’il reçoit des entrées similaires, ce qui produira des sorties similaires, donc les trois composants des deux sont par paires similaires les uns aux autres :

\[ P^H \approx P^C, S^H \approx S^C, A^H \approx A^C \]

2. Comportement-IA

(Test de Turing)

Une façon de reconnaître un esprit semblable à celui de l’homme sans exiger un cerveau semblable à celui de l’homme est d’associer l’intelligence aux comportements externes de l’agent. Après tout, si un agent se comporte comme un humain, il doit être considéré comme intelligent, peu importe s’il ressemble à un humain, à l’intérieur ou à l’extérieur.

\[ P^H \approx P^C, A^H \approx A^C \]

3. Capacité-IA (Test d’emploi)

Dans le cadre de l’agent, cela signifie que \(C\) est similaire à \(H\) dans le sens où il y a des instants \(i\) et \(j\) que :

\[ p_i^C \approx p_j^H, a_i^C \approx a_j^H \]

l’action (solution) que l’ordinateur produit pour une perception (problème) est similaire à l’action produite par un humain pour une perception similaire (\(\ldots\)) De cette manière, l’intelligence d’un système est identifiée par un ensemble de problèmes qu’il peut résoudre, peu importe si ces problèmes sont résolus de la “manière humaine”.

Capacité-IA (suite)

“Je suggère que nous remplacions le test de Turing par ce que j’appellerai le ‘test d’emploi.’ Pour passer le test d’emploi, les programmes d’IA doivent occuper les emplois normalement occupés par des humains. Les progrès vers une IA au niveau humain pourraient alors être mesurés par la fraction de ces tâches qui peuvent être acceptablement réalisées par des machines”

4. Fonction-IA

Dans le cadre de l’agent, cette perspective de “Fonction-IA” considère que \(C\) est similaire à \(H\) dans le sens où il y a des moments \(i\) et \(j\) que :

\[ a_i^C \approx f^C(p_i^C), a_j^H \approx f^H(p_j^H), f^C \approx f^H \]

Ici, la fonction peut correspondre à la recherche, au raisonnement, à l’apprentissage, etc., et puisque l’accent est mis sur les fonctions (c’est-à-dire les correspondances entrée-sortie), les valeurs concrètes d’entrée et de sortie des deux agents n’ont pas besoin d’être similaires les unes aux autres.

5. Principe-IA (rationalité, logiciste)

Comme dans tout domaine, il y a des chercheurs en IA qui essaient de trouver des principes fondamentaux qui peuvent uniformément expliquer les phénomènes pertinents. Ici, l’idée vient de l’utilisation de l’intelligence comme une forme de rationalité (\(\ldots\)) qui peut prendre la meilleure décision possible dans diverses situations, en fonction de l’expérience ou de l’histoire du système.

\[ A^C = F^C(P^C), A^H = F^H(P^H), F^C \approx F^H \]

Le \(F\) ci-dessus n’est souvent pas spécifié formellement, mais décrit de manière informelle comme un certain “principe,” qui ne concerne pas seulement un type de problème et sa solution, mais l’histoire de vie de l’agent dans diverses situations, lorsqu’il traite divers types de problèmes.

Code source du jour

#!/usr/bin/env python3
# -*- Mode: Python -*-
# ai_lecture-01.py
# Author          : Marcel Turcotte & ChatGPT 5
# Created On      : Tue Feb 13 16:29:41 2024
# Last Modified By: Marcel Turcotte
# Last Modified On: Sun Sep  6 09:58:08 EDT 2026

# The initial version of this script was developed in 2024. 
# In 2025, ChatGPT was used to revise the code to align with the 
# latest API version, expand the comments to improve its instructional value, 
# and enhance its suitability as a teaching example. In 2026, the script was 
# further updated using Codex ChatGPT 5.6 Sol. 
# Attempts to use Codex ChatGPT 6 Astra Light were disappointing.

"""Generate bilingual narration and speech for the first lecture.

The script uses the OpenAI API to write an English narration, translate it
into Canadian French, and synthesize both versions as audio files.

Required:
    python -m pip install openai

OPENAI_API_KEY can be exported by the shell or injected by a secret manager:
    export OPENAI_API_KEY="your_api_key_here"
    python ai_lecture-01-v04.py --voice marin

With a 1Password environment file containing a secret reference:
    op run --env-file="$HOME/.env" -- python ai_lecture-01-v04.py --voice marin

Optional .env support:
    python -m pip install python-dotenv

Keep API keys private and exclude .env files from version control.
When presenting the recordings, disclose that the voices are AI-generated.
"""

from __future__ import annotations

import argparse
import os
import sys
from pathlib import Path
from typing import Optional

from openai import (
    APIConnectionError,
    APITimeoutError,
    AuthenticationError,
    OpenAI,
    OpenAIError,
    RateLimitError,
)

try:
    from dotenv import load_dotenv
except ImportError:
    load_dotenv = None


TEXT_MODEL = "gpt-4o"
SPEECH_MODEL = "gpt-4o-mini-tts"

WELCOME_SENTENCE = 'Welcome to CSI 4106, "Introduction to Artificial Intelligence"!'

# Quoted verbatim from the official uOttawa calendar.
OFFICIAL_CALENDAR_DESCRIPTION = (
    "The roots and scope of Artificial Intelligence. Knowledge and knowledge "
    "representation. Search, informed search, adversarial search. Deduction and "
    "reasoning. Uncertainty in Artificial Intelligence. Introduction to Natural "
    "Language Processing. Elements of planning. Basics of Machine Learning."
)

TEACHING_APPROACH = (
    "The calendar description establishes the broad scope of the course rather than its "
    "teaching order. This offering uses a modernized, machine-learning-first structure and "
    "introduces deep learning as early as the necessary foundations allow. Deep learning "
    "is central to contemporary AI, so studying it early connects the course with "
    "technologies that attract students' attention. It also provides a framework for "
    "introducing and defining central AI ideas. We will examine cases in which deep "
    "learning has displaced or changed the role of earlier approaches, as well as cases "
    "in which its limitations make earlier, purpose-built methods valuable. A further "
    "motivation is to treat learning as an early and extensively studied milestone in the "
    "development of intelligence. This foundation will later help us compare learning-based "
    "and search-based approaches when studying Monte Carlo Tree Search."
)

LEARNING_OUTCOMES = (
    "Explain the fundamental concepts of Artificial Intelligence (AI)",
    "Apply problem-solving strategies using AI techniques",
    "Critically analyze and compare different AI approaches",
    "Demonstrate independent learning and exploration",
)

PRELIMINARY_COURSE_OUTLINE = (
    "Defining AI",
    "Introduction to machine learning",
    "Linear regression",
    "Training",
    "Logistic regression",
    "Evaluation",
    "Hyperparameter tuning",
    "Machine learning engineering",
    "Introduction to artificial neural networks",
    "Backpropagation",
    "Softmax, cross-entropy, and regularization",
    "Convolutional neural networks",
    "Introduction to search",
    "Informed search",
    "Local search",
    "Population-based metaheuristics",
    "Adversarial search",
    "Monte Carlo Tree Search",
)


# -------------------------------------------------------
# Setup
# -------------------------------------------------------

def prepare_api_key() -> bool:
    """Load an optional .env file and check for an API key."""
    if not os.getenv("OPENAI_API_KEY") and load_dotenv is not None:
        load_dotenv(override=False)

    api_key = os.getenv("OPENAI_API_KEY", "")

    if api_key.startswith("op://"):
        print(
            "OPENAI_API_KEY is an unresolved 1Password reference. Run:\n"
            f'  op run --env-file="$HOME/.env" -- python {Path(__file__).name}',
            file=sys.stderr,
        )
        return False

    if not api_key:
        print(
            "No OpenAI API key was found. You can:\n"
            "  • export OPENAI_API_KEY=\"your_api_key_here\"\n"
            "  • use a secret manager to inject OPENAI_API_KEY\n"
            "  • install python-dotenv and store the key in a local .env file\n\n"
            "An exported key or a secret manager does not require python-dotenv.",
            file=sys.stderr,
        )
        return False

    return True


# -------------------------------------------------------
# Prompt builders
# -------------------------------------------------------

def build_course_context() -> str:
    """Organize the source material while keeping its roles unambiguous."""
    outcomes = "\n".join(f"- {outcome}" for outcome in LEARNING_OUTCOMES)
    outline = "\n".join(
        f"{number}. {topic}"
        for number, topic in enumerate(PRELIMINARY_COURSE_OUTLINE, start=1)
    )

    return f'''REQUIRED OPENING SENTENCE:
{WELCOME_SENTENCE}

OFFICIAL UOTTAWA CALENDAR DESCRIPTION:
{OFFICIAL_CALENDAR_DESCRIPTION}

INSTRUCTOR'S DESIGN FOR THIS OFFERING:
{TEACHING_APPROACH}

LEARNING OUTCOMES:
Upon completion of the course, students will be able to:
{outcomes}

PRELIMINARY AND AMBITIOUS COURSE OUTLINE:
{outline}'''


def build_instructions_en(tone: Optional[str]) -> str:
    """Build instructions for the English narration."""
    instructions = (
        "Write a natural spoken welcome of 180 to 240 words for the first lecture of an "
        "undergraduate AI course at the bilingual University of Ottawa. Begin with the "
        "required opening sentence exactly as supplied. Clearly identify the calendar "
        "paragraph as the official uOttawa course description, then explain that this "
        "offering uses a modernized, machine-learning-first structure and reaches deep "
        "learning as early as its foundations permit. Do not present the calendar "
        "description as the teaching sequence or the preliminary outline as official "
        "calendar text. Explain both reasons for teaching deep learning early: its "
        "importance to current AI and its use as a framework for discussing other AI "
        "ideas. Contrast cases where deep learning has changed earlier approaches with "
        "cases where its limitations make specialized methods valuable. State all four "
        "learning outcomes naturally, preserving their action verbs. Describe the "
        "preliminary and ambitious sequence as an arc from machine-learning foundations "
        "through neural networks and then search, ending with Monte Carlo Tree Search; do "
        "not recite all eighteen topics. Do not imply that deep learning is a prerequisite "
        "for Monte Carlo Tree Search. The students have varied backgrounds, languages, and "
        "prior exposure to AI. Be welcoming, inclusive, clear, and encouraging. Use plain "
        "language and short sentences. Return only the narration."
    )
    if tone:
        instructions += f" Writing style: {tone}"
    return instructions


def build_instructions_fr() -> str:
    """Build instructions for the Canadian French translation."""
    return (
        "Translate the supplied English narration into natural Canadian French. "
        "The University of Ottawa is bilingual, and CSI 4506 is the French-language "
        "course corresponding to CSI 4106. Replace 'CSI4106' or 'CSI 4106' with "
        "'CSI 4506'. Translate the course title as 'Introduction à l’intelligence "
        "artificielle'. Preserve the distinction between the official calendar description "
        "and the way this offering is organized, along with all other ideas and the "
        "welcoming tone. Return only the translation."
    )


def build_speech_instructions(language: str, tone: Optional[str]) -> str:
    """Build language-specific delivery instructions."""
    if language == "en":
        instructions = (
            "Speak as a welcoming university instructor. Use natural Canadian English, "
            "a conversational tone, and a measured pace. Pause briefly between the main "
            "ideas. Pronounce 'CSI 4106' as 'C S I four one zero six'."
        )
    else:
        instructions = (
            "Parlez comme une personne qui accueille sa classe à l’université. Utilisez "
            "un français canadien naturel, un ton chaleureux et un débit mesuré. Faites "
            "une courte pause entre les idées principales. Prononcez « CSI 4506 » comme "
            "« cé esse i, quatre cinq zéro six »."
        )

    if tone:
        instructions += f" Additional delivery instruction: {tone}"
    return instructions


# -------------------------------------------------------
# OpenAI utilities
# -------------------------------------------------------

def generate_text(client: OpenAI, source: str, instructions: str) -> str:
    """Generate text with the Responses API."""
    response = client.responses.create(
        model=TEXT_MODEL,
        instructions=instructions,
        input=source,
        temperature=0.2,
        max_output_tokens=800,
    )
    return (response.output_text or "").strip()


def synthesize_speech(
    client: OpenAI,
    text: str,
    output_path: Path,
    *,
    voice: str,
    instructions: str,
    response_format: str,
) -> None:
    """Stream synthesized speech to an audio file."""
    with client.audio.speech.with_streaming_response.create(
        model=SPEECH_MODEL,
        voice=voice,
        input=text,
        instructions=instructions,
        response_format=response_format,
    ) as response:
        response.stream_to_file(output_path)


# -------------------------------------------------------
# Script logic
# -------------------------------------------------------

def main(audio_format: str, voice: str, tone: Optional[str]) -> int:
    """Generate English and French narrations and audio files."""
    if not prepare_api_key():
        return 1

    course_context = build_course_context()

    try:
        client = OpenAI()

        narration_en = generate_text(
            client, course_context, build_instructions_en(tone)
        )
        if not narration_en:
            print("The text model returned an empty English narration.", file=sys.stderr)
            return 1

        narration_fr = generate_text(
            client, narration_en, build_instructions_fr()
        )
        if not narration_fr:
            print("The text model returned an empty French translation.", file=sys.stderr)
            return 1

        narrations = (
            ("en", narration_en),
            ("fr", narration_fr),
        )

        for language, narration in narrations:
            output_path = Path(
                f"01_tts_course_intro-{language}-{voice}.{audio_format}"
            )
            synthesize_speech(
                client,
                narration,
                output_path,
                voice=voice,
                instructions=build_speech_instructions(language, tone),
                response_format=audio_format,
            )
            print(f"[OK] {language.upper()} audio → {output_path}")

    except AuthenticationError:
        print(
            "OpenAI rejected the API key. Check OPENAI_API_KEY or the secret manager.",
            file=sys.stderr,
        )
        return 1
    except (APIConnectionError, APITimeoutError) as error:
        print(f"Could not reach the OpenAI API: {error}", file=sys.stderr)
        return 1
    except RateLimitError:
        print(
            "The request was rate-limited. Check the account's limits and API credit.",
            file=sys.stderr,
        )
        return 1
    except OpenAIError as error:
        print(f"OpenAI API error: {error}", file=sys.stderr)
        return 1
    except OSError as error:
        print(f"Could not write an audio file: {error}", file=sys.stderr)
        return 1

    print("Reminder: disclose that the narration uses AI-generated voices.")
    return 0


# -------------------------------------------------------
# Command-line interface
# -------------------------------------------------------

if __name__ == "__main__":
    parser = argparse.ArgumentParser(
        description="Generate bilingual first-lecture narration and speech."
    )
    parser.add_argument(
        "--format",
        default="mp3",
        choices=("mp3", "wav", "aac", "flac", "opus", "pcm"),
        help="Audio output format (default: mp3).",
    )
    parser.add_argument(
        "--voice",
        default="marin",
        help="Speech voice (default: marin). Try cedar or nova.",
    )
    parser.add_argument(
        "--tone",
        default=None,
        help=(
            "Optional writing and delivery instruction, for example: "
            "'Sound warm, calm, and optimistic.'"
        ),
    )
    args = parser.parse_args()

    raise SystemExit(main(args.format, args.voice, args.tone))

Marcel Turcotte

[email protected]

École de science informatique et de génie électrique (SIGE)

Université d’Ottawa