INTRODUCTION GÉNÉRALE DU COURS - Information, Calcul, Communication : EPFL
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
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
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
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