Chapitre 1 : Architecture des machines et systèmes d'exploitation15
1) Les principaux composants d'une machine numérique17
a) Hardware et software17
b) Les entrées-sorties18
c) Le stockage des informations19
d) L'unité centrale23
e) Le processeur25
f) Les mémoires de l'ordinateur27
g) Les bus29
2) Les systèmes d'exploitation et les environnements de développement29
a) Rôles d'un système d'exploitation30
b) Gestion des fichiers34
Exercices : architecture des machines et systèmes d'exploitation38
Correction exercices : architecture des machines et systèmes d'exploitation41
Chapitre 2 : Représentation des nombres et des informations dans la machine physique43
1) Introduction44
2) Bref point de vue électronique45
a) Les transistors en régime bloqué et en régime de saturation45
b) Donnée de base manipulée par une machine46
3) Représentation d'un nombre dans une base46
4) Représentation des nombres dans une machine52
a) Représentation sur une chaîne de n bits fixée52
b) Représentation des entiers naturels53
c) Convention de la valeur signée53
d) Convention du complément à 254
e) Convention IEEE 75459
f) Cas particuliers de la norme IEEE 75463
5) Erreurs introduites par la représentation des nombres en machine66
a) Le dépassement de capacité66
b) Les arrondis d'affichage des calculatrices67
c) Les arrondis d'affichage de Python69
6) Représentation des caractères74
Pour aller plus loin76
Exercices : La représentation des nombres en machine81
Correction exercices : la représentation des nombres en machine83
Chapitre 3 : introduction à la programmation en Python et aux outils de développement97
1) Les langages de programmation97
2) Découverte de Python100
a) Installation de l'environnement de développement100
b) Description de l'environnement de développement104
3) Bases de la programmation en Python106
a) Les types de base et les opérations106
b) Utilisation de la console108
c) Les variables111
d) Les expressions116
e) Exécution d'une affectation117
f) La comparaison118
g) Les instructions119
h) Le transtypage121
4) Concevoir un programme123
5) Enregistrer un programme124
6) Les modules127
Pour aller plus loin131
TP 1 : introduction à la programmation et aux outils de développement142
Correction TP1 : introduction à la programmation et aux outils de développement158
Chapitre 4 : Listes, conditionnelles et boucles177
1) Les listes177
a) Création d'une liste178
b) Manipulation des listes180
2) Le type range181
3) Blocs d'instructions183
a) Les structures conditionnelles184
b) Complément sur les expressions booléennes190
c) La boucle for193
d) La boucle while196
e) break et continue198
TP2 : listes, conditions, boucles201
Correction TP2 : listes, conditions, boucles209
Chapitre 5 : Les fonctions221
1) Introduction221
2) Créer et utiliser une fonction222
a) La syntaxe223
b) Appel d'une fonction223
c) Quelques bonnes pratiques pour les fonctions227
d) Variables locales et globales229
e) Déroulement d'un programme233
3) Ecrire une fonction lambda236
Pour aller plus loin237
TP 3 : tuples, dictionnaires, fonctions248
Correction TP 3 : tuples, dictionnaires, fonctions257
Chapitre 6 : Introduction à l'algorithmique269
1) Correction d'un algorithme270
a) La terminaison de boucle270
b) Invariant de boucle274
2) Complexité275
a) Expérimentation avec un chronomètre276
b) Détermination d'un coût277
c) Complexité et temps d'exécution280
3) Le pseudo-code281
4) Petits algorithmes universels283
a) Recherche du maximum283
b) Calcul de la moyenne284
c) Calcul de la variance285
Pour aller plus loin287
TP 4 : introduction aux algorithmes303
Correction du TP 4 : introduction aux algorithmes308
Chapitre 7 : Algorithmes appliqués à des intervalles. Dichotomie et intégration numérique321
1) Introduction322
2) La dichotomie322
a) Principe général322
b) Le découpage en intervalles réguliers323
3) Recherche par dichotomie dans un tableau trié323
a) Principe de l'algorithme323
b) Complexité de l'algorithme327
4) Recherche du zéro d'une fonction continue et monotone329
a) Principe329
b) Calcul du nombre d'itérations335
5) Calcul numérique d'une intégrale par la méthode des rectangles à gauche336
6) Calcul numérique d'une intégrale par la méthode des rectangles à droite338
7) Calcul numérique d'une intégrale par la méthode des trapèzes340
TP 5 : algorithmes appliqués à des intervalles343
Correction TP 5 : algorithmes appliqués à des intervalles349
Chapitre 8 : Les graphiques et les modules scientifiques359
1) Le module numpy360
2) Les graphiques avec le module matplotlib369
a) Principe de base369
b) Améliorer l'affichage373
Pour aller plus loin377
TP 6 : les graphiques et les modules scientifiques385
Correction du TP 6 : les graphiques et les modules scientifiques389
Chapitre 9 : Recherche du zéro d'une fonction. Méthode de Newton397
1) La méthode de Newton398
a) Résoudre numériquement f(x) = 0398
b) Résolution de f(x) = c400
c) Détermination numérique de la dérivée401
2) Calcul d'une racine carrée par la méthode de Héron402
TP 7 : Recherche du zéro d'une fonction404
Correction TP 7 : Recherche du zéro d'une fonction406
Chapitre 10 : Résoudre numériquement les équations différentielles412
1) Introduction412
a) Ce que l'on va chercher412
b) Intérêt d'une équation différentielle412
c) Principe général de la méthode d'Euler413
2) Equation différentielle d'ordre 1414
a) Méthode d'Euler explicite416
b) Méthode d'Euler implicite420
3) Equation différentielle d'ordre 2423
Pour aller plus loin427
TP 8 : Résoudre numériquement les équations différentielles432
Correction TP8440
Chapitre 11 : matrices, systèmes linéaires, méthode du pivot de Gauss467
1) Introduction468
2) Coder une matrice468
3) Principe de résolution d'un système475
4) Résolution par la méthode du pivot de Gauss477
5) Phase de remontée483
6) Algorithme complet de résolution485
Pour aller plus loin487
TP 9 : matrices, systèmes linéaires, méthode du pivot de Gauss491
Correction TP 9 : matrices, systèmes linéaires, méthode du pivot de Gauss498
Chapitre 12 : Les bases de données511
1) Introduction512
a) Ce que peut être une base de données512
b) Architecture autour d'une base512
c) Création d'une base513
2) Le modèle entité-association513
3) Utilisation du modèle relationnel514
4) Requêtes élémentaires de création516
5) Algèbre relationnel518
a) Opérations de base518
b) Autres opérations522
6) Traduction en SQL525
7) Les fonctions d'agrégation526
8) Un exemple complet526
a) Création de la base et ajout des données526
b) Utilisation de la base534
Pour aller plus loin541
TP 10 : les bases de données544
Correction TP 10 : les bases de données550
Chapitre 13 : La récursivité579
1) Principe de la récursivité580
2) Algorithmes récursifs583
a) Reconnaître un programme récursif584
b) Concevoir un programme récursif584
3) Applications584
a) Calcul de la factorielle d'un nombre584
b) Suite numérique587
c) Nombres pairs et impairs588
4) Utilisation de la mémoire lors d'un appel récursif591
a) Les appels successifs591
b) Gestion de la mémoire d'exécution en Python592
c) Application à un programme récursif596
5) Comparaison récursif-itératif601
6) La récursivité terminale602
Pour aller plus loin604
TP 11 : la récursivité609
Correction du TP 11 : la récursivité613
Chapitre 14 : Les piles et les files623
1) Introduction623
2) Les piles625
a) Modélisation d'une pile non bornée626
b) Modélisation d'une pile bornée630
3) Les files633
a) Modélisation d'une file non bornée634
b) Modélisation d'une file bornée634
Pour aller plus loin637
TP 12 : les piles et les files640
Correction TP 12 : les piles et les files648
Chapitre 15 : Les algorithmes de tri657
1) Introduction657
2) Exécution pas à pas d'un algorithme662
a) Exemple de proposition de tri662
b) Exécution de l'algorithme sur un exemple664
c) Analyse665
3) Tri à bulles (bubble sort)666
a) Algorithme666
b) Complexité de l'algorithme du tri à bulles668
4) Tri par insertion (insert sort)669
a) Algorithme669
b) Complexité de l'algorithme du tri par insertion672
5) Tri rapide (quick sort)672
a) Algorithme672
b) Complexité de l'algorithme686
6) Tri fusion (merge sort)688
a) Algorithme688
b) Complexité de l'algorithme du tri fusion693
Pour aller plus loin694
TP 13 : les algorithmes de tri697
Correction TP 13 : les algorithmes de tri702
Chapitre 16 : Thème 1-Introduction à la cryptographie711
Cours/TP711
Correction TP cryptographie729
Chapitre 17 : Thème 2-Le traitement des images751
Cours/TP751
Correction TP cryptographie762
Chapitre final : Devoirs d'entrainement en temps limité787
Evaluation 1 (chapitres 1 et 2)788
Correction de l'évaluation 1792
Evaluation 2 (chapitres 3 et 4)795
Correction de l'évaluation 2800
Evaluation 3 (chapitres 3 à 5)804
Correction de l'évaluation 3807
Evaluation 4 (chapitres 2 à 7)809
Correction de l'évaluation 4812
Evaluation 5 (chapitres 2 à 10)813
Correction de l'évaluation 5817
Evaluation 6 (chapitres 2 à 11)821
Correction de l'évaluation 6829
Evaluation 7 (chapitres 2 à 11 et révisions concours)833
Correction de l'évaluation 7839
Evaluation 8 (chapitres 2 à 13 et révisions concours)849
Correction de l'évaluation 8852
Evaluation 9 (révisions concours)856
Correction de l'évaluation 9861
Evaluation 10 (révisions concours)866
Correction de l'évaluation 10869
Evaluation 11 (révisions concours)880
Correction de l'évaluation 11888
Evaluation 12 (révisions concours)900
Correction de l'évaluation 12906
Evaluation 13 (révisions concours)908
Correction de l'évaluation 13918
Index933