Présentation ducours
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travail
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Information Calcul et Communication :
Présentation générale
Jamila Sam
Laboratoire d’Intelligence ArtificielleFaculté I&C
ICC (partie programmation) – Cours 1 : Présentation du cours – 1 / 55
Présentation ducours
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travail
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Plan
I Présenter le cours :
I Objectifs (« Quoi? »)
I Administration (« Comment? »)
I Introduire la programmation : notion d’algorithme
I Présenter l’environnement de travail pour la partie pratique
ICC (partie programmation) – Cours 1 : Présentation du cours – 2 / 55
Présentation ducoursNotes et examens
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travail
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Structure générale du cours ICC
INFORMATIQUE
PROGRAMMATION
Théorie Pratique
Partie théorique −→ Barbara JobstmannPartie pratique −→ Jamila Sam
I Cours obligatoire pour les étudiants du 1er semestre de lasection des Sciences de la Vie.
I Connaissances supposées acquises : aucune
ICC (partie programmation) – Cours 1 : Présentation du cours – 3 / 55
Présentation ducoursNotes et examens
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travail
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Objectifs de la partie théorique
I Présenter l’informatique en tant que discipline scientifique
I Exposer ses fondements conceptuels
I Développer la pensée algorithmique+ « Computational thinking »
I Expliquer les bases de fonctionnement du monde numérique
I Sensibiliser à la sécurité dans ce monde numérique
+ D’avantage lors du cours de vendredi !
ICC (partie programmation) – Cours 1 : Présentation du cours – 4 / 55
Présentation ducoursNotes et examens
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travail
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Objectifs de la partie pratique
La programmation n’est qu’une partie de l’informatique mais unepartie importante et une discipline en tant que telle.Buts de la partie pratique :
1. Apprendre à programmersavoir les bases et connaître correctement au moins unlangage
+ pratique sur le langage C++
2. Appréhender par la pratique certaines des problématiquesconceptuelles vues dans la partie théorique
3. Savoir comment utiliser un ordinateur (sous Linux) dans lecadre du développement de programmes
ICC (partie programmation) – Cours 1 : Présentation du cours – 5 / 55
Présentation ducoursNotes et examens
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travail
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Organisation de la partie théorique
Langue : AnglaisMoyens :
Concepts introduits lors de cours magistrauxex-cathedra
+ Vendredi 915–1100
mis en pratique, de manière guidée, lors deséances d’exercices sur papier
+ Vendredi 1515–1600
ICC (partie programmation) – Cours 1 : Présentation du cours – 6 / 55
Présentation ducoursNotes et examens
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travail
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Organisation de la partie pratique
Langue : FrançaisMoyens :
Concepts introduits ou complémenté lors de coursmagistraux ex-cathedra
+ Jeudi 1015–1100
mis en pratique, de manière guidée, lors deséances d’exercices sur machines
+ Jeudi 1715–1900
Compléments en lignes : vidéos et quizzes(disponibles pour 8 semaines du cours).
ICC (partie programmation) – Cours 1 : Présentation du cours – 7 / 55
Présentation ducoursNotes et examens
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travail
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Séances d’appui
Un support hebdomadaire est offert aux étudiants du cours ICCchaque samedi
Toute question peut être posée (théorie ou pratique)
+ Samedi 1515–11700
Inscrivez-vous aux appuis chaque semaine sur le site Moodleafin que nous puissions gérer convenablement les besoinsen assistants !
ICC (partie programmation) – Cours 1 : Présentation du cours – 8 / 55
Présentation ducoursNotes et examens
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travail
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Équipe
Barbara Jobstmann (Théorie) Jamila Sam (Programmation)
Amedeo Esposito Andrea Caforio Rania Islambouli Kalpani Welivita
(Programmation) (Programmation) (Théorie) (Théorie)
ICC (partie programmation) – Cours 1 : Présentation du cours – 9 / 55
Présentation ducoursNotes et examens
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travail
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Équipe (2)
De nombreux assistants étudiants apportent un soutienindispensable à ce cours :
I 14 assistants-étudiants (théorie)
I 14 assistants-étudiants (pratique)
+ Certains travaillent pour les deux parties, mais pas tous !
La liste complète est disponible sur le site Moodle du cours :
https://moodle.epfl.ch/course/view.php?id=15751
ICC (partie programmation) – Cours 1 : Présentation du cours – 10 / 55
Présentation ducoursNotes et examens
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travail
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Accès au matériel du cours
I Logistique (salles, horaires, planning, forums etc.)
I Contenu (transparents, exercices etc.)
+ Site Moodle du cours :
https://moodle.epfl.ch/course/view.php?id=15751
ICC (partie programmation) – Cours 1 : Présentation du cours – 11 / 55
Présentation ducoursNotes et examens
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travail
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Au temps du COVID . . .
Selon les règles en vigueur en cette rentrée, seul les 1/3 d’entrevous seront sur le campus par semaine.I Le cours donné en présentiel sera diffusé simultanément
via Zoom (voir l’adresse sur Moodle)I Il sera enregistré et l’enregistrement sera mis à disposition
sur le site Moodle quelques heures plus tard.I Les séances d’exercice en présentiel auront un format
classique en salle de TP avec une partie des assistants.I L’autre partie des encadrants seront à disposition des
étudiants en ligne pendant l’horaire du TP+ L’interaction sera fédérée par le forum Piazza du cours (voir
plus bas)I un système de coaching sera mis en place pour un suivi
régulier+ Vous aurez à poster un journal hebdomadaire
+ Vos coachs seront en charge de les lire et de faire remonter lesproblèmes rencontrés
+ Le but de cours est d’essayer d’y apporter des réponsesadéquates le plus rapidement possible
ICC (partie programmation) – Cours 1 : Présentation du cours – 12 / 55
Présentation ducoursNotes et examens
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travail
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Au temps du COVID . . . (2)Il est vivement recommandé de suivre le cours et le TPaux horaires prévus pour le présentiel, même si vous êteshors campus !
I Vous assurez ainsi la régularité de vos acquis et de votreprogression (clé essentielle de réussite au cours).
I Vous pouvez bénéficier d’un maximum de support de la partdes assistants pendant les TPs.
Lors des semaines où vous y êtes autorisé(e), il reste encouragéde venir profiter des cours et exercices sur le campus
Veillez à garder vos distances en salle de cours et à porter votremasque.
Il est difficile de répondre «en live» aux questions posées pendantl’heure de cours par l’audience hors EPFL.
+ Postez sur le forum Piazza et une réponse rapide est garantieaprès le cours
ICC (partie programmation) – Cours 1 : Présentation du cours – 13 / 55
Présentation ducoursNotes et examens
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travail
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Forum Piazza
https://go.epfl.ch/piazza-cs119g
I Constitue le moyen d’interaction central pendant les TPsen non présentiel
I Permet de poster des questions qui seront prises en chargeau fur et à mesure par les assistants :I Les questions peuvent aussi être posées anonymement :-)I Elles peuvent être adressées en particulier aux instructeurs ou
à un instructeur en particulier (votre coach par exemple)I Les assistants vous inviteront en visio-conférence sur Zoom
si la question nécessite une interaction plus directe (vouspourrez ainsi discuter de vive voix et montrer votre code mêmeà distance).
I Les interactions sur Zoom peuvent se faire avec vous seul(e)ou inclure d’autres étudiants si vous le souhaitez.
I Il est attendu que le forum Piazza fonctionne à plein régimependant les horaires de TP, mais vous pouvez l’utiliser dèsqu’une question se pose à vous pendant toute la semaine.
+ Nous ferons tout notre possible pour vous répondre dans lesmeilleurs délais (maximum un jour d’attente)
ICC (partie programmation) – Cours 1 : Présentation du cours – 14 / 55
Présentation ducoursNotes et examens
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travail
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Interaction avec les enseignantsPlusieurs moyens pour contacter les enseignants, assistants etétudiants-assistants pour poser des questions sur le cours ou lesexercices :I Durant les séances d’exercices :
+ c’est le moyen le plus direct si vous êtes autorisé(e) à venir
I Par l’intermédiaire du forum piazza (accessible via Moodle,ou directement depuis l’adresse du forum)
+ moyen idéal pour partager/discuter, faire part de ses difficultéset les résoudre
N’hésitez pas à en faire usage !
I par email s : + pour des aspects administratifs uniquement :Jamila Sam
+ mais pour les cas généraux, préférez le forum.
Les contacts personnels par email, téléphone ou vi-sites devront être strictement réservés aux cas per-sonnels et/ou urgents !
ICC (partie programmation) – Cours 1 : Présentation du cours – 15 / 55
Présentation ducoursNotes et examens
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travail
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Support de coursTout le matériel est accessible via le site Moodle du cours :
I Transparentsparfois enrichis de notes techniques (mini-références)détaillant certains concepts évoqués pendant le cours, enparticulier les éléments du langage C++également parfois des références complémentaires(bibliographiques et/où hyperliens Internet)
I Énoncé des exercicesdisponibles sur le site Moodle en fin de semaine.
I Corrigé des exercicesdisponibles sur le site Moodle en fin de semaine suivante.
I Pour la partie pratique : Vidéos et quizzesofferts par le cours massif en ligne (MOOC) associé au cours(voir plus loin)
ICC (partie programmation) – Cours 1 : Présentation du cours – 16 / 55
Présentation ducoursNotes et examens
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travail
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Livre ? (1)
Pour la partie théorique, le livre suivant est recommandé :
Sous la direction de André Schiper, PPUR, 2016(prix etudiant 35 CHF)
ICC (partie programmation) – Cours 1 : Présentation du cours – 17 / 55
Présentation ducoursNotes et examens
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travail
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Livres? (2)
Le matériel du MOOC, les transparents et divers supports du siteMoodle devraient constituer une documentation suffisante pourla partie programmation !
Si vous souhaitez la compléter, les ouvrages suivants sontégalement recommandés pour la partie pratique :
Marylène Micheloud & Medard RiederProgrammation orientée objets en C++– une approche évolutive, PPUR, 1997.
Il est disponible pour un prix avoisinant les 43 CHF.
ICC (partie programmation) – Cours 1 : Présentation du cours – 18 / 55
Présentation ducoursNotes et examens
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travail
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Livres ? (2)
Le matériel du MOOC, les transparents et divers supports du siteMoodle devraient constituer une documentation suffisante pourla partie programmation !
Si vous souhaitez la compléter, les ouvrages suivants sontégalement recommandés pour la partie pratique :
J.-C. Chappelier & F. SeydouxC++ par la pratique –recueil d’exercices corrigés et aide-mémoire,PPUR, 3ème édition. Empruntable en versionélectronique auprès de la bibliothèque
Il est disponible pour un prix avoisinant les 50 CHF.
ICC (partie programmation) – Cours 1 : Présentation du cours – 18 / 55
Présentation ducoursNotes et examens
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travail
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Couplage au MOOC (1)
MOOC d’initiation à la programmation en C++ :
www.coursera.org/learn/initiation-programmation-cpp/
Notre cours dispose de ses propres séries d’exercices et detransparents de complément
+ Sur-ensemble du MOOC
Matériel MOOC utilisé :1. Vidéos2. Quizzes3. Devoirs (mais ne comptent pas)
+ à utiliser pour se préparer aux tests
ICC (partie programmation) – Cours 1 : Présentation du cours – 19 / 55
Présentation ducoursNotes et examens
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travail
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Couplage au MOOC (2)
I Avant le cours : visionner les vidéos, faire les quizzes etcomprendre certains exercices de niveau 0
I Cours ex-cathedra : résumé et approfondissements+ seulement une heure
I Exercices : mise en pratique
I Certificats (payants) : en aucun cas obligatoires pour cecours
ICC (partie programmation) – Cours 1 : Présentation du cours – 20 / 55
Présentation ducoursNotes et examens
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travail
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Couplage au MOOC (3)
Charge de travail pour la partie pratique :
I 45 mn de cours ex-cathedra : récapitulation etapprofondissements ;
I 1h45 d’exercices en salle de TP : mise en pratique ;
I environ 3h30 heures de travail à la maison :
I 1h30-1h45 sur les vidéos de la semaine suivante
I 0 :15-0 :30 sur les quizzes de la semaine suivante
I environ 1 :30 heures pour commencer à préparer la séried’exercices de la semaine en cours, finaliser celle de lasemaine passée.
ICC (partie programmation) – Cours 1 : Présentation du cours – 21 / 55
Présentation ducoursNotes et examens
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travail
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Notes et examens
Les épreuves de contrôle continu seront les suivantes :
I Mid-term (théorie + programmation) individuel, 2h45
I Examen écrit final (théorie + pratique) individuel, 2h45
ICC (partie programmation) – Cours 1 : Présentation du cours – 22 / 55
Présentation ducoursNotes et examens
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travail
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Calcul de la note
I La note finale du semestre, N, est calculée comme suit :
N =(4∗Nmidt erm+6∗Nexamen)
10
I Les notes intermédiaires ne sont pas arrondies.
I Les cours ICC et «Programmation orientée-objet» sontindépendants. La moyenne arrondie de chaque cours esttransmise au SAC à la fin de chaque semestre.
Afin de nous permettre un suivi régulier de votre progression,5% de la note de chaque examen est dédié au rendu desjournaux hebdomadaires sur Moodle
ICC (partie programmation) – Cours 1 : Présentation du cours – 23 / 55
Présentation ducoursNotes et examens
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travail
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Notes et examensMid-terem
Votre progression à mi-semestre sera évaluée par un examenécrit portant sur le contenu du cours et les séances d’exercices,aussi bien pour la partie théorique que pratique.
Réalisé individuellement
Documentation autorisée
Date :
Vendredi 30 Octobre
ICC (partie programmation) – Cours 1 : Présentation du cours – 24 / 55
Présentation ducoursNotes et examens
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travail
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Notes et examensExamen final
Le semestre sera clôturé par un examen écrit portant sur lecontenu du cours et les séances d’exercices, aussi bien pour lapartie théorique que pratique.
Réalisé individuellement
Documentation autorisée
Date :
Vendredi 18 Décembre
ICC (partie programmation) – Cours 1 : Présentation du cours – 25 / 55
Présentation ducours
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travail
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Qu’est-ce que la programmation?
«PROGRAMME» :Conception :quelles notes en-chainer? Exécution : tourner la
manivelleRésultat : mélodie
Réalisation : percerles trous aux bonsendroits
ICC (partie programmation) – Cours 1 : Présentation du cours – 26 / 55
Présentation ducours
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travail
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Algorithme?
+ solution calculatoire/mécanique/itérative/... à un problème
"Spécification d’un schéma de calcul sous forme d’une suited’opérations élémentaires obéissant à un enchaînementdéterminé"
[Encyclopedia Universalis]
AlgorithmeI suite finie de règles à appliquer,I dans un ordre déterminé,I à un nombre fini de données,I se terminant (i.e., arriver, en un nombre fini d’étapes, à un
résultat, et ce quelque soit les données traitées).
ICC (partie programmation) – Cours 1 : Présentation du cours – 27 / 55
Présentation ducours
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travail
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Algorithme
Un algorithme est un moyen pour un humain de représenter larésolution par calcul d’un problème à une autre personnephysique (humain) ou virtuelle (calculateur) ; un algorithme est :
I séquentiel si ses opérations s’exécutent en séquence,I parallèle si certaines de ses opérations s’exécutent en
parallèle,I réparti si certaines de ses opérations s’exécutent sur
plusieurs machines.
ICC (partie programmation) – Cours 1 : Présentation du cours – 28 / 55
Présentation ducours
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travail
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Toute une théorie
Formalisation : dans les années (19)30 par des mathématiciens :Gödel, Turing, Church, Post, ...
+ fonctions "calculables" et machines de Turing : abstractionmathématique des notions de traitement (suite d’opérationsélémentaires), de problème et d’algorithme.
+ la partie théorique du cours a pour but de vous en donner unaperçu !
ICC (partie programmation) – Cours 1 : Présentation du cours – 29 / 55
Présentation ducours
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travail
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Algorithmes et données
« Voulez-vous danser? » : premier algorithme :
Voulez−vousdanser?
Choisir une
personne
ouiSuccess story
non
Données :
I PersonneI Ensemble de N
personnes
+ Il n’est pas garanti que l’algorithme puisse se terminer !
ICC (partie programmation) – Cours 1 : Présentation du cours – 30 / 55
Présentation ducours
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travail
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Algorithmes et données
« Voulez-vous danser? » : deuxième algorithme :
Choisir la
personne i
Voulez−vous
danser?
i = i+1
i > N
i=1
Hopeless
non
oui
non oui
Success story Données :
I PersonneI Ensemble
ordonné de Npersonnes
I les données sont structuréesI l’algorithme se termine nécessairement
(au pire N essais successifs)I . . . mais il n’est pas sûr qu’il soit le plus efficace possible !
ICC (partie programmation) – Cours 1 : Présentation du cours – 30 / 55
Présentation ducours
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travail
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Conception d’un programmeConcrètement, concevoir un programme c’est décomposer latâche à automatiser sous la forme :I d’une séquence d’instructions (traitements)I et de données permettant une mise en oeuvre efficace et
correcte des traitements.
traitements données
influencent
opèrent sur
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éesdes mauvaises
ICC (partie programmation) – Cours 1 : Présentation du cours – 31 / 55
Présentation ducours
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travail
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Algorithmes – objectifs
On attend d’un algorithme qu’il :I se termine,I produise un résultat correct,I pour toute donnée d’entrée valable.
+ Il n’y a (mal)heureusement aucune recette pour produire unalgorithme !
ICC (partie programmation) – Cours 1 : Présentation du cours – 32 / 55
Présentation ducours
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travail
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Difficulté de l’Informatique
Un programme doit être valable pour toute une gamme d’entrées !
+ Impossible de vérifier par des essais : on ne pourra jamaistester tous les cas.
Vérification par preuves mathématiques.
Importance du travail soigneux et mûrement réfléchi !
ICC (partie programmation) – Cours 1 : Présentation du cours – 33 / 55
Présentation ducours
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travail
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Algorithme 6= Programme
Un algorithme est indépendant du langage de programmationdans lequel on va l’exprimer et de l’ordinateur utilisé pourl’exécuter
C’est une description abstraite des étapes conduisant à la solutiond’un problème.
Algorithme = partie conceptuelle d’un programme(indépendante du langage)
Programme = implémentation (i.e., réalisation) de l’algorithme,dans un langage de programmation et sur un système particulier.
+ Premier programme au cours prochain
ICC (partie programmation) – Cours 1 : Présentation du cours – 34 / 55
Présentation ducours
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travail
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Lien entre les parties théorique et pratique
I L’écriture de programmes est indissociable de la conceptiond’algorithmes.
I Certains exercices de la partie pratique vous permettrontd’expérimenter plus concrètement des problématiquesconceptuellement abordées dans la partie théorique :
I Ecriture d’algorithmes simples
I Mise en pratique de techniques de résolution algorithmiques(récursion, dichotomie)
I Théorie de la complexité
ICC (partie programmation) – Cours 1 : Présentation du cours – 35 / 55
Présentation ducours
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travail
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Pour préparer le prochain cours
I Vidéos et quiz du MOOC semaine 1 :I Introduction [09 :55]I Variables [18 :08]I Variables : lecture/écriture [13 :43]I Expressions [14 :50]
+ A échelonner sur plusieurs jours pour éviter l’« overdose »
I Le prochain cours :I Jeudi 10h15 à 11h (résumé et compléments)
ICC (partie programmation) – Cours 1 : Présentation du cours – 36 / 55
Présentation ducours
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travailSystèmed’exploitation
Shell
Système de fichiers
Editeurs et EDI
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Aspects logiciels d’un ordinateur
Pour fonctionner, un ordinateur doit pouvoir interagir avecl’environnement :
I comprendre, c’est-à-dire ici traiter, les informations luiprovenant (clic de souris, touche clavier, . . . )
I produire des sorties (sons, image écran, . . . )
Cela se fait grâce à des programmes (ou « logiciels ») dont leplus fondamental, est le système d’exploitation.
Le système d’exploitation est responsable de la gestion desinteractions entre l’unité centrale et ses périphériques,Exemples : MacOS X, Linux, Solaris, Windows...
ICC (partie programmation) – Cours 1 : Présentation du cours – 37 / 55
Présentation ducours
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travailSystèmed’exploitation
Shell
Système de fichiers
Editeurs et EDI
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Catégories de Logiciels
logiciels d’application traitement de tâches spécifiques auxutilisateurstraitements de textes, tableurs, logiciels de comptabilité, CAO, ....
logiciels utilitaires servant au développement des applicationsassembleurs, compilateurs, dévermineurs, gestionnaires de versions,
gestionnaires de fenêtres, librairies d’outils, ...
logiciels systèmes regroupés dans le système d’exploitation+ présents au cœur de l’ordinateur, ces logiciels sont à labase de toute exploitation, coordonnant les tâchesessentielles à la bonne marche du matériel.
ICC (partie programmation) – Cours 1 : Présentation du cours – 38 / 55
Présentation ducours
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travailSystèmed’exploitation
Shell
Système de fichiers
Editeurs et EDI
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Système d’exploitation
matériel
applications / services
gestionnaire de fenêtres
système d’exploitationinterpréteur d
e commandes
...
(Windows)
(MacOS)
(DOS)
Linux
OpenBSD
FreeBSD
Solaris
ICC (partie programmation) – Cours 1 : Présentation du cours – 39 / 55
Présentation ducours
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travailSystèmed’exploitation
Shell
Système de fichiers
Editeurs et EDI
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Interaction avec LinuxComment interagir avec votre système d’exploitation?
+ avec un interpréteur de commande (« shell »)
matériel
applications / services
gestionnaire de fenêtres
interpréteur de commandes
système d’exploitation
Parmi les shells Unix les plus utilisés, citons : Bourne [Again] shell (sh et bash), Cshell (csh), Z shell (zsh), et celui présent par défaut sur les comptes du cours,l’Enhanced C shell (tcsh). ICC (partie programmation) – Cours 1 : Présentation du cours – 40 / 55
Présentation ducours
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travailSystèmed’exploitation
Shell
Système de fichiers
Editeurs et EDI
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Interpréteur de commandes (1)
Pour interagir avec l’utilisateur, un système informatique doitdisposer au minimum d’un interpréteur de commandes(« shell »)
Contrairement à d’autres architectures moins modulaires, l’interpréteur decommandes (ainsi que le gestionnaire de fenêtres) des systèmes de typeUNIX est un composant externe au SE.Ne faisant pas directement partie du système, ils peuvent être changés àsouhait.
Le shell attend les ordres que l’utilisateur transmet par le biais del’interface, décode et décompose ces ordres en actionsélémentaires, et finalement réalise ces actions en interagissantavec le système d’exploitation.
Parmi les shells Unix les plus utilisés, citons : Bourne [Again] shell (sh etbash), C shell (csh), Z shell (zsh), et celui présent par défaut sur lescomptes du cours, l’Enhanced C shell (tcsh).
ICC (partie programmation) – Cours 1 : Présentation du cours – 41 / 55
Présentation ducours
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travailSystèmed’exploitation
Shell
Système de fichiers
Editeurs et EDI
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Interpréteur de commandes (2)
Depuis un interpréteur de commandes vous aurez la possibilitéde :I lancer des programmes (par exemple un navigateur web,
commande firefox)I exécuter des commandes Unix (on peut aussi regrouper
plusieurs commandes dans un fichier alors appelé script).I définir des variables d’environnement,I renommer ou définir de nouvelles commandes (alias), etc...
La plupart des interpréteurs offrent également des facilitésd’édition comme le rappel des commandes précédentes(historique des commandes), la complétion (complète le nom dufichier lorsqu’il n’y a plus d’ambiguïté), la correction en cas decommande invalide, ...
ICC (partie programmation) – Cours 1 : Présentation du cours – 42 / 55
Présentation ducours
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travailSystèmed’exploitation
Shell
Système de fichiers
Editeurs et EDI
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
La commande man
man permet d’accèder à l’aide du sytème (« page de manuel »)
Utilisations :man nomman section nomExemples : man tcsh man ls man man
Les man-pages sont organisées en différentes sections :1 commandes et programmes2 appels systèmes (noyau)3 bibliothèques logicielles4 fichiers spéciaux (/dev)
5 formats de fichiers6 jeux7 divers8 administration système
Comparer :man printf et man 3 printfman time et man 2 timeman man et man 7 man
man -a nom pour avoir toutes les man-pages portant sur ce nom.(’q’ pour quitter une manpage et passer à la suivante)
ICC (partie programmation) – Cours 1 : Présentation du cours – 43 / 55
Présentation ducours
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travailSystèmed’exploitation
Shell
Système de fichiers
Editeurs et EDI
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Système de fichiers
Le concept de fichiers est une structure adaptée aux mémoiresde masse permettant de regrouper des données.
Un fichier c’est une collection ordonnée de données,représentant une entité pour l’utilisateur.
Le système d’exploitation va donner corps au concept defichiers, c’est-à-dire les gérer : les créer, détruire, modifier, lire, etoffrir la possibilité de les désigner par des noms.
Dans le cas de systèmes multi-utilisateurs, il faut de plus assurerla confidentialité de ces fichiers, en protégant leur contenu duregard des autres utilisateurs.
ICC (partie programmation) – Cours 1 : Présentation du cours – 44 / 55
Présentation ducours
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travailSystèmed’exploitation
Shell
Système de fichiers
Editeurs et EDI
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Structuration d’un système de fichiers
Grand nombre de fichiers
+ fournir un moyen pour organiser ces fichiers
+ concept de répertoire (directory)
Un répertoire est une collection (généralement non ordonnée) defichiers ou de répertoires (alors appelés sous-répertoires).Ils permettent d’organiser l’ensemble des fichiers dans unestructure arborescente
= un répertoire
= un fichier
ICC (partie programmation) – Cours 1 : Présentation du cours – 45 / 55
Présentation ducours
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travailSystèmed’exploitation
Shell
Système de fichiers
Editeurs et EDI
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Structuration d’un système de fichiers (2)
En plus de la notion de répertoire, la plupart des systèmespermettent également de définir des liens symboliques vers desfichiers ou des répertoires (« soft links » avec UNIX, ou« raccourcis » dans d’autres systèmes), qui permettent de définirdes alias (i.e., autres noms)+ permet d’assouplir la structure d’arbre
ICC (partie programmation) – Cours 1 : Présentation du cours – 46 / 55
Présentation ducours
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travailSystèmed’exploitation
Shell
Système de fichiers
Editeurs et EDI
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Nommage des fichiers : absolu et relatifOn appelle « chemin » la succession des répertoires conduisantà un fichier, à partir d’un endroit donné dans l’arborescence.
Pour désigner un fichier, il est possible de procéder de deuxmanières :I à l’aide d’un chemin absolu : on prend comme convention un
parcours de l’arbre partant de la racineDans le cas de plusieurs arbres (« forêt »), le nom du lecteurest tout d’abord spécifié (i.e. on désigne la racine de l’arbre).
home
tmp
julie
marc
cours a
/
/home/julie/cours/a
I à l’aide d’un chemin relatif : c’est la succession desrépertoires à traverser, à partir d’un autre répertoire del’arborescence
../julie/cours/a
cours/a
home
tmp
julie
marc
cours a
/
ICC (partie programmation) – Cours 1 : Présentation du cours – 47 / 55
Présentation ducours
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travailSystèmed’exploitation
Shell
Système de fichiers
Editeurs et EDI
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Nommage des fichiers (2)
Le répertoire parent d’un sous-répertoire est désigné par ..,tandis que le répertoire lui-même est désigné par .
Là il y a un point et là deux
Exemples de noms de fichiers (« chemins ») :/home/prof/Work/cours/Info1/introduction2.tex
../images/paysages.gif
../../../toutlahaut.ps.gz
Sous UNIX/Linux, le délimiteur entre nom de répertoire et nom defichier dans les chemins est la barre oblique « slash » : /
D’autres systèmes utilisent l’« antislash » ou « backslash » : \D:\Users\Himher\Personnal Documents\introduction2.pdf
ICC (partie programmation) – Cours 1 : Présentation du cours – 48 / 55
Présentation ducours
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travailSystèmed’exploitation
Shell
Système de fichiers
Editeurs et EDI
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Système de fichiers UNIX/Linux
Chaque utilisateur possède un répertoire personnel (« homedirectory ») dans lequel il peut placer ses fichiers personnels.C’est la racine du sous-arbre réservé spécifiquement à unutilisateur
Les noms de fichiers possèdent généralement une extension,délimitée par un .
Là aussi il y a un point
Cette extension peut être utilisée pour indiquer la nature du fichier,c’est-à-dire l’application à laquelle il est associé.Contrairement à d’autres systèmes d’exploitation, sousUNIX/Linux les fichiers peuvent avoir 0, 1 ou plusieursextension(s).
Exemples :serie1.cc : fichier de code source C++
cours-1.ps.gz
1re extension indiquant un fichier Postscript2e extension indiquant un fichier compressé avec gzip
ICC (partie programmation) – Cours 1 : Présentation du cours – 49 / 55
Présentation ducours
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travailSystèmed’exploitation
Shell
Système de fichiers
Editeurs et EDI
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Fichiers « cachés »
On distingue les fichiers/répertoires « cachés » au moyen d’uneconvention de nommage : ils sont préfixés par un .
Encore un point !
Exemple : .cshrc
Ce sont des fichiers/répertoires dont l’utilisateur n’a pas besoinexplicitement (ou pas souvent), souvent des fichiers deconfiguration.
Pour voir les fichiers/répertoires « cachés », utilisez la commandels -a
ICC (partie programmation) – Cours 1 : Présentation du cours – 50 / 55
Présentation ducours
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travailSystèmed’exploitation
Shell
Système de fichiers
Editeurs et EDI
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Fichiers et shell
Un certain nombre des fonctions du shell sont relatives ausystème de fichiers :I Navigation dans la structure des fichiers :
I répertoire courant (pwd)I modification de ce répertoire (cd = change directory),I lister le contenu d’un répertoire (ls),I copier des fichiers (cp) et les déplacer (mv),I effacer des fichiers (rm),I créer des liens (ln), etc...
Toutes les commandes soumises au shell sont interprétéesrelativement au répertoire courant.
ICC (partie programmation) – Cours 1 : Présentation du cours – 51 / 55
Présentation ducours
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travailSystèmed’exploitation
Shell
Système de fichiers
Editeurs et EDI
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Fichiers et shell (2)
Les caractères de substitution (ou expressions régulières)permettent de spécifier plusieurs fichiers en une seule formule? : remplace un seul caractère arbitraire* : remplace une séquence quelconque de caractères[ ] : remplace un seul caractère parmi ceux entre crochets.
cours-?.ps.gz cours-*
cours-1.ps.gzcours-2.ps.gz...cours-A.ps.gz
cours-1.pdfcours-1.ps.gzcours-10.ps.gzcours-2.ps.gz...cours-A.texcours-A.ps.gz
ICC (partie programmation) – Cours 1 : Présentation du cours – 52 / 55
Présentation ducours
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travailSystèmed’exploitation
Shell
Système de fichiers
Editeurs et EDI
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Caractères de substitutionExemples
ls ??? liste tous les fichiers de trois lettres du répertoirecourant
ls *.txt liste tous les fichiers du répertoire courant se ter-minant par .txt
ls *.[ch] liste tous les fichiers du répertoire courant se ter-minant par .c ou par .h
ls *.cc *.h liste tous les fichiers du répertoire courant se ter-minant par .cc ou par .h
ICC (partie programmation) – Cours 1 : Présentation du cours – 53 / 55
Présentation ducours
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travailSystèmed’exploitation
Shell
Système de fichiers
Editeurs et EDI
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Méta-caractères
*, ?, [, ] sont donc des caractères réservés (ou« méta-caractères »), en ce sens qu’ils ont un rôle particulier dansl’interpréteur de commandes.
Il en existe d’autres : | \& ; ( ) < > $ \ " ’ ~ ‘
Si on souhaite les utiliser, il faut les protéger ce qui se fait avec le« backslash » : \
Exemple :echo \\ abc \; \<affiche \ abc ; <
ICC (partie programmation) – Cours 1 : Présentation du cours – 54 / 55
Présentation ducours
Qu’est-ce qu’unalgorithme?
Annexe :Environnementde travailSystèmed’exploitation
Shell
Système de fichiers
Editeurs et EDI
c©EPFL 2020-21Jamila Sam& Jean-Cédric Chappelier
Editeurs de texte
Pour écrire et modifier des fichiers le moyen le plus naturel estd’utiliser un un éditeur de texte tels que :I EmacsI GeanyI geditI SciteI SublimeTextI notepad ou wordpad (Windows)I WinEdt (Windows)I jEdit (Windows, Mac OS X, Linux, ...)I . . .
Connaître un/des éditeur(s) de texte est absolumentindispensable !
+ La mini-référence "Environnement Unix", disponible sur le sitedu cours dédie une de ses sections à Emacs et Geany. Vousaurez aussi l’occasion de les utiliser en TP.
ICC (partie programmation) – Cours 1 : Présentation du cours – 55 / 55