INTRODUCTION GÉNÉRALE DU COURS - Information, Calcul, Communication : EPFL

La page est créée Théo Julien
 
CONTINUER À LIRE
INTRODUCTION GÉNÉRALE DU COURS - Information, Calcul, Communication : EPFL
Objectifs

Présentation du
cours

Programmer

Conclusion

                           Information, Calcul, Communication :
                         INTRODUCTION GÉNÉRALE DU COURS

                                    Jean-Cédric Chappelier

                                    Laboratoire d’Intelligence Artificielle
                                               Faculté I&C

©EPFL 2018
Jean-Cédric Chappelier
& Jamila Sam

                                                                       Information, Calcul, Communication – Introduction du cours – 1 / 22
INTRODUCTION GÉNÉRALE DU COURS - Information, Calcul, Communication : EPFL
Objectifs

Présentation du
                         Objectifs du cours ICC
cours

Programmer
                         Ce cours « Information, Calcul et Communication » a pour buts essentiels de :
Conclusion
                          1. présenter l’Informatique en tant que discipline scientifique
                          2. exposer ses principes fondamentaux (partie théorie, vendredis)
                          3. développer la « pensée algorithmique » (« Computational Thinking »)

                          4. expliquer les bases de fonctionnement du « monde numérique » (partie théorie,
                             vendredis)
                          5. sensibiliser à la sécurité dans ce « monde numérique » (partie théorie, vendredis)
                          6. vous apprendre à programmer :
                             savoir les bases et connaître correctement au moins un langage (ici : le C++)
                          7. Savoir comment fonctionne un ordinateur
                             et savoir l’utiliser (sous Linux)

                          + voir le document « Présentation générale du cours » envoyé par email
                            (et présent sur le site Moodle du cours)
©EPFL 2018
Jean-Cédric Chappelier       A LIRE ABSOLUMENT !
& Jamila Sam

                                                                                Information, Calcul, Communication – Introduction du cours – 2 / 22
INTRODUCTION GÉNÉRALE DU COURS - Information, Calcul, Communication : EPFL
Objectifs

Présentation du
                         Moyens
cours

Programmer

Conclusion

                          I Moodle : support de cours, exercices, compléments, ...
                            http://moodle.epfl.ch/course/view.php?id=14023

                          I partie programmation : MOOC (Coursera) : vidéos, quiz, exercices, devoirs notés
                            https://www.coursera.org/learn/initiation-programmation-cpp

                          I Interactions :
                              I partie théorie : cours (2h) et d’exercices (1h)
                              I partie programmation : complément de cours (1h) et exercices (2h)

                          I Forums (MOOC et Moodle)

©EPFL 2018
Jean-Cédric Chappelier
& Jamila Sam

                                                                                Information, Calcul, Communication – Introduction du cours – 3 / 22
Objectifs

Présentation du
                         Organisation du travail (semaines)
cours

Programmer

Conclusion
                          I AVANT le cours de programmation (jeudi) : voir les vidéos
                          I si possible avant le cours : faire les quiz et commencer des exercices

                          I jeudi 915–1100 : séance d’exercices avec assistants
                          I en cours (jeudis 1115–1200 CO1) : rappels, approfondissements, questions
                          I après le cours : encore plus d’exercices ; puis faire et rendre le devoir noté du
                            MOOC
                          I cours partie théorie (vendredis 1315–1500 SG1)
                            conseil : regarder les slides avant pour avoir une idée du fil général
                          I exercices, partie théorie (vendredis 1515–1600 CM 1 ...)

                          + voir le document « Présentation générale du cours » mis à disposition.
                            A LIRE ABSOLUMENT !
©EPFL 2018
Jean-Cédric Chappelier
& Jamila Sam

                                                                                Information, Calcul, Communication – Introduction du cours – 4 / 22
Objectifs

Présentation du
                          Organisation du travail (semestre)
cours

Programmer

Conclusion
                                          MOOC             décalage      exercices prog.              cours prog.          cours théorie             exercices théorie
                                                                              1h45                      45 min.               90 min.                     45 min.
                                                                           Jeudi 9-11                 Jeudi 11-12          Vendredi 13-15             Vendredi 15-16

                   1     20.09.18             --              0       prise en main             Bienvenue/Introduction                   Introduction                          21.09.18
                   2     27.09.18   1. variables              0       variables / expressions   variables / expressions                     Algo 1                             28.09.18
                   3     04.10.18   2. if                     0       if – switch               if – switch                           Algo 2 (stratégies)                      05.10.18
                   4     11.10.18   3. for/while              0       for / while               for / while                              Calculabilité                         12.10.18
                   5     18.10.18   4. fonctions              0       fonctions (1)             fonctions (1)                     Représentation numérique                     19.10.18
                   6     25.10.18                             1       fonctions (2)             fonctions (2)           Echantillonnage 1           Exam 1 (1h15)              26.10.18
                   7     01.11.18   5. tableaux (vector)      1       vector                    vector                  Échantillonnage 2      Echantillonnage                 02.11.18
                   8     08.11.18   6. string + struct        1       array / string            array / string                          Compression 1                          09.11.18
                   9     15.11.18                             2       structures                structures                              Compression 2                          16.11.18
                  10     22.11.18   7. pointeurs              2           Série notée (1h45)    pointeurs                        Architecture des ordinateurs                  23.11.18
                  11     29.11.18                             -       pointeurs                 entrées/sorties                           Mémoires                             30.11.18
                  12     06.12.18                             -       entrées/sorties           entrées/sorties                      Stockage/Réseaux                          07.12.18
                  13     13.12.18                             -       entrées/sorties           erreurs / exceptions                      Sécurité 1                           14.12.18
                  14     20.12.18   8. étude de cas           -       erreurs / exceptions      Sécurité 2                           Examen final (2h45)                       21.12.18

                              + voir le document « Présentation générale du cours » mis à disposition.
                                A LIRE ABSOLUMENT !

©EPFL 2018
Jean-Cédric Chappelier
& Jamila Sam

                                                                                                                            Information, Calcul, Communication – Introduction du cours – 5 / 22
Objectifs

Présentation du
                         Interaction avec les enseignants
cours

Programmer
                         Plusieurs moyens pour contacter les enseignants, assistants et étudiants-assistants
Conclusion
                         pour poser des questions sur le cours ou les exercices :
                          I Durant les séances d’exercices :
                              + c’est le moyen le plus direct, et généralement le plus efficace.
                          I Par l’intermédiaire des forums du cours (dans site Moodle [spécifique] ou MOOC
                            [général])
                              + moyen idéal pour diffuser la connaissance
                             N’hésitez pas à en faire usage !
                          I par email aux assistants
                              + mais pour les cas généraux, préférez les forums.

                                       Les contacts personnels avec l’enseignant (email,
                                        téléphone ou visites) devront être strictement
                                            réservés aux cas personnels et/ou urgents !

©EPFL 2018
Jean-Cédric Chappelier
& Jamila Sam

                                                                                    Information, Calcul, Communication – Introduction du cours – 6 / 22
Objectifs

Présentation du
                         Livres ?
cours

Programmer

Conclusion               Les éléments fournis (sur le MOOC ou Moodle) devraient constituer une
                         documentation suffisante pour ce cours !

                         Pour ceux qui souhaitent avoir un livre, les ouvrages suivants sont également
                         recommandés.
                         Partie théorie :

                                    A. Schiper (éditeur)
                                    Découvrir le numérique, PPUR, 2e édition, 2018.
                                    Mais la première édition reste utilisable pour le cours
                                    de cette année.

                         Disponible pour un prix avoisinant les 35 CHF.
                         Une version éléctronique est également disponible.
©EPFL 2018
Jean-Cédric Chappelier
& Jamila Sam

                                                                                    Information, Calcul, Communication – Introduction du cours – 7 / 22
Objectifs

Présentation du
                         Livres ?
cours

Programmer

Conclusion
                         Les éléments fournis (sur le MOOC ou Moodle) devraient constituer une
                         documentation suffisante pour ce cours !

                         Pour ceux qui souhaitent avoir un livre, les ouvrages suivants sont également
                         recommandés.
                         Partie programmation :
                                                                                                                                    N
                                                                                                                                LEAR ER,       BOOCs              Initiation à la programmation
                                                                                                                                                                  en C++
                                                                                                                                               EPFL
                                                                                                                                FAST N
                                                                                                                                  LEAR ER!                        Jean-Cédric Chappelier,
                                                                                                                                  BETT
                                                                                                                                                                  Jamila Sam et Vincent Lepetit

                                                                                                                            INITIATION
                                                                                                                            À LA PROGRAMMATION
                                                                                                                            EN C++
                                    Jean-Cédric Chappelier, Jamila Sam & Vincent          using namespace std
                                                                                          int main()
                                                                                          {
                                                                                                               ;
                                                                                                             using
                                                                                                                              using namespace std
                                                                                                                              int main()
                                                                                                                              {
                                                                                                                    namespace std ;
                                                                                                             int main()
                                                                                                                              }
                                                                                                                                                  using namespace std ;
                                                                                                                                                  int main()
                                                                                                                                                  {;
                                                                                                                                                          cout
Objectifs

Présentation du
                         Livres ?
cours

Programmer

Conclusion
                         Les éléments fournis (sur le MOOC ou Moodle) devraient constituer une
                         documentation suffisante pour ce cours !

                         Pour ceux qui souhaitent avoir un livre, les ouvrages suivants sont également
                         recommandés.
                         Partie programmation :

                                    J.-C. Chappelier & F. Seydoux
                                    C++ par la pratique –
                                    recueil d’exercices corrigés et aide-mémoire,
                                    PPUR, 4e édition, 2017.
                                    Mais les anciennes éditions restent utilisables pour le
                                    cours de cette année.

                         Disponible pour un prix avoisinant les 35 CHF.
                         Une version éléctronique est également disponible.
©EPFL 2018
Jean-Cédric Chappelier
& Jamila Sam

                                                                                    Information, Calcul, Communication – Introduction du cours – 7 / 22
Objectifs

Présentation du
                         Notes et examens
cours

Programmer

Conclusion
                         3 évaluations pendant le semestre :
                           I vendredi 26 octobre, 15:15–16:30
                          I jeudi 22 novembre, 9:15–11:00
                          I vendredi 21 décembre, 13:15–16:00

                         Format :
                          I vendredi 26 octobre : 1h15, sur papier, SANS document :
                              I 45 minutes de quiz (questions fermées)
                              I 30 minutes d’exercices (questions ouvertes)
                          I jeudi 22 novembre : 1h45, sur papier, documents autorisés
                          I vendredi 21 décembre : 2h45, sur papier, documents autorisés

                         Contenu :
                          I vendredi 26 octobre : théorie module 1 (sans programmation)
                          I jeudi 22 novembre : programmation uniquement
                          I vendredi 21 décembre : tout le cours, sauf « Sécurité partie 2 »
©EPFL 2018
Jean-Cédric Chappelier
& Jamila Sam

                                                                              Information, Calcul, Communication – Introduction du cours – 8 / 22
Objectifs

Présentation du
                         Notes et examens
cours

Programmer               La note finale calculée de la façon suivante :
Conclusion                I examen 1 : θ1 =30%
                          I examen 2 (série notée) : θ2 =30%
                          I examen 3 (final) : θ3 =40%
                                                                                      
                                                                       ∑x θx (px /tx )
                                                    N = 1 − 0.25 −20 ·
                                                                          ∑x θx
                         (px le nombre de points obtenus à l’examen x, 0 en cas d’absence, sur un total
                         maximal de points pour cet examen de tx )
                          + voir le document « Présentation générale du cours ».

                         Devoirs notés du MOOC :
                          I sont obligatoires
                          I sont un très bon entrainement
                          I n’entrent pas dans le calcul de la note EPFL.
©EPFL 2018
Jean-Cédric Chappelier
& Jamila Sam

                                                                                 Information, Calcul, Communication – Introduction du cours – 9 / 22
Objectifs

Présentation du
                         Qu’est-ce que la programmation ?
cours

Programmer

Conclusion
                         Objectif : permettre l’automatisation d’un certain nombre de tâches à l’aide
                         d’ordinateurs.

                         Un ordinateur est un exemple d’automate programmable.
                         Un automate est un dispositif capable d’assurer, sans intervention humaine, un
                         enchaînement d’opérations correspondant à la réalisation d’une tâche donnée.
                         Exemples : montre, « ramasse-quilles », ...

                         Un automate est programmable lorsque la nature de la tâche qu’il est capable de
                         réaliser peut être modifiée à volonté. Dans ce cas, la description de la tâche à réaliser
                         se fait par le biais d’un programme, c.-à-d. une séquence d’instructions et de données
                         susceptibles d’être traitées (i.e. « comprises » et « exécutées ») par l’automate.
                         Exemples : le métier à tisser Jacquard, l’orgue de barbarie, ...
                         ... et l’ordinateur !

©EPFL 2018
Jean-Cédric Chappelier
& Jamila Sam

                                                                                Information, Calcul, Communication – Introduction du cours – 10 / 22
Objectifs

Présentation du
                         Exemple d’automate programmable
cours

Programmer

Conclusion

                         P ROGRAMME :
                         Conception : quelles
                         notes enchainer ?
                                                Exécution : tourner la
                                                manivelle              Résultat : mélodie
                         Réalisation : percer
                         les trous aux bons
                         endroits
©EPFL 2018
Jean-Cédric Chappelier
& Jamila Sam

                                                                            Information, Calcul, Communication – Introduction du cours – 11 / 22
Objectifs

Présentation du
                         Qu’est-ce que la programmation ? (résumé)
cours

Programmer

Conclusion
                         En résumé, programmer c’est donc décomposer la tâche à automatiser sous la forme
                         d’une séquence d’instructions (traitements) et de données adaptées à l’automate
                         utilisé.

                                                       opèrent sur

                                                  traitements                données

                                                                       influencent

                         Formalisation des traitements : algorithmes
                          + distinguer formellement les bons traitements des mauvais

                         Formalisation des données : structures de données abstraites
                          + distinguer formellement les bonnes structures de données des mauvaises
©EPFL 2018
Jean-Cédric Chappelier
& Jamila Sam

                                                                                     Information, Calcul, Communication – Introduction du cours – 12 / 22
Objectifs

Présentation du
                         Les instructions de l’ordinateur
cours

Programmer

Conclusion
                         Concrètement, quelles sont les instructions et les données « adaptées » à l’ordinateur ?

                         Ordinateur '
                         microprocesseur
                                     détermine l’ensemble des instructions élémentaires que l’ordinateur est
                                     capable d’exécuter ;
                         mémoire centrale
                                     détermine l’espace dans lequel des données peuvent être stockées en
                                     cours de traitement
                         périphériques
                                         permettent l’échange ou la sauvegarde à long terme des données
                         Architecture de Von Neumann (1955)

©EPFL 2018
Jean-Cédric Chappelier
& Jamila Sam

                                                                               Information, Calcul, Communication – Introduction du cours – 13 / 22
Objectifs

Présentation du
                         Les instructions de l’ordinateur
cours

Programmer

Conclusion
                         Concrètement, quelles sont les instructions et les données « adaptées » à l’ordinateur ?

                         Ordinateur '
                         microprocesseur
                         mémoire centrale
                         périphériques
                          + C’est donc le microprocesseur qui détermine le « jeu d’instructions » (et le
                            type de données) à utiliser.

                         On les appelle « Instructions Machine », « Langage Machine », ' « Assembleur »

                         On peut programmer directement le microprocesseur en langage machine...
                         ...mais c’est un peu fastidieux et de plus, chaque processeur utilise ses propres
                         instructions

©EPFL 2018
Jean-Cédric Chappelier
& Jamila Sam

                                                                               Information, Calcul, Communication – Introduction du cours – 13 / 22
Objectifs

Présentation du
                               Exemple d’instructions-machine
cours

Programmer

Conclusion
                                       Programme en Assembleur
                                       1: LOAD 10 5                  mettre 5 dans la mémoire 10
                                       2: CMP 10 0                   comparer le contenu de la mémoire 10 à 0
                                       3: JUMP +3                    si tel est le cas sauter 3 instructions plus loin
                                       4: DECR 10                    décrémenter la mémoire 10 (de 1)
                                       5: JUMP -3                    sauter 3 instructions en arrière
                                       6: END

                         Instructions machine :
                                             Instructions   Code Machine     données         Code Machine
                                                  CMP         00000000         -3              10000011
                                                 DECR         00000001          0              00000000
                                                  END         00000010          2              00000010
                                                 JUMP         00000011          3              00000011
                                                 LOAD         00000100          5              00000101
                                                                                6              00000110
                                                                               10              00001010

                         Le programme ci-dessus correspond donc physiquement en machine à la séquence :
                         0000010000001010000001010000000000001010000000000000001100000011
©EPFL 2018
Jean-Cédric Chappelier
                         0000000100001010000000111000001100000010
& Jamila Sam

                                                                                         Information, Calcul, Communication – Introduction du cours – 14 / 22
Objectifs

Présentation du
                         La notion de langage de programmation
cours

Programmer

Conclusion
                         Cependant, ces instructions-machine sont trop élémentaires pour pouvoir être
                         efficacement utilisées (par les humains) pour l’écriture de programmes...

                         . . . il faut donc fournir au programmeur la possibilité d’utiliser des instructions de
                         plus haut niveau, plus proches de notre manière de penser et de conceptualiser les
                         problèmes . . .

                         Exemples de langage de programmation de haut niveau :

                                      « vieux » BASIC                     C
                                                                          int main() {
                                      1 N=5
                                                                          for (int n=5; n>0; --n)
                                      2 IF (N>0) THEN PRINT N;
                                                                            printf("%d\n", n);
                                          N=N-1; GOTO 2
                                                                          return 0;
                                      3 END
                                                                          }

©EPFL 2018
Jean-Cédric Chappelier
& Jamila Sam

                                                                               Information, Calcul, Communication – Introduction du cours – 15 / 22
Objectifs

Présentation du
                         La notion de langage de programmation (2)
cours

Programmer

Conclusion

                         Comment rendre les instructions plus sophistiquées compréhensibles par l’ordinateur ?
                          + traduire les séquences d’instructions de haut niveau en instructions-machine
                            directement exécutables par le microprocesseur

                         Selon ses caractéristiques, un tel traducteur est appelé compilateur ou interpréteur
                         L’ensemble des instructions de plus haut niveau qu’un compilateur ou un interpréteur
                         est capable de traiter constitue un langage de programmation.

©EPFL 2018
Jean-Cédric Chappelier
& Jamila Sam

                                                                              Information, Calcul, Communication – Introduction du cours – 16 / 22
Objectifs

Présentation du
                         Interpréteur / Compilateur
cours

Programmer

Conclusion

                         Compilateur et Interpréteur sont des traducteurs de langage de programmation de haut
                         niveau en séries d’instructions-machine directement exécutables par l’ordinateur.

                         La différence réside dans la manière dont la traduction est réalisée :
                          I le compilateur traduit les programmes dans leur ensemble : tout le programme doit
                             être fourni en bloc au compilateur pour la traduction. Il est traduit une seule fois.
                          I l’interpréteur traduit les programmes instruction par instruction dans le cadre d’une
                             interaction continue avec l’utilisateur. Un programme est traduit à chaque
                             exécution.

                         Remarques : Certains langages peuvent indifféremment être interprétés ou compilés
                         C++ est un langage compilé, jamais interprété

©EPFL 2018
Jean-Cédric Chappelier
& Jamila Sam

                                                                               Information, Calcul, Communication – Introduction du cours – 17 / 22
Objectifs

Présentation du
                         Interpréteur / Compilateur (2)
cours

Programmer

Conclusion

                         Avantages et Inconvénients :
                          I De manière générale un langage interprété est donc adapté au développement
                            rapide de prototypes
                            (on peut immédiatement tester ce que l’on est en train de réaliser)
                          I un langage compilé permet la réalisation d’applications plus efficaces ou de plus
                            grande envergure
                            (optimisation plus globale, traduction effectuée une seule fois et non pas à chaque
                            utilisation)
                          I un langage compilé permet également de diffuser les programmes sous forme
                            binaire, sans pour autant imposer la diffusion sous forme lisible et
                            compréhensible par un humain
                            + protection de la propriété intellectuelle

©EPFL 2018
Jean-Cédric Chappelier
& Jamila Sam

                                                                             Information, Calcul, Communication – Introduction du cours – 18 / 22
Objectifs

Présentation du
                         Compilation d’un programme C++
cours

Programmer

Conclusion

                                                              compilateur
                          fichier source                                                               fichier exécutable

                                                  commande : g++ hello.cc -o hello

                          hello.cc
                          #include                                                             hello
                          using namespace std;                                                           010100001010101
                                                                                                         001010101001110
                          int main() {
                            cout
Objectifs

Présentation du
                         Pour résumer
cours

Programmer

Conclusion
                         Concrètement : Cycle de développement
                          À réfléchir au problème ; concevoir l’algorithme
                          Á traduire cette réflexion en un texte C++ (programme source)
                          Â traduire ce texte C++ en langage machine
                            (compilation, programme exécutable)
                          Ã exécution du programme (exécutable)

                         En pratique :
                          I erreurs de compilation (mal écrit)
                          I erreurs d’exécution (mal pensé)

                          =⇒ correction(s)               + d’où le(s) cycle(s) !

©EPFL 2018
Jean-Cédric Chappelier
& Jamila Sam

                                                                              Information, Calcul, Communication – Introduction du cours – 20 / 22
Objectifs

Présentation du
                         Ce que j’ai appris aujourd’hui
cours

Programmer

Conclusion

                          I Rappels sur l’organisation du cours :
                            lire le document de présentation
                          I Ce qu’est et à quoi sert un langage de programmation
                          I La différence entre langage interprété et compilé

                          I que traitements et données sont les deux facettes complémentaires de la
                            programmation

©EPFL 2018
Jean-Cédric Chappelier
& Jamila Sam

                                                                           Information, Calcul, Communication – Introduction du cours – 21 / 22
Objectifs

Présentation du
                          La suite
cours

Programmer
                              I Demain : cours et exercices de la partie théorie
Conclusion
                              I vous inscrire et commencer sur le MOOC (Coursera) pour le prochain cours de
                                programmation
                              I Le prochain cours de programmation : révision et compléments sur
                                       I variables
                                       I expressions
                                          MOOC             décalage      exercices prog.              cours prog.          cours théorie             exercices théorie
                                                                              1h45                      45 min.               90 min.                     45 min.
                                                                           Jeudi 9-11                 Jeudi 11-12          Vendredi 13-15             Vendredi 15-16

                    1    20.09.18             --              0       prise en main             Bienvenue/Introduction                   Introduction                          21.09.18
                    2    27.09.18   1. variables              0       variables / expressions   variables / expressions                     Algo 1                             28.09.18
                    3    04.10.18   2. if                     0       if – switch               if – switch                           Algo 2 (stratégies)                      05.10.18
                    4    11.10.18   3. for/while              0       for / while               for / while                              Calculabilité                         12.10.18
                    5    18.10.18   4. fonctions              0       fonctions (1)             fonctions (1)                     Représentation numérique                     19.10.18
                    6    25.10.18                             1       fonctions (2)             fonctions (2)           Echantillonnage 1           Exam 1 (1h15)              26.10.18
                    7    01.11.18   5. tableaux (vector)      1       vector                    vector                  Échantillonnage 2      Echantillonnage                 02.11.18
                    8    08.11.18   6. string + struct        1       array / string            array / string                          Compression 1                          09.11.18
                    9    15.11.18                             2       structures                structures                              Compression 2                          16.11.18
                 10      22.11.18   7. pointeurs              2           Série notée (1h45)    pointeurs                        Architecture des ordinateurs                  23.11.18
                 11      29.11.18                             -       pointeurs                 entrées/sorties                           Mémoires                             30.11.18
©EPFL 2018
                 12      06.12.18                             -       entrées/sorties           entrées/sorties                      Stockage/Réseaux                          07.12.18
                 13
Jean-Cédric Chappelier   13.12.18                             -       entrées/sorties           erreurs / exceptions                      Sécurité 1                           14.12.18
& Jamila Sam
                 14      20.12.18   8. étude de cas           -       erreurs / exceptions      Sécurité 2                           Examen final (2h45)                       21.12.18
                                                                                                                           Information, Calcul, Communication – Introduction du cours – 22 / 22
Vous pouvez aussi lire