Introduction à la programmation (Info 111)#
Nicolas M. Thiéry
https://Nicolas.Thiery.name/Enseignement/Info111
À faire
[ ] Gestion des images : probablement à déplacer dans Semaine1/media si elles ne prennent pas trop de place
Pourquoi apprendre l'informatique?#
Évidence : l'ordinateur est partout!
Combien d'ordinateurs dans la salle?
Combien d'ordinateurs possédez vous?
Le mot « assisté par ordinateur » a disparu
Usage constant des ordinateurs, pour le travail comme le reste
Évidence : tous les jeunes connaissent déjà l'informatique!
.
C'est quoi l'informatique en fait?#
Une petite analogie :
M. Einstein, vous qui êtes un excellent physicien, vous devez savoir changer la roue de ma voiture, non?
M. Alonso, vous qui êtes un excellent conducteur de F1, vous devez savoir réparer le carburateur de ma voiture, non?
Et pourtant, très loin d'être Einstein ou Alonso, ...
M. Thiéry, vous qui êtes professeur en informatique, vous devez savoir réparer mon W.....s, non?
C'est quoi l'informatique en fait?#
Suite de la petite analogie
L'usage |
La technologie |
La science |
|---|---|---|
Conduite |
Réparation, Conception |
Physique |
Consommation |
Cuisine |
Chimie, Biologie |
Utilisation |
Programmation, ... |
Informatique |
Qu'est-ce qu'on apprend à l'école?#
Principalement la science
Et des pressions pour que ce ne soit pas le cas
Quelle école pour la société de l'information?
Une conférence de François Élie
À lire ou écouter ... et méditer ...
Tous les jeunes connaissent déjà l'informatique?#
L'usage?
Évidence : tous les jeunes savent utiliser un ordinateur
La technologie?
Qui sait programmer? Configurer un réseau?
La science?
Ma petite expérience :
Études : apprendre la science a chamboulé ma programmation
2026 : après 36 ans et 300k lignes de code, j'apprends encore ...
La science informatique?#
Définition
L' informatique (computer science) est la science du calcul et de l'information
Thème fondamental : étude des systèmes en évolution
État du système avant
Étape de calcul
État du système après
Grands thèmes de l'informatique#
Calculabilité : que peut, ou ne peut pas faire, un ordinateur?
Modèles de calcul
Indépendamment du langage
Indépendamment du matériel
Miracle : tous les langages sont équivalents!
Complexité : combien faut-il de ressources pour résoudre un problème?
Indépendamment du langage
Indépendamment du matériel
Indépendamment de l'algorithme?
Grands thèmes de l'informatique (suite)#
Thème fondamental: maîtriser les systèmes extrêmement complexes
Internet avec des milliards d'ordinateurs
Programmes avec des millions de lignes
Données occupant des petaoctets (\(10^{15}\) octets!)
Services gérant des millions de clients
Problématiques de passage à l'échelle
Stratégies d'abstraction
Exemple : Couches OSI pour les réseaux
Difficulté
Apprendre des outils conçus pour les programmes de 100000 lignes
en travaillant sur des programmes de 10 lignes ...
Grands thèmes de l'informatique (suite)#
Comment mieux s'exprimer pour que l'ordinateur résolve nos problèmes?
Conceptions des langages de programmation
Java, C++, Python, Ada, Pascal, Perl, Camel, Haskell, Go, Rust...
Un nouveau langage par semaine depuis 50 ans! 😱
Et maintenant en langue naturelle
Les paradigmes et concepts sous-jacents sont presque toujours les mêmes
Programmation impérative : décrire les actions à suivre
Programmation fonctionnelle : décrire la solution souhaitée et comment la composer depuis des problèmes plus simples
Programmation objet : modéliser les entités et leurs interactions
Orchestration de flots de données : décrire les données et les transformations à leur appliquer
Programmation logique : décrire les contraintes du problème
Apprentissage : inférer un modèle statistique à partir d'exemples
Au delà des langages: modélisation, algorithmique, structures de données, ...
Grands thèmes de l'informatique (suite)#
Interactions Humain Machine
Bases de données
Algorithmes et structures de données
Architecture des ordinateurs, calcul haute performance
Réseaux, transmission de données
Sureté et sécurité du logiciel :
spécification, test, preuveSureté et sécurité des données :
codage, cryptographieTraitement automatique des langues
Langages formels, automates, compilation
Mathématiques discrètes : graphes, combinatoire, ...
À propos de ce cours#
Au programme
Science : concepts de la programmation
Technologie : programmation C++ (simple)
Usage : environnement de programmation, GNU/Linux
Du pouvoir pour reprendre la main sur vos outils numériques
À usage pro, perso ou citoyen
Pouvoir d'analyser vos besoins
qu'est-ce que je peux / veux automatiser
Pouvoir d'exercer un regard critique sur l'existant
adéquation, confiance, performance, impact, neutralité, indépendance
Pouvoir de coconcevoir vos propres outils
Pouvoir de construire vos propres outils
En 22h
Des super héro.ïnes, en herbe
La magie du logiciel libre
Logiciel: un bien immatériel à usage non exclusif
La vaste majorité des logiciels est libre:
Liberté d'utiliser
Liberté d'analyser
Liberté de modifier
Liberté de redistribuer les modifications
Le numérique scientifique libre au bout de vos doigts
Avec des milliers de briques à composer
Apprendre à coder à l'ère de l'IA?
code: description formelle d'un procédé, d'un système
quelle forme dans 20 ans? spécifications en langue naturelle?
copiloter l'usage et la construction des outils numériques
Organisation du cours#
1h30 amphi, 1h30 TD, 2h TP
Du TD? pour quoi faire???
Apprendre la science informatique, en utilisant un ordinateur, pour programmer ...
Comme apprendre la physique, au volant d'une voiture ...
C'est pas facile ...
Une difficulté : la forte hétérogénéité de niveau
Ce module s'adresse à toustes, débutants comme expérimentés
Auto-évaluation
Exercices à correction automatique
Tuteur par IA 🚧
Évaluation
25% : Examen mi-semestre (dans l'axe des TD)
40% : Examen final (vision d'ensemble)
20% : Projet en fin de semestre
15% : Contrôles, note de l'enseignant
Fraude et plagiat#
S'entraider (explications, aide au débogage, ...)
C'est super!
Récupérer des solutions de quelqu'un d'autre
(dont solutions en ligne ou IA générative comme chat-GPT)
À ce stade, c'est contre-productif
Exception
On utilisera un peu d'IA générative pour
recherche d'information
tutorat
Sans le dire
C'est de la fraude
Vous êtes de futurs scientifiques
L'intégrité est une valeur essentielle en science
Nous vous faisons confiance
Mais, au cas où, nous avons quelques outils :-)
Détecteurs de plagiat
Détecteurs d'objets connectés
...
Ressources#
Suivez le guide!
Page web
Pour trouver toutes les informations
Mot clés: «Info111» ou «Nicolas Thiéry»
Espace eCampus
Pour interagir avec les enseignants
https://ecampus.paris-saclay.fr/course/view.php?name=UPSAY_2025_940_UE_OLIN115
Ressources, suite#
Salles de TP
Pour programmer
Salle de TP virtuelle myDocker@Paris-Saclay
Ou directement sur votre machine personnelle
Ordinateurs et traitement automatique des informations#
Exemples d'ordinateurs :
Calculatrice (programmable)
Ordinateur personnel (PC, Mac, ...)
Station de travail (Sun, DEC, HP, ...)
Super-ordinateur (Cray, IBM-SP, ...)
Clusters d'ordinateurs
Mais aussi :
Puce (programme fixe)
Tablettes
Téléphones portables, appareils photos, GPS, lecteurs MP3, ...
Box, routeurs wifi, ...
Téléviseurs, ...
Arduino, Raspberry Pi, ...
Caractéristiques principales d'un ordinateur#
Absolument stupide
Il obéit strictement aux ordres reçus
Fiable? Est-ce qu'il fait ce que l'on veut?
Très très rapide
2GHz : 2 milliards d'opérations par seconde
sans faire d'erreur
Très très bonne mémoire
Gros bouquin : Mo (million de caractères)
Mémoire : Go (milliards de caractères)
Disque : To (1000 milliards de caractères)
Data center : Po
À quoi sert un ordinateur?#
Stocker des informations :
Documents, musique, photos, agenda, ...
Traiter automatiquement des informations :
Entrée: informations venant du clavier, de la souris, de capteurs, de la mémoire, d'autres ordinateurs, ...
Traitement des informations en exécutant un programme
Sortie: informations envoyées vers l'écran, la mémoire, d'autres ordinateurs, ...
Définition : Programme
Informellement, un programme (program (informal)) est une séquence d'instructions qui spécifie étape par étape les opérations à effectuer pour obtenir à partir des entrées (input (informal)) un résultat: la sortie (output (informal)).
Voir aussi : https://fr.wikipedia.org/wiki/Programme_informatique
Premiers programmes#
Exemple
Ingrédients :
250g de chocolat, 125g de beurre, 6 œufs, 50 g de sucre, café
Étapes :
Faire fondre le chocolat avec 2 cuillères d'eau
Ajouter le beurre, laisser refroidir puis ajouter les jaunes
Ajouter le sucre et comme parfum un peu de café
Battre les blancs jusqu'à former une neige uniforme
Ajouter au mélange.
Entrée? Sortie?
Entrée? Sortie?
Entrée? Sortie?
Exemple
Entrée? Sortie?
Exemple: Un programme C++
#include <iostream>
using namespace std;
int main() {
int x, xCarre, xPuissanceQuatre;
cout << "Entrez un entier: ";
cin >> x;
xCarre = x * x;
xPuissanceQuatre = xCarre * xCarre;
cout << "La puissance quatrième de " << x
<< " est " << xPuissanceQuatre << endl;
return 0;
}
Démo : Compilation en ligne de commande, exécution
Un peu lourd? Pas de panique!
Le cœur du programme C++#
// Entrée
int x = 5;
// Traitement
int xCarre = x * x;
int xPuissanceQuatre = xCarre * xCarre;
// Sortie
xPuissanceQuatre
625
type: int
Jupyter + Cling : une super calculatrice programmable#
Jupyter
Un environnement de calcul interactif multi-langage
Cling
Un interpréteur C++
Résumé#
À propos du cours Introduction à la programmation (Info111)
Qu'est-ce que l'informatique (Usage, Technologie, Science!)
Objectifs du cours
Modalités pratiques
Un aperçu de premiers éléments de programmation
Ordinateur
Programmes
On reviendra dessus!
Ressources
espace eCampus (annonces, forum d'aide)
ressources pédagogiques
version statique sur la page web
version interactive avec Jupyter + Cling sur myDocker
forge logicielle GitLab
Motivations
Du pouvoir pour prendre la main sur vos outils numériques
Usage professionnel, personnel, citoyen
Une responsabilité
Comment travailler l'informatique?#
Recommandations
Parcourez le cours (poly ou page web) avant l'amphi
15 min perso / semaine
Participez activement en amphi : questions, prise de notes
Fichez au fur et à mesure tout ce que vous découvrez: concepts, définitions, syntaxe, astuces, ...
Travaillez le poly et vos notes
15 min perso / semaine ?
Recommandations
Commencez les exercices de TD avant la séance
Participez activement en TD
«Finissez» pour la semaine suivante
1h perso / semaine?
Participez activement en TP
«Finissez» les exercices de TP pour la semaine suivante
2h / semaine?
Projet de fin de semestre
30h+
Attention
Il vous faut un ordinateur ou tablette avec un navigateur web!
Variante: salle informatique en libre service