Info 111 «Programmation Impérative»#

Vous trouverez sur ce site le matériel pédagogique et autres informations à propos du cours Programmation impérative du portail de Licence 1 «Mathématique - Informatique» et des Licences «double diplôme» adossées à la Faculté des sciences d’Orsay, Université Paris-Saclay.

Avec le cours compagnon Introduction à l’informatique, il fait suite au cours Info 111, Introduction à l’informatique du premier semestre du précédent portail Math-Physique-Informatique.

Suivre ce cours sans être inscrit?

Vous souhaitez vous initier à la programmation, à C++, mais n’êtes pas inscrit dans l’une des formations ci-dessus? Qu’à cela ne tienne, vous êtes les bienvenus pour utiliser le matériel pédagogique ici présent, en autonomie. C’est un bien commun numérique.

Prérequis: une connexion internet et un navigateur web

Avertissement

  • Les instructions pratiques sont rédigées à l’attention de nos étudiants avec des séances hebdomadaires en présentiel. Elles demandent probablement un peu d’interprétation pour les adapter à votre situation.

  • Le matériel pédagogique a été testé massivement pour un usage par nos étudiants. Peu pour un usage externe. Retours et commentaires bienvenus.

  • Nous ne délivrons ni certification ni diplôme.

Note

Comment s’y prendre

Rendez-vous sur la Case Départ et suivez les instructions.

  • Si vous êtes étudiant ou personnel d’une université ou autre institution du supérieur en France, vous pourrez utiliser le service JupyterHub@Paris-Saclay pour travailler sur les feuilles d’exercices interactives (authentification: Féderation Renater Éducation et Recherche). Sinon, vous pourrez utiliser le «service de secours» Binder, ou installer les logiciels concernés, ou autre.

  • Si vous êtes étudiant ou personnel de l’Université Paris-Saclay, vous pourrez déposer votre travail sur le service GitLab de Paris-Saclay et bénéficier de la correction automatique; le groupe à indiquer sera alors «AuditeursLibre». Sinon, vous devrez vous authentifier comme anonyme dans le «tableau de bord», et ignorer les instructions à propos de «déposer».

Objectifs pédagogiques#

  • Donner un aperçu de ce qu’est l’informatique, en tant que science. Voir l’excellente conférence de François Élie, à lire ou écouter … et méditer …: Quelle école pour la société de l’information?

  • Concrètement, aborder les bases de la programmation impérative (variables, conditionnelles, boucles, fonctions, tests, documentation, tableaux, programmation modulaire).

  • Nourrir les étudiants qui programment depuis des années, tout en soutenant pas à pas ceux qui découvrent cette matière.

  • Donner des bases solides à tous, car tous seront amenés a côtoyer l’informatique sous une forme ou une autre, qu’ils se destinent à une carrière d’informaticien ou qu’ils aient besoin de traiter des informations ou automatiser des tâches dans leur métier.

Règles#

  • Les retardataires ne sont pas admis en amphi. Dura lex, sed lex.

  • En arrivant en TD, le cours est considéré comme appris. En particulier vous devez être capables de reproduire précisément les points clefs (notamment syntaxe et sémantique des instructions).

  • D’une semaine sur l’autre, les exercices de TD et TP (non marqués d’un trèfle) sont considérés comme faits et maîtrisés. Ce dernier point nécessite quelques heures de travail par semaine en dehors des séances de TD et TP; pour travailler sur ces derniers, voir comment accéder au matériel pédagogique interactif.

  • Documents autorisés au partiel et à l’examen: la fiche de résumé de syntaxe C++ distribuée lors du TD 2 (pour ceux qui ont TD), avec au dos toutes les notes personnelles manuscrites que vous souhaitez. Pour les étudiants inscrits en Français Langue Étrangère: un dictionnaire papier.

Recommandations pour travailler efficacement#

  • Parcourir à l’avance les notes de l’amphi à venir.

  • Venir systématiquement en amphi, être actif, prendre des notes.

  • Relire systématiquement les notes d’amphi le soir même.

  • Venir systématiquement en TD / TP, être actif, finir le maximum d’exercices pour en avoir moins à faire à la maison.

Pour aller plus loin, pour s’amuser#

  • Un cours d’introduction à la programmation avec Python et Jupyter, proche de ce cours de C++.

  • Coding Game propose de très nombreux exercices de tous niveaux en français sous la forme de jeux vidéos dans de nombreux langages de programmation (dont C++ et Python). Sont proposés régulièrement des défis à l’ensemble de la communauté, souvent sponsorisés par des grands groupes informatiques. Très ludique et très pédagogique, c’est pour tout le monde.

  • Code combat Vous avez aimé laby? Le même principe mais cette fois vous êtes un aventurier en quête de donjons et de trésors…

  • France IOI: Cours en ligne de programmation et d’algorithmique, en français, dans de nombreux langages de programmation. Cette association propose aussi de participer à de nombreux concours.

  • Untrusted Un petit jeu dans lequel pour gagner, vous devez tricher! En anglais et en JavaScript (qui ressemble beaucoup au C++).

  • Core War est un très vieux jeu (1984) qui se joue à plusieurs. Chacun programme un processus dans un petit bout de mémoire, l’objectif est de rester le dernier en vie… Pour les amoureux de jeux rétros, de langage machine et de lunettes à double foyer.

  • Vous aimez les défis et les longues suites de chiffres. Vous aimez rentrer dans le fond des choses et donner des réponses élégantes à des problèmes complexes… Ne cherchez pas plus loin, le projet Euler est fait pour vous! Pour les étudiants expérimentés qui n’ont pas peur de vouloir progresser. (En anglais)

  • Game Shell Un jeu pour apprendre le shell.

Me contacter#

Documents#

Projet#

Informations pratiques#

  • Responsable du module: Nicolas Thiéry

  • 1h30 d’amphi par semaine (lundi matin)

  • 1h30 TD, 2h TP

  • Langage de programmation: C++

  • Environnement de programmation: C++ interprété avec Jupyter puis compilation en ligne de commande.

  • Évaluation: examen mi-semestre: 25%, examen final: 45%, projet: 20%, contrôles, TP: 10%.

Quelques références#

À propos des documents#

Les documents de ce cours sont distribués sous licence libre Creative Commons Attribution – Partage dans les mêmes conditions 3.0 France (CC BY-SA 3.0 FR).

L’auteur principal en est Nicolas M. Thiéry. Les chargés de TD ont contribué fortement aux sujets de TD, TP, et projet: Rachid Gherbi, Simon Clavière, Weijia Wang, Vincent Berthier, Weiya Chen, Adrien Chan-Hon-Tong, Ignace Kangni Kueviakoe, Hui Ding, Aladin Virmaux, Asma Gharsallaoui, Viviane Pons, Adeline Pierrot, Jean-Baptiste Priez, Ataúlfo Antón, Herilalaina Rakotoarison, Fabrice Lebeau, Hayet Brabra, Abdallah Benzine, Sara Meftah, Oumaima El Joubari, Alba Málaga, Teo Sanchez, Hugo Mlodecki, Sabine Marduel, Robin Pelle, Abbass Madi, Houssem E. Hachmaoui, Virgile Robles, Abdallah Benzine, Balthazar Charles, Hussein Chaabane, Jouhayna Harmouch, Daniel Tamayo, Lucas Greaux, Thibaut Houdy, Nicolas Bitar, Thomas Soullard, Capucine Nghiem, Sylvie Delaët, Samuel Lelièvre, …

De nombreuses illustrations sont reprises de Wikipedia.

Les sources sont disponibles sur notre dépôt git public, sauf les sujets de projet et d’examen qui sont sur un dépôt privé. Contactez-moi si vous souhaitez y accéder pour les reprendre pour d’autres cours.