Université de Sherbrooke, PCP

Quelques raccourcis :

Vous trouverez ici quelques documents et quelques liens pouvant, je l'espère, vous être utiles. Vous pouvez aussi consulter, parmi les liens divers mis à votre disposition, ceux portant sur la multiprogrammation et ceux portant sur le parallélisme. Dans les suggestions de lecture, il est probable que vous ayez un intérêt pour celles portant sur les systèmes répartis.

Les documents qui vous sont fournis ici le sont pour vous rendre service.

Je travaille très fort sur chacun de mes cours. Veuillez ne pas vendre (ou donner) les documents que je vous offre ici à qui que ce soit sans mon consentement. Si des abus surviennent, je vais cesser de rendre ce matériel disponible à toutes et à tous.

Si ces documents vous rendent service, faites-le moi savoir. Mon adresse de courriel est disponible sur la page où on trouve mon horaire.

À propos des séances en classe

Notez qu'en cette saison d'été 2017, un lundi est férié : le 22 mai (fête des patriotes).

Index des séances théoriques
S00 S01 S02 S03 S04 S05 S06 S07 S08 S09 S10 S11 S12 S13 S14
Séance Semaine du Contenu
S00

1 mai

Au menu :

Sur le plan des bases de l'opérationnalisation de la multiprogrammation, nous avons jeté un oeil à ce qui suit :

Sur le plan technique, nous avons survolé les opérateurs de transtypage ISO, propres au langage C++ et à la richesse de son système de types, de même que les conventions d'appel, pour lesquelles le concept est général mais l'écriture utilisée pour fins d'illustration (p. ex. : __stdcall)) est celle d'un compilateur en particulier.

Quelques mots sont « échappés » (condition de course, par exemple) sans être expliqués, mais nous y reviendrons...

S01

8 mai

Au menu :

Nous avons aussi survolé la question des concepts d'atomicité et de volatilité dans divers langages, pour comprendre leur utilité (parfois, leur nécessité), leurs limites et leurs ramifications.

Ceci met en relief les limites des compilateurs et de certaines approches plus traditionnelles à la concurrence sur des ordinateurs munis de plusieurs processeurs ou de plusieurs coeurs, et mène à discuter de synchronisation à très bas niveau.

J'ai ajouté un exemple opérationnel d'une classe Mutex avec deux implémentations (système, usager) sur ../../Sujets/Client-Serveur/mutex-deux-impl.html

S02

15 mai

Au menu :

Le TP00 vous sera proposé durant cette séance.

 

22 mai

Congé (fête des patriotes)

S03

29 mai

Au menu :

S04

5 juin

Au menu :

On m'a demandé de mettre en ligne un exemple d'utilisation d'expressions régulières. En voici un (en C++, mais c'est semblable dans d'autres langages) qui consomme et affiche les identifiants d'un fichier source, sans discriminer en fonction du contexte (ce qui est dans une chaîne de caractères ou dans un commentaire sera aussi affiché) :

#include <regex>
#include <string>
#include <fstream>
#include <iostream>
#include <set>
#include <algorithm>
#include <iterator>
using namespace std;
int main() {
   set<string> ze_mots{ "string", "if", "for" }; // liste incomplète, pour fins d'illustration
   string pattern = "[_a-zA-Z][_a-zA-Z0-9]*";
   regex re{ pattern };
   ifstream in{ "z.cpp" };
   string texte{
      istreambuf_iterator<char>{ in },
      istreambuf_iterator<char>{}
   };
   auto debut = sregex_iterator{ begin(texte), end(texte), re };
   auto fin = sregex_iterator{};
   cout << "Nombre d'identifiants : " << distance(debut, fin) << endl;
   for_each(debut, fin, [](auto mot) {
      cout << mot.str() << endl;
   });
}
S05

12 juin

Au menu :

Le calendrier facultaire nous demande de ne pas tenir d'évaluations cette semaine. Pourtant, je vous suggère que nous ayons un minitest comme à l'habitude, puisque je compte les huit meilleurs du lot... Vous ne pouvez que gagner au change!

Remettez le TP00 soit en début de séance (papier) ou au plus tard à 17 h (électronique)

Le TP01 vous sera proposé durant cette séance.

S06

15 juin 18 h-21 h

Le calendrier facultaire nous demande de ne pas tenir d'évaluations cette semaine. Pourtant, je vous suggère que nous ayons un minitest comme à l'habitude, puisque je compte les huit meilleurs du lot... Vous ne pouvez que gagner au change!

S07

19 juin

Au menu :

  • Q05
  • Considérations de programmation avec Java
    • String ou StringBuilder
      • comparaison avec ==, est-ce raisonnable?
      • String en tant que constantes
      • String en tant que sentinelle
    • encapsulation en l'absence de réels objets
    • à propos des constructeurs, ces mal aimés / mal utilisés
    • à propos des accesseurs
    • à propos des mutateurs
    • à propos de l'immuabilité
  • Bref de multiprogrammation avec Java
    • classe Thread
    • interface Runnable
    • blocs synchronized
  • Bref de multiprogrammation avec C#
  • Brève incursion dans le monde de Go
  • Si le temps le permet, je vous proposerai aujourd'hui un tour d'horizon « rapide » d'un langage de programmation pensé de prime abord pour la résilience face aux pannes, les systèmes embarqués, les systèmes répartis et (surtout, de notre point de vue) les systèmes massivement parallèles. Ce langage, Erlang, met de l'avant un modèle de programmation nommé programmation par acteurs, qui a plusieurs avantages concret pour le développement de systèmes parallèles

Cette semaine est celle des intras. Puisqu'il n'y a pas d'intras dans ce cours, nous tiendrons une séance (humaine!) en classe

26 juin

Relâche pour vous. Profitez-en!

S08

3 juillet

Au menu : à déterminer

 

10 juillet

Votre chic prof sera à Toronto cette semaine pour la rencontre du WG21. Vous pouvez suivre ses aventures sur ../../Sujets/Orthogonal/wg21-2017-Toronto.html si vous le souhaitez

S09

17 juillet

Au menu :

Le TP02 vous sera proposé durant cette séance.

Remettez le TP01 soit en début de séance (papier) ou au plus tard à 17 h (électronique)

S10

24 juillet

Au menu : à déterminer

S11

31 juillet

Au menu : à déterminer

S12

7 août

Au menu : à déterminer

« S14 »

14 août

À la « séance 14 », vous aurez droit à un on-ne-peut-plus-chic examen final, qui se tiendra de 9h à 12h au local D7-3021.

Le TP02 doit être remis en début de séance (si vous privilégiez la forme imprimée) ou à 17 h aujourd'hui (si vous privilégiez la remise électronique).

Code des cas sous étude dans les notes de cours

Les sections qui suivent proposent du code ou des exemples proposés en classe, le tout dans le but de vous permettre d'étudier la chose, de critiquer, de commenter, de questionner et d'expérimenter à loisir.

Le dîner des philosophes

Sélectionnez cette cible pour les sources de l'exemple Philosophes-0. Ces sources implémentent une solution naïve... tellement qu'il ne s'agit pas d'une solution (elle ne fonctionne pas vraiment, contenant une condition de course). Pour une cible plus globale, touchant chacune des solutions proposées, voir ceci.

Sélectionnez cette cible pour les sources de l'exemple Philosophes-1. Cette solution repose sur l'intervention d'un médiateur (un Waiter), qui implémente une politique de permission évitant de réelles situations problématiques. Pour une cible plus globale, touchant chacune des solutions proposées, voir ceci

Sélectionnez cette cible pour les sources de l'exemple Philosophes-2. Cette solution repose sur un protocole entre les philosophes (on ne prend les baguettes que dans un ordre bien précis). Pour une cible plus globale, touchant chacune des solutions proposées, voir ceci

Sélectionnez cette cible pour les sources de l'exemple Philosophes-3. Cette solution repose sur un moniteur capable de d'accorder le privilège de manger à un philosophe seulement s'il est certain que ses deux voisins ne mangent pas déjà. Pour une cible plus globale, touchant chacune des solutions proposées, voir ceci

Résultats des questions quasi-hebdomadaires

Les moyennes des résultats obtenus aux questions quasi-hebdomadaires suivent. Notez que l'écart-type n'est pas significatif étant donné la pondération des questions (sur cinq points, un point de différence représente , ce qui bousille quelque peu cette composante statistique).

 Question   Séance 
Q00 S02
Q01 S03
Q02 S04
Q03 S05
Q04 S06
Q05 S07
Q06 S??
Q07 S??
Q08 S??
Q09 S??
 :

Petite remarque sur les moyennes par question et sur la moyenne globale telles que présentées ici : je ne tiens compte que des participant(e)s au minitest, excluant les absent(e)s ce jour-là (ce qui explique les variations dans la colonne du ) ce qui signifie que la moyenne globale qui servira à évaluer la note finale sera, règle générale, un peu plus faible que ce que vous voyez ici (les absents à chaque minitest auront alors zéro pour ce minitest). Ce qui m'intéresse ici est de montrer les résultats pour celles et ceux qui ont effectivement répondu aux questions.

Consignes des travaux pratiques

Les consignes des travaux pratiques en lien avec le cours sont ci-dessous. Notez que dû aux contraintes du calendrier, il est possible que deux travaux pratiques se chevauchent; tenez-en compte dans votre gestion du temps.

Travail Consignes Date de proposition Date de remise

TP00

IFT630--TP00.pdf

S02 (15 mai) S05 (12 juin)

TP01

IFT630--TP01.pdf

S05 (12 juin) S08 (17 juillet)

TP02

IFT630--TP02.pdf

S08 (17 juillet) « S14 » (16 août)

Valid XHTML 1.0 Transitional

CSS Valide !