Voir le document - Bibliothèque de l`Université de Toulon
Transcription
Voir le document - Bibliothèque de l`Université de Toulon
UNIVERSITÉ DE TOULON ET DU VAR U.F.R. de Sciences et techniques Licence d’Informatique ANNALES D’EXAMENS 2001-2002 L2: Structure des ordinateurs 6 novembre 2001 I : Performances Un programme de test est exécuté sur une machine dont la fréquence d’horloge est 1,2 Ghz. Le temps d’exécution du programme est de 6s et le CPI de 12. 1) Quel est le débit en MIPS de cette machine ? 2) Quel est le nombre total d’instructions exécutées ? L’utilisation d’un dispositif qui permet d’améliorer d’un facteur 2 certaines instructions du programme réduit le temps d’exécution à 4s. 3) Combien d’instructions sont-elles concernées par ce dispositif ? II : Codage Le code linéaire binaire suivant permet de corriger une erreur. Sa matrice de contrôle est H= 110100 101010 011001 Le mot (0 0 1 1 1 0) est-il correct ? S’il ne l’est pas, corrigez-le. On ne demande pas de justifier la capacité de correction, seuls les calculs nécessaires au décodage de ce mot seront effectués. III : Logique Une partie du code de Aiken 2-4-2-1 code les chiffres de 0 à 7 de la manière suivante : 0 : 0000 5 : 1011 1 : 0001 6 : 1100 2 : 0010 7 : 1101 3 : 0011 4 : 0100 On veut construire le transcodeur qui permet de passer de l’écriture binaire usuelle à son écriture binaire dans le code de Aiken. b2 b1 b0 → a3 a2 a1 a0 Pour 7 par exemple : binaire usuel 111 Aiken 1101 Donnez les expressions de a3 et de a0 en fonction des bi . IV: arithmétique Donnez le codage simple précision de -2,25 suivant la norme IEEE 754. Exprimez ce codage sous forme d’un nombre hexadécimal. Quel est l’écart entre -2,25 et son prédécesseur ? L1 : Mathématiques novembre 2001 Durée : 2 heures. Tous documents autorisés. Les exercices sont indépendants. Exercice 1 (7 points) On considère l’ensemble E = {a, b} (les éléments a et b sont donc distincts.) Déterminer le nombre d’éléments de E 6 contenant trois composantes consécutives de la forme a, b, a. Exercice 2 (7 points) Définition : une relation d’équivalence R dans un ensemble fini E est dite équilibrée si toutes les classes d’équivalence ont le même cardinal. Si ce nombre est t, on dit que R est t-équilibrée. Partie 1 1. Donner un exemple de relation d’équivalence équilibrée dans l’ensemble E = {1, 2, 3, 4, 5, 6}. 2. Montrer que s’il existe une relation d’équivalence t-équilibrée R dans un ensemble E quelconque, alors t divise le cardinal de E. Partie 2 On considère maintenant deux ensembles finis E et F et f une application de E dans F . 1. Soit R l’équivalence d’application de f . Montrer que f est injective si et seulement si R est t-équilibrée avec t = 1. 2. Montrer que si R est équilibrée alors le cardinal de l’ensemble image de f divise le cardinal de E. Exercice 3 (6 points) Soit E l’ensemble des applications de N dans R+ \{0}. On définit une relation R dans E de la manière suivante : f Rg ⇐⇒ (∃α, β ∈ R+ \{0}, ∃n0 ∈ N t.q. ∀n ≥ n0 , αg(n) ≤ f (n) ≤ βg(n)) 1. Montrer que R est une relation d’équivalence. 2. La relation S définie dans E par f Sg ⇐⇒ (∃β ∈ R+ \{0}, ∃n0 ∈ N t.q. ∀n ≥ n0 , 0 ≤ f (n) ≤ βg(n)) est-elle une relation d’équivalence ? Justifiez votre réponse. Examen de C++ mai 2002 Durée 1h30 - cours autorisé ATTENTION : soignez la présentation et l’écriture. Chaque réponse doit être accompagnée d’une justification. Le barème est donné à titre indicatif. UN ÉDITEUR ORIENTÉ LIGNE AVEC MENUS TEXTUELS L’objectif de cet exercice est de construire un mini-éditeur orienté ligne qui respecte les commandes de vi. On veut qu’il propose un menu textuel donnant accès aux différentes commandes disponibles sur l’éditeur. II n’est pas nécessaire de connaı̂tre vi et ses commandes (les touches de commandes vi sont données à titre indicatif entre parenthèses, elles ne seront pas exploitées dans la suite). Enfin, sachez que l’éditeur orienté ligne n’est qu’un prétexte. Les principes présentés ici pourraient être appliqués dans d’autres contextes. Pour simplifier, nous ferons les suppositions suivantes : 1. Nous nous limitons à l’édition d’une seule ligne dont la taille maximale est fixée (arbitrairement) à 200 caractères. 2. L’interface utilisateur est minimale (Fig. 1). Elle affiche la ligne en cours d’édition, le menu et demande le choix de l’utilisateur. En fonction de la commande sélectionnée, d’autres informations peuvent être demandées à l’utilisateur. Dans le cas où la ligne est vide, le caractère tilde (˜) est affiché. Il est reconnu que pour qu’une interface homme-machine soit conviviale, il faut que les opérations impossibles à réaliser ne puissent pas être sélectionnées par l’utilisateur. Ainsi les entrées des menus ne pouvant pas être exécutées sont généralement grisées. Dans notre cas, nous supprimerons la lettre d’accès. La figure 2 montre l’état de l’éditeur juste après son lancement. On constate, par l’absence de leur numéro de sélection, que de nombreuses opérations ne sont pas réalisables. La position du curseur [s]ur une ligne est repérée par les crochets. 1 - Ajouter un caractère au début de la ligne (I) 2 - Ajouter un caractère à la fin de la ligne (A) 3 - Placer le curseur au début de la ligne (0) 4 - Avancer le curseur d’une position à droite (l) 5 - Reculer le curseur d’une position à gauche (h) 6 - Remplacer le caractère sous le curseur (r) 7 - Supprimer le caractère sous le curseur (x) 8 - Ajouter un caractère avant le curseur (i) 9 - Ajouter un caractère après le curseur (a) 10- Supprimer tous les caractères de la ligne (dd) 0 - Quitter Votre choix : Fig. 1 - Exemple de l’interface textuelle de l’éditeur. ˜ 1 - Ajouter un caractère au début de la ligne (I) 2 - Ajouter un caractère à la fin de la ligne (A) - - Placer le curseur au début de la ligne (0) - - Avancer le curseur d’une position à droite (l) - - Reculer le curseur d’une position à gauche (h) - - Remplacer le caractère sous le curseur (r) - - Supprimer le caractère sous le curseur (x) - - Ajouter un caractère avant le curseur (i) - - Ajouter un caractère après le curseur (a) 10- Supprimer tous les caractères de la ligne (dd) 0 - Quitter Votre choix : Fig. 2 - État de l’éditeur juste après son lancement (ligne vide). Dans la suite, nous définissons la notion de ligne, puis nous proposons une modélisation de menus textuels réutilisables qui prennent en compte la notion d’opérations non réalisables, enfin nous construisons l’éditeur orienté ligne. Exercice 1. (3 pts) Définition d’une ligne. L’interface de la classe Ligne vous est donnée en annexe. Une ligne contient un nombre quelconque de caractères. Il est possible de rajouter un caractère au début ou à la fin de la ligne. La ligne définit un curseur qui peut être déplacé vers 1a droite (avancer) ou vers la gauche (reculer). Le caractère sous le curseur est appelé caractère courant. Il est possible d’effectuer des opérations relatives au curseur (remplacer le caractère courant, le supprimer, insérer un caractère avant ou après le caractère courant). 1. Expliquer succinctement les différents éléments du langage C++ qui composent la classe Ligne. Attention : il n’est pas demandé d’expliquer les opérations définies mais de décrire les éléments constitutifs du langage C++ qui apparaissent dans cette classe. 2. Indiquer, s’il y en a, les maladresses que contient cette classe. Justifier vos réponses. Proposer éventuellement une manière de supprimer ces maladresses. 3. Écrire l’implantation (en C++) des opérations suivantes (et seulement des opérations suivantes) : le constructeur, raz, avancer, remplacer, supprimer, ajouter fin, afficher. Exercice 2. (1 pt) Définition d’une classe commande. À chaque entrée du menu correspond une commande (ou opération). Lorsqu’une entrée du menu est sélectionnée, la commande associée au menu doit être exécutée. D’après le principe de convivialité d’une interface homme/machine, une entrée ne pourra être sélectionnée que si la commande associée est exécutable. On peut en déduire qu’une commande est caractérisée par : - le traitement qu’elle effectue ; - les conditions nécessaires pour que la commande puisse être effectuée. Décrire la classe Commande ainsi spécifiée. Quelle est la particularité de cette classe ? Exercice 3. éditeur. (4 pts) Définition des commandes de notre Pour construire le menu correspondant à notre éditeur, il est nécessaire de définir les différentes commandes qu’il offre. 1. Quelles relations existe-t-il entre une commande particulière de l’éditeur et les autres classes identifiées, en particulier la classe Commande (question 2) et la classe Ligne (question 1) ? 2. Définir les classes correspondant aux commandes suivantes de l’éditeur : (a) Avancer le curseur d’une position à droite (commande 4 du menu proposé); (b) Ajouter un caractère au début de la ligne (commande 1 du menu proposé) ; (c) Supprimer tous les caractères de la ligne (commande 10 du menu proposé). II est inutile de donner les classes correspondant aux autres commandes. Exercice 4. (2 pts) L’éditeur. Écrire un programme court qui illustre le fonctionnement de l’éditeur. Il devra en particulier construire le menu, puis le proposer à l’utilisateur jusqu’à ce que celui-ci décide de quitter l’éditeur (sélection de l’entrée “Quitter”du menu). Annexe // D e f i n i t i o n d ’ une l i g n e de c a r a c t e r e s de t a i l l e b o r n e e e t e q u i p e e d ’ un c u r s e u r . class Ligne { public : Ligne ( ) ; // Creer une l i g n e v i d e . // ROLE : l o n g u e u r == 0; public : // D e f i n i t i o n d e s r e q u e t e s s u r l a l i g n e s t a t i c const unsigned i n t CAPACITE = 2 0 0 ; // Longueur maximale d ’ une l i g n e char c a r a c t e r e s [ CAPACITE ] ; // l e s c a r a c t e r e s de l a l i g n e unsigned i n t l o n g u e u r ; // nombre de c a r a c t e r e s dans l a l i g n e // I n v a r i a n t : 0 < = l o n g u e u r $& l o n g u e u r <= CAPACITE / / l o n g u e u r c o h e r e n t e char ieme ( unsigned i n t i ) const ; // l e ieme c a r a c t e r e de l a l i g n e // ANT : 1 < = i && i <= l o n g u e u r ; / / i v a l i d e public : // D e f i n i t i o n du c u r s e u r unsigned i n t c u r s e u r ; // La p o s i t i o n du c u r s e u r . S i l a l i g n e e s t non v i d e , i l // ROLE : // l o n g u e u r == 0 i m p l i q u e c u r s e u r == 0; // l o n g u e u r > 0 i m p l i q u e 1 <= c u r s e u r <= l o n g u e u r e s t s u r un c a r a c t e r e . char c a r a c t e r e c o u r a n t ( ) const ; // Le c a r a c t e r e s o u s l e c u r s e u r . // ANT : l o n g u e u r > 0 ; / / La l i g n e e s t non v i d e void a v a n c e r ( ) ; // Avancer l e c u r s e u r d ’ une p o s i t i o n a d r o i t e . // ANT : c u r s e u r < l o n g u e u r ; // ROLE : c u r s e u r == o l d c u r s e u r + 1 ; void r e c u l e r ( ) ; // Avancer l e c u r s e u r d ’ une p o s i t i o n a gauche . // ANT : c u r s e u r > 1 ; // ROLE : c u r s e u r == o l d c u r s e u r − 1 ; void r a z ( ) ; // P l a c e r l e c u r s e u r s u r l e p r e m i e r c a r a c t e r e . // ANT : l o n g u e u r > 0 ; // ROLE : c u r s e u r == 1; void r e m p l a c e r ( char c ) ; // Remplacer l e c a r a c t e r e s o u s l e c u r s e u r par l e c a r a c t e r e c . // ANT : l o n g u e u r > 0 ; // ROLE : c a r a c t e r e c o u r a n t () == c ; void s u p p r i m e r ( ) ; // Supprimer l e c a r a c t e r e s o u s l e c u r s e u r . La p o s i t i o n du c u r s e u r r e s t e i n c h a n g e e // ANT : l o n g u e u r > 0 ; //ROLE : // l o n g u e u r == o l d l o n g u e u r − 1 / / un c a r a c t e r e supprime // o l d c u r s e u r ( ) = o l d l o n g u e u r ( ) i m p l i q u e c u r s e u r () == l o n g u e u r ( ) ; // o l d c u r s e u r ( ) < o l d l o n g u e u r ( ) i m p l i q u e c u r s e u r () == o l d c u r s e u r ( ) ; void a j o u t e r a v a n t ( char c ) ; // A j o u t e r l e c a r a c t e r e c a v a n t l e c u r s e u r . Le c u r s e u r r e s t e s u r l e meme c a r a c t e r e // ANT : // l o n g u e u r > 0 ; / / c u r s e u r p o s i t i o n n e // l o n g u e u r < CAPACITE; / / l i g n e non p l e i n e // ROLE : // l o n g u e u r == o l d l o n g u e u r + 1 / / un c a r a c t e r e a j o u t e // c u r s e u r == o l d c u r s e u r + 1 / / c u r s e u r i n c h a n g e void a j o u t e r a p r e s ( char c ) ; // A j o u t e r l e c a r a c t e r e c a p r e s l e c u r s e u r . Le c u r s e u r r e s t e s u r l e meme c a r a c t e r e . // ANT : // l o n g u e u r > 0 ; / / c u r s e u r p o s i t i o n n e // l o n g u e u r < CAPACITE; / / l i g n e non p l e i n e // ROLE : // l o n g u e u r == o l d l o n g u e u r + 1 / / un c a r a c t e r e a j o u t e // c u r s e u r == o l d c u r s e u r ; // curseur inchange public : // D e f i n i t i o n d e s o p e r a t i o n s s u r l a l i g n e void a f f i c h e r ( ) const ; // A f f i c h e r l a l i g n e en m e t t a n t e n t r e c r o c h e t s [ ] l e c a r a c t e r e c o u r a n t . // S i l a l i g n e e s t v i d e , un s e u l c a x a c t e r e t i l d e ( ˜ ) e s t a f f i c h e . void a j o u t e r f i n ( char c ) ; // A j o u t e r l e c a r a c t e r e c a l a f i n de l a l i g n e . // Le c u r s e u r r e s t e s u r l e meme c a r a c t e r e // ANT : l o n g u e u r < CAPACITE; / / l i g n e non p l e i n e // ROLE : // l o n g u e u r = o l d l o n g u e u r + 1 ; / / un c a r a c t e r e a j o u t e // ieme ( l o n g u e u r ) == c ; / / C a r a c t e r e a j o u t e // c u r s e u r == max ( 1 , o l d c u r s e u r ) ; void a j o u t e r d e b u t ( chax c ) ; // A j o u t e r l e c a r a c t e r e c au d e b u t de l a l i g n e . Le c u r s e u r r e s t e s u r l e meme // c a r a c t e r e . // ANT : l o n g u e u r < CAPACITE; / / l i g n e non p l e i n e // ROLE : // l o n g u e u r = o l d l o n g u e u r + 1 ; / / un c a r a c t e r e a j o u t e // ieme (1) == c ; / / C a r a c t e r e a j o u t e // c u r s e u r == o l d c u r s e u r + 1 ; }; L3 - Bases de données 10 juin 2002 Durée 2h 1. On considère une application informatique utilisant plusieurs bases de données relationnelles. Pour faciliter l’accès à ces bases de données on construit une “métabase” qui décrit ces bases de données de la façon suivante. Une base de données est décrite par son nom (une chaı̂ne de caractères) qui l’identifie et par l’ensemble de ses relations. Une relation est décrite par son nom (une chaı̂ne de caractères) qui l’identifie au sein d’une base de données, par l’ensemble de ses attributs et par sa clé primaire qui rappelons-le est un sous-ensemble des attributs de cette relation. Un attribut d’une relation est décrit par son nom (une chaı̂ne de caractères) qui l’identifie au sein de cette relation et par son type (une chaı̂ne de caractères). On demande : (a) de construire le schéma de classes UML qui spécifie cette métabase ; (b) de traduire ce schéma en schéma relationnel. 2. Soit un index organisé en arbre B+, constitué de 80000 enregistrements dont les clés ont une longueur maximum de 30 octets. On suppose de plus que les pages doivent avoir une longueur qui est une puissance de 2 (32, 64, 128, . . . ) et qu’un pointeur occupe 4 octets. Calculer la taille minimum des pages pour que l’index ait une hauteur maximum de 3 (racine + 1 niveau de nœuds non terminaux + 1 niveau de feuilles). 3. Soit deux relations de base P et Q telles que P possède un attribut A qui constitue sa clé primaire et Q possède un attribut B qui est une clé étrangère qui réfère la clé primaire de P . On suppose qu’il n’existe pas d’index sur les attributs A et B. (a) Proposer une méthode basée sur la construction d’un fichier de hachage avec répertoire pour effectuer l’équijointure join(P, Q, A = B). (b) Evaluer le coût de cette méthode en supposant connus les temps de lecture et d’écriture d’une page, les cardinalités de P et Q, le nombre de pages qu’elles occupent et la taille du répertoire dont on suppose qu’elle a été choisie de façon à ce qu’une seule page soit liée à chaque case du répertoire. 4. Soit les trois transactions suivantes : T1 start lock X C1 read C1 C1 := C1 - A write C1 unlock C1 lock X C2 read C2 C2 := C2 + A write C2 unlock C2 commit T2 start lock X C1 read C1 C1 := C1 - B write C1 lock X C2 read C2 unlock C1 C2 := C2 + B write C2 unlock C2 commit T3 start lock S C1 read S C2 read C1 read C2 display C1 + C2 unlock C1 unlock C2 commit (a) Ces trois transactions sont-elles bien formées ? Justifiez votre réponse. (b) Lesquelles de ces trois transactions sont à deux phases ? Justifiez votre réponse. Considérons maintenant les deux exécutions suivantes de ces transactions : E1 (T1 ) (T1 ) (T1 ) (T1 ) (T1 ) (T1 ) (T3 ) (T3 ) (T3 ) (T3 ) (T3 ) (T3 ) (T3 ) (T3 ) (T3 ) (T1 ) (T1 ) (T1 ) (T1 ) (T1 ) (T1 ) start lock X C1 read C1 C1 := C1 - A write C1 unlock C1 start lock S C1 lock S C2 read C1 read C2 display C1 + C2 unlock C1 unlock C2 commit lock X C2 read C2 C2 := C2 + A write C2 unlock C2 commit E2 (T2 ) (T2 ) (T2 ) (T2 ) (T2 ) (T2 ) (T2 ) (T2 ) (T3 ) (T3 ) (T2 ) (T2 ) (T2 ) (T2 ) (T3 ) (T3 ) (T3 ) (T3 ) (T3 ) (T3 ) (T3 ) start lock X C1 read C1 C1 := C1 - B write C1 lock X C2 read C2 unlock C1 start lock S C1 C2 := C2 + B write C2 unlock C2 commit lock S C2 read C1 read C2 display C1 + C2 unlock C1 unlock C2 commit (c) Lesquelles de ces deux exécutions sont-elles sérialisables ? Justifiez votre réponse. (d) Vérifier la réponse à la question précédente en traçant les graphes de dépendance de ces deux exécutions. Anglais 11 juin 2002 Durée 2h QCM Choisir la bonne réponse (8pts) 1. “Have you ever visited Scotland?” “Yes, I ............... there last year.” a) was going b) have been c) have been going d) went 2. Our baby was well ............... while we were away. a)to take care of b)taking care c) taken care of d) taken care 3. Accepting that offer means ............... by our suppliers. a) be exploited b) being exploited c) exploiting d) the exploitation 4. Night fell and the search ................ a) should stop b) had to be stopped c) ought to be stopped d) should be stopped 5. The Enghsh Channel ............... only 21 miles across, yet it can be a real barrier. a) may be b) could be c) despite being d) should be 6. He ought to have his hair ............... more often. a) be cut b) being cut c) cut d) cutting 7. When you ............... we can go. a) finished b) have finished c) will finish d) will have finished 8. They really thought this movie was worth ................ a) seeing b) seeing it c) to be seen d) to see it 9. The doorbell is ringing. It ............... Mary: she’s in her room. a) can’t be b) mustn’t be c) should be d) may be 10. We let you know all ............... we knew at the time. a) what b) that c) this d) than 11. The town teemed with bandits, none of ............... were ever caught. a) those b) whose c) which d) whom 12. What prevented you ............... me at the airport? a) from having met b) to meet c) from meeting d) to have met 13. If we’d had enough money, we ............... a bigger house. a) had bought b) could have bought c) must have bought d) have bought 14. The first time you ............... London was in 1974, wasn’t it? a) visited b) have visited c) was visiting d) visit 15. There ............... quite a few accidents last month. a) have been b) were c) had been d) are 16. Mrs Rogers went back to work when her children ............... three. a) have been b) were c) had been d) used to be 17. By this time tomorrow, I ............... finished my work. a) will b) have c) will have been d) will have 18. He will ............... help you. a) can b) can to c) be able to d) be able 19. She must ............... while I was out. a) come b) have come c) came d) had come 20. At this time tomorrow, ............... over the Atlantic. a) we’ll be flying b) we’ve flown c) we’ve been flying d) we’re flying 21. “Has Lizzie come?” “No, if she had come, ............... her.” a) I’ll see b) I’d have seen c) I’ll have seen d) I’d seen 22. If I ............... enough time, I’ll come and see you tomorrow. a) had b) will have c) have d) shall have 23. Your father ............... turn in his grave if he saw you. a) should b) would c) shall d) will 24. Check your number before ................ a) to dial b) dial c) dialling d) dialled 25. I don’t remember ............... them last year. a) seeing b) to see c) of seeing d) that we saw 26. He smoked the only cigarette ............... was left in the packet. a) that b) which c) what d) it 27. I’m sure you know him : he is the man ............... father used to work for out company. a) who’s b) whom c) who d) whose 28. We are not in a position to do ............... we promised to do. a) all things b) the whole c) all d) it all 29. Fewer and fewer people want ............... their holidays at home. a) spending b) spend c) to spend d) spent 30. On arriving, she discovered that the car needed ............... . a) mend b) to mend c) mended d) mending 31. Tom is taking the bus today because be ............... his car repaired. a) has b) makes c) is making d) is having 32. You should ............... this parcel sent last week. a) have had b) have c) have made d) make 33. Sally is a good friend of ............... . a) them b) they c) their d) theirs 34. He confessed ............... was a happy family. a) theirs b) their c) there’s d) there it 35. My father and ............... used to play tennis together every Sunday. a) me b) I c) myself d) mine 36. A lot of people say he ............... resign from the government. a) dares b) need c) should d) ought 37. When ............... a good player? a) are you b) shall you be c) will you be d) are you being 38. You will fail ............... you work harder. a) if b) so that c) unless d) in case 39. - What was that big noise? - I ............... anything a) don’t hear b) haven’t listened to c) didn’t hear d) heard 40. For the past year, Bill ............... a variety of jobs. a) has had b) had c) has d) had had Compléter à l’aide de pronoms relatifs. Si vous souhaitez omettre le pronom relatif, marquez ∅. (2pts) 1. What is the name of the film-director ............... directed Sean Connery in a film ............... takes place in Jamaica? 2. In a film in ............... he also played James Bond, there is an extraordinary car chase in Las Vegas. 3. When was the film ............... you are talking about released? 4. Who is the English film-director, ............... name begins with an ”h”, whom you can see in a split second in all of his films? 5. With ............... does Vivien Leigh star in Gone with the Wind? 6. It’s a film the title of ............... contains the word ”Arabia”. 7. Think of an actor ............... name you’d immediately associate with the word ”western”. Write sentences with the pattern have something done. (2pts) Susan is at the optician’s. He’s going to test her eyes. Susan is going to have her eyes tested. 1. Peter went to the dentist. She filled his tooth. Peter had. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. The actress went to the photographer’s studio. He took her photo. The actress. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3. Adrian is talking to the mechanic who has serviced bis car. .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 4. The Watsons’ dishwasher has broken down. The engineer is repairing it. .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. Text By Alfred Hermida BBC News Online technology staff Imagine if every time you pressed a button on your TV remote control, information was kept to record your viewing habits. This is what a California court has ordered the hi-tech consumer electronics company SonicBlue to do with people who have bought its ReplayTV 4000 digital video recorder. The company has now formally requested an immediate reversal of the order, describing it as “breathtaking1 and unprecedented”. SonicBlue said the court order “violates consumers’ privacy rights, including those guaranteed by the First and Fourth Amendments”. Copyright battle The court order is part of the wider struggle2 between the entertainment3 and technology industries over how digital advances are changing the way people consume films, TV and music. The plaintiffs4 in this case include the film studios Paramount, Universal and Disney, as well as the TV networks CBS, ABC and NBC. Lawyers of the media companies say they need this information to find out the extent to which the ReplayTV 4000 allows customers to copy and share TV shows and films. 1 Breathtaking : stupéfiant (à vous couper le souffle) : lutte, combat 3 Entertainment : shows, performances, films, e.g. the entertainment business 4 Plaintiff : demandeur, plaignant 2 Struggle Under the court order, the information collected would record whether the consumer skipped5 the ads, watched the same show more than once or deleted the programme from the unit. SonicBlue’s ReplayTV 4000 went on sale in the US last September. It works like a normal VCR6 but it records shows to a hard drive, rather than video tape. Like other personal video recorders, the machine can pause and instantly replay live television or it can skip the ad breaks. The unit also has a high-speed internet port that allows users to share film files. “We’ve done a lot of research in the past that shows that once someone had a ReplayTV, the number of hours of TV they watched actually went up,” SonicBlue’s Jonathan King told the BBC programme, Go Digital. “So they’re going to be watching more TV and more quality TV, not just the fluff that just comes up.” But the entertainment industry is uneasy about the range of features offered by the player. It argues these features threaten7 to deprive it of the revenues needed to pay for new shows, since the machines allow ads to be cut out and premium shows on subscription services to be forwarded to non-subscribers. One senior television executive has gone so far as to equate skipping the ads with theft8 . But SonicBlue argues it is not doing anything illegal. “We’re not deleting the commercial,” insisted SonicBlue’s Lanc Ohara. “We’re just giving the consumer the ability to not watch the commercial. If they want to see them, they can,” he said. ‘Invasion of privacy’ Privacy groups and consumer electronics firms are up in arms over the ruling9 , which effectively orders SonicBlue to spy10 on thousands of customers to see if they are breaking copyright law. “The court’s order is highly troubling,” said the trade body, the Consumer Electronics Association, in a statement. 5 To skip : sauter, passer (ne pas regarder) : video cassette recorder 7 To threaten : menacer 8 Theft : vol 9 Ruling : décision de justice, jugement 10 To spy : espionner 6 VCR “It forces SonicBlue to violate the trust11 of its customers and commit an incredible invasion of privacy.”SonicBlue has been given until 24 June to impose a tracking system on its customers. It is appealing against the order, arguing it will be forced to redesign its machine for the express purpose of collecting information to be used against it. It says the changes will cost $400,000 and take four months to implement. Earlier versions of the Replay recorder and similar digital devices from Tivo, which allow users to copy TV shows and keep them for later viewing, have been on sale for several years. 1. What are the special features (caractéristiques) of the ReplayTV 4000 digital video recorder? Explain the dispute between the entertainment industries and the company SonicBlue. Who do you think is right? Explain. (4pts) 2. Do you think that your privacy is being invaded (que votre vie privée est envahie) by high tech devices (e.g. the internet, computers, mobile phones. . . ) or do you equate high technology with liberty? (la haute technologie est-elle pour vous synonyme de liberté ?) Give examples. (4pts) 11 Trust : confiance C++/Java 13 juin 2002 Durée 3 heures Barème : Partie 1 sur 10 points Partie 2 sur 10 points Tous documents, sauf livres, autorisés. Partie I. Connaissance de java. 1.1 A quoi sert l’option -classpath de l’interpréteur java ? Quelle est la nature possible des éléments concernés par cette option ? 1.2 A quoi sert le concept de package ? 1.3 Qu’est-ce qui différencie une classe abstraite d’une interface ? En quoi ces concepts sont-ils complémentaires ? 1.4 Etudiez les quatre lignes de code ci-dessous : double [ ] t a b l e a u ; for ( int i = 0 ; i < 1 2 ; i ++) { t a b l e a u [ i ] = Math . s q r t ( ( double ) i ) ; } - Pourquoi ce code ne fonctionne-t-il pas ? - L’erreur se produit-elle à l’exécution ou à la compilation ? - Que faudrait-il modifier pour que ce code fonctionne ? 1.5 Examiner le code suivant. Il s’agit d’une petite application dont vous avez, ci-dessous, une copie d’écran. import import import import import j a v a . awt . Frame ; j a v a . awt . Button ; j a v a . awt . T e x t F i e l d ; j a v a . awt . BorderLayout ; j a v a . awt . e v e n t . ∗ ; public c l a s s G e n e r a t e u r A l e a t o i r e extends Frame{ public s t a t i c f i n a l double BORNE MAX = 1 0 0 0 ; private private private private Button b u t t o n Q u i t t e r = new Button ( ) ; Button b u t t o n A c t i o n = new Button ( ) ; T e x t F i e l d t e x t F i e l d R e s u l t a t = new T e x t F i e l d ( ) ; BorderLayout b o r d e r L a y o u t G e n e r a l = new BorderLayout ( ) ; public G e n e r a t e u r A l e a t o i r e ( ) { super ( ’ Générateu r de nombre a l é a t o i r e ’ ) ; buttonQuitter . setLabel ( ’ Quitter ’ ) ; b u t t o n A c t i o n . s e t L a b e l ( ’ Action ’ ) ; } t e x t F i e l d R e s u l t a t . s e t T e x t ( ’ ’+getRandomNumber ( ) ) ; this . setLayout ( borderLayoutGeneral ) ; t h i s . add ( b u t t o n Q u i t t e r , BorderLayout .SOUTH) ; t h i s . add ( buttonAction , BorderLayout .NORTH) ; t h i s . add ( t e x t F i e l d R e s u l t a t , BorderLayout .CENTER) ; t h i s . pack ( ) ; t h i s . s e t V i s i b l e ( true ) ; // f i n du c o n s t r u c t e u r s a n s paramètre public s t a t i c void main ( S t r i n g [ ] a r g s ) { G e n e r a t e u r A l e a t o i r e g e n e r a t e u r A l e a t o i r e 1 = new G e n e r a t e u r A l e a t o i r e ( ) ; } private long getRandomNumber ( ) { return Math . round ( Math . random ( ) ∗ BORNE MAX ) ; } } // f i n de l a c l a s s e G e n e r a t e u r A l e a t o i r e Complétez et modifiez ce code pour que l’interaction de l’utilisateur sur les boutons action et quitter soit possible. - Un click souris sur le bouton action devra appeler la méthode getRandomNumber () et afficher le résultat dans le textFieldResultat en supprimant le résultat précédent. - Un click souris sur le bouton quitter devra mettre fin à l’exécution du programme. Partie II. Héritage et abstraction. On se propose de développer un logiciel de dessin fondé sur les primitives géométriques. Vous aurez à manipuler les objets géométriques suivants (donnés avec les attributs géométriques les caractérisant) : Point 3D ou vecteur 3D Segment de Droite Plan Cercle Ellipse Tronc de Cylindre Tronc de Cône Sphère Trois composantes (double) X, Y, Z Deux points 3D non confondus Un vecteur normal au plan (A,B,C) et un double D (équation du plan Ax+By+Cz+D = 0) Un Plan, un Centre (Point 3D) et un Rayon Un Cercle mais avec deux rayons Deux points 3D (centre des cercles des extrémités) et un rayon Un Tronc de Cylindre mais avec deux rayons (les deux cercles des extrémités sont parallèles mais peuvent être de rayons différents). Un centre (un point 3D) et un rayon. 2.1 La première étape est d’écrire, en java, une classe Point3D capable de gérer les opérations élémentaires sur des points 3D. Pour ne pas avoir à écrire le code complet de cette classe vous définirez une interface IPoint3D dont vous spécifierez les méthodes qui vous semblent indispensables. 2.2 Vous devez représenter toutes ces primitives géométriques dans un seul arbre d’héritage. Vous pouvez enrichir votre hiérarchie de nouvelles classes. Représenter graphiquement le graphe d’héritage obtenu, identifiez clairement les classes abstraites et justifiez brièvement chacun de vos choix. 2.3 Pour chacune des méthodes énoncées ci-dessous vous indiquerez, en justifiant clairement vos réponses, dans quelle(s) classe(s) il vous semble pertinent de les insérer (que ce soit une méthode abstraite, concrète ou redéfinie). getColor() translate(IPoint3D p) getBarycentre() draw() getPerimetre() getLenght() getVolume() getSurface() Retourne la couleur d’affichage de l’objet Effectue une translation de l’objet sur le point p Retourne le barycentre Dessine l’objet Retourne, quand cela a un sens, le périmètre de l’objet Retourne, quand cela a un sens, la longueur de l’objet Retourne, quand cela a un sens, le volume de l’objet Retourne, quand cela a un sens, la surface de l’objet Attention : vous devrez vous assurer de la cohérence de l’utilisation de ces méthodes et mettre en place un mécanisme de votre choix interdisant les incohérences (par exemple getvolume() sur un segment de droite). Unité optionnelle L51 juin 2002 Durée 2h Documents manuscrits autorisés Le langage de programmation utilisé sera le langage Maple. Première partie On veut déterminer le nombre de racines réelles d’un polynôme. 1) Ecrire une procédure nonnuls(u) qui pour une liste u de nombres retourne la liste des éléments non nuls de u. 2) Ecrire une procédure varsigne1(u) qui pour une liste u dont les éléments valent 1 ou -1 calcule le nombre de changements de signe dans u. Par exemple, si u=[-1,1,1,-1], varsignel(u)=2 car il y a un changement de signe entre le 1er et le 2ième élément et un changement entre le 3ième et le 4ième. Quel est l’intérêt de travailler avec des nombres égaux à 1 ou -1 plutôt qu’avec des nombres quelconques ? 3) Ecrire une procédure varsigne2(u) qui pour une liste u de nombres calcule le nombre de changements de signe dans u, en ne considérant que les nombres non nuls. Ainsi, si u=[-1,2,1,0,-5], varsigne2(u)=2, car il y a un changement de signe entre le 1er et le 2ième élément et un changement entre le 3ième et le 5ième. Indication : La fonction sign(n) retourne 1 si le nombre n est positif ou nul et -1 sinon. 4) La suite de Sturm d’un polynôme p non nul (à coefficients rationnels) en la variable x est définie de la façon suivante : p0 =p p1 = p’ où p’ désigne le polynôme dérivé de p pi = - reste(pi−2 , pi−1 ) pour pi−2 non nul (autrement dit, pi est l’opposé du reste de la division du polynôme pi−2 par le polynôme pi−1 ) Les polynômes de cette suite ont des degrés strictement décroissants et son dernier terme est nul, on désigne par k l’indice du dernier terme non nul. Ecrire une procédure suite(p,x) qui pour un polynôme p en une variable x détermine la liste des termes pi de sa suite de Sturm pour 0 ≤ i ≤ k. Indication : La fonction rem(f,g,x), calcule pour des polynômes f et g en la variable x, le reste de la division de f par g. 5) Soit p un polynôme non nul et y un nombre réel qui n’est pas racine de p. On considère la liste des termes pi de la suite de Sturm de p pour 0 ≤ i ≤ k et on remplace chaque élément de cette liste de polynômes par sa valeur au point y. On note V(y) le nombre de changements de signes de la liste ainsi obtenue. Si a et b, avec a¡b, ne sont pas des racines réelles de p, alors le nombre de racines réelles de p dans l’intervalle [a,b] est égal à V(a)-V(b). Ecrire une fonction nbracines(p,x,a,b) qui calcule le nombre de racines réelles entre a et b du polynôme p en la variable x. 6) Calculer le nombre de racines réelles du polynôme x5 − 3x3 + 2 entre -2 et 2 et tracer la représentation graphique de la fonction qui à x associe x5 − 3x3 + 2 pour x variant de -2 à 2. Seconde partie 1. Question de cours (a) Rappeler la différence entre une primitive et une intégrale définie. Comment traduire cette nuance dans la syntaxe de Maple ? (b) Rappeler 1a différence entre une somme et une somme indéfinie. Comment traduire cette nuance dans la syntaxe de Maple ? (c) Différence entre taylor et series (d) Différence entre solve et fsolve 2. Récursivité On considère la suite réelle n 7→ un définie par la récurrence un+1 = un + n−1 X uj un−1−j j=0 et la condition initiale u0 = 1. (a) Ecrire une procédure récursive pour le calcul des un . (b) Justifier l’utilisation de l’option remember dans ce contexte. 3. Séries Génératrices Avec les notations du § précédent on pose U (z) := ∞ X un z n n=0 (a) Comment exprimer U (z) en fonction de un en Maple ? (b) Admettons l’équation fonctionnelle U − 1 = z(U + U 2 ) Comment résoudre cette équation en Maple ? Comment choisir entre les deux solutions ? Carte à Mémoire et Contrôle d’Accès juin 2002 1. Qu’est-ce qu’un ATR ? Quelles données sont transmises lors de son exécution ? Ces données sont elles transmises depuis la carte ou vers la carte ? 2. Les contacts de la carte à puce avec le monde extérieur comporte 9 ou 10 fils distincts. (a) Quelles sont les fonctions de ces fils ? (b) A quelle vitesse maximum (en bit par sec.) une carte à puce communiquet-elle avec le monde extérieur ? (c) Cette vitesse est-elle une limitation aux performances de la carte ? 3. Dans le protocole de validation des transactions commerciales pour les cartes à puce : (a) les données reçues par le centre de contrôle sont-elles chiffrées ? (b) Quelles seraient les conséquences de leur modification par un tiers malveillant ? (c) Les données renvoyées par le centre de contrôle sont-elles chiffrées pour la transmission ? (d) Quelles seraient les conséquences de leur modification par un tiers malveillant ? 4. (a) Pour quelle raison le système de contrôle des transactions sur les cartes à puce n’est-il pas exportable ? (b) Une augmentation de la longueur de la clé à 128 bits est-elle susceptible de le rendre exportable ? C++/Java 3 septembre 2002 Durée 3 heures Barème : Partie 1 sur 12 points Partie 2 sur 8 points Tous documents, sauf livres, autorisés. Partie I. Connaissance de java. 1.1 Décrivez brièvement le fonctionnement d’une machine virtuelle Java. Quels sont les avantages et inconvénients de cette approche ? 1.2 A quoi sert le Garbage Collector ? 1.3 Citez deux différences qui vous semblent fondamentale entre C++ et Java. Justifiez votre réponse. 1.4 Etudiez attentivement la classe ci dessous : 1 public c l a s s Test { 2 3 public s t a t i c void main ( S t r i n g [ ] a r g s ) { 4 Test t e s t 1 = new Test ( ) ; 5 test1 . test (); 6 } 7 8 c l a s s ClasseA { 9 private S t r i n g name = ” C l a s s e A” ; 10 public S t r i n g getName ( ) { 11 return name ; 12 } 13 } 14 15 c l a s s ClasseB extends ClasseA { 16 public S t r i n g name = ” C l a s s e B” ; 17 public S t r i n g getName ( ) { 18 return name ; 19 } 20 } 21 22 void t e s t ( ) { 23 ClasseB b=new ClasseB ( ) ; 24 System . out . p r i n t l n ( ”b . name : ”+b . name ) ; 25 System . out . p r i n t l n ( ”b . getName ( ) : ”+b . getName ( ) ) ; 26 ClasseA a ; 27 a=(ClasseA ) b ; 28 System . out . p r i n t l n ( ” a . name : ”+a . name ) ; 29 System . out . p r i n t l n ( ” a . getName ( ) : ”+a . getName ( ) ) ; 30 31 } } Question 1 : Complétez les messages qui s’affichent à la console lors de l’exécution du main de Test : b.name : b.getName() : a.name : a.getName() : Question 2 : Le cast en ligne 27 est-il indispensable ? pourquoi ? Question 3 : Quelle est l’erreur de modélisation et donc d’écriture qui produit cette difficulté à anticiper le comportement du programme ? Question 4 : Pourquoi en ligne 3 la méthode main est elle static ? Précisez ce qu’est un membre static en Java. Partie II. Déclenchement et traitement d’une exception On se propose de développer une classe EntierNaturel permettant de manipuler des entiers naturels (positifs ou nuls). Cette classe disposera simplement : • D’un constructeur à un argument de type int qui sera contrôlé par une exception, ErrConstruction (classe à définir par vos soins) • Une méthode getN() fournissant sous la forme d’un int la valeur encapsulée dans EntierNaturel Question 1 : Ecrire les classes EntierNaturel et ErrConstruction. La classe EntierNaturel possédera une méthode main pour tester vos développements. Vous devrez dans cette méthode traiter l’exception ErrConstruction en affichant un message et en interrompant l’exécution. La gestion des erreurs dans le constructeur devra mémoriser la valeur fournie à tort et cette valeur devra faire partie du message d’erreur affché sur la console. Question 2 : la classe ErrConstruction devra hériter soit de RuntimeException soit de Exception. Justifiez clairement votre choix et dessinez l’arbre d’héritage des Exception. L2, Sytèmes d’exploitation. 4 septembre 2002 La précision et la clarté de votre rédaction sont fondamentales. Respectez les notations des exercices. Aucun document autorisé. Durée 3 heures. Cours 1. Citez deux problèmes posés par la gestion d’un système d’exploitation pour lesquels, bien qu’il existe une solution optimale, elle n’est pas appliquée. Dans les deux cas, justifiez rapidement pourquoi les méthodes optimales ne sont pas utilisées. 2. Quel est le rôle des protocoles NFS et NIS ? 3. A partir d’un shell interactif s, vous lancez la commande : gcc monproc.c -o monprog & Parmi ces affirmations, une ou plusieurs sont correctes, indiquez lesquelles (ou laquelle). Justifiez votre choix. • Le shell s se transforme en un processus qui exécute la commande gcc. • Le shell s crée un fils f qui exécute gcc, et s attend la terminaison de f avant de reprendre son exécution. • Le shell s crée un fils f qui exécute gcc, et s attend la terminaison de f avant de terminer lui-même. • Le shell s crée un fils f qui exécute gcc et qui attend la terminaison de s avant de terminer lui-même. • Le shell s crée un fils f qui exécute gcc et s reprend son exécution sans attendre la terminaison de f . Exercice On considère une méthode d’ordonnancement à multi-files basée sur les priorités. Chaque processus P est doté d’une priorité de base P (b) , et d’une priorité courante P (c) égale à P (b) à sa création. Les niveaux de priorité varient de 1 (la plus faible) à n (la plus élevée). A chaque priorité i correspond une file d’attente fi , dont l’ordonnancement est assuré par la méthode du tourniquet avec un quantum q identique pour chaque file. L’ordonnanceur principal suit les deux règles suivantes : 1) soit m le plus grand entier tel que la file fm ne soit pas vide, le processeur est donné au premier processus de cette file. 2) tout autre processus prêt P tel que P (c) = i < m passe de la file fi à fi+1 (sa priorité courante est donc incrémentée). 1. Quel est le rôle de la seconde règle (2 lignes d’explication) ? 2. Lorsqu’un processus bloqué (par exemple en attente de la saisie de donnés au clavier) est réveillé par un événement extérieur (l’utilisateur a saisi des données), comment doit réagir l’ordonnanceur, notamment en ce qui concerne le calcul de P (c) ? (2 lignes d’explication). On pose n = 3 et on considère 4 processus P1 , P2 , P3 et P4 . Ces 4 processus (b) sont tous présents au démarrage du système avec pour paramètres P1 = (b) (b) (b) P2 = 3, P3 = 2 et P4 = 1. On suppose de plus que ces processus tournent en boucle infinie et qu’ils ne font aucune opération d’entrée-sortie. Lorsqu’un processus P épuise son quantum de temps, sa priorité redevient P (b) et il est placé dans la file correspondante. L’ordonnanceur applique alors les deux règles explicitées ci-dessus. 3. Simulez l’action de l’ordonnanceur jusqu’à détecter un comportement périodique. Pour cela vous complèterez le tableau fourni en annexe. Ce dernier comporte 5 colonnes. La première colonne indique le nombre s de quanta qui se sont écoulés, au démarrage du système ce nombre vaut 0. Les 3 colonnes suivantes indiquent l’état des files d’attente lorsque s quanta se sont écoulés (en ayant appliqué les règles énoncées ci-dessus). La dernière colonne indique quel processus utilisera le processeur pendant le quantum courant. 4. Donnez pour chacun des processus le nombre de fois où il utilise le processeur au cours de la période trouvée. 5. La méthode est-elle performante ? (Justifiez en deux lignes). L4 : Anglais 4 septembre 2002 durée : 1 h 30 Q.C.M. Choisir la bonne réponse. (9pts) 1. While formerly a member of the sports club, Mr Teeters ............... tennis there regularly. a) is used to playing b) used to play c) was used to play d) used to playing 2. Having arrived at the football stadium barely in time, ............... . a) the two teams were just starting as we sat down b) we reached our seats just as the game started c) the officials had already blown the whistle for the game to start d) the gatekeeper took our tickets as we passed 3 ............... the rhinoceros is carefully protected, it will soon go the way of other extinct species. a) If b) As long as c) Therefore d) Unless 4. Most of the courses at the banquet were completely consumed, but there ............... food still remaining. a) were few b) were a few c) was little d) was a little 5. A person probably picks up any language most easily ............... it as a child outside a classroom. a) learn b) by learning c) to learn d) for learning 6. The boys’father built them a large sandbox ............... . a) to play in b) to play in there c) to play in it d) in which to play in there 7. The beach is usually closed ............... a rainy day. a) in b) at c) on d) while 8. The movie was very boring and many people began to leave early. By the end, most people ............... . a) had already left b) were already left c) were already leaving d) had already been leaving 9. The little boy first took off one shoe and then took off ............... . a) other b) the other c) another d) each other 10. That’s not the butcher we always buy our meat from; you’ve gone to ............... one. a) wrong b) the wrong c) a wrong d) some wrong 11. After years of great unhappiness in her life, Mrs. Palmer one day just seemed to go ............... . a) mad b) madder c) madly d) madness 12. The police are accusing this businessman of having his store ............... up so that he could collect the insurance. a) blew b) blow c) blown d) blowing 13. Hardly ever ............... get a good job these days without a good education. a) people might b) people can c) do people d) have people 14. The Joneses’corn did very well this year, so at harvest time they gave us quite ............... . a) many of them b) much of it c) a few of them d) a lot of it 15. Computers can process data extremely fast, ............... of this, they have several serious drawbacks. a) in spite b) whereas c) consequently d) despite 16. Even an autopsy, had one ............... ordered, would probably have revealed nothing. a) be b) should be c) have been d) been 17. ............... opinion would have counted. a) Nobody else’s b) Nobody else c) Everyone else d) Anything else’s 18. ............... farming is a business unlike any other can be seen from its institutions. a) But b) So c) And d) That 19. They’ve become the 4th ............... producer of copper. a) largest b) at large c) larger d) in large 20. As ............... supplies, the problem is entirely different. a) regard to b) regard c) regards d) regarding 21. In theory, ............... techniques are equally valuable. a) the three all b) whole the three c) whole three d) all three 22. Eight Britons ............... ten agreed to this. a) out b) from c) in d) on 23. Before ............... this device, read the instructions carefully. a) use b) to use c) using d) have used 24. Twenty young people are involved, ............... are under 15. a) of which most b) most of which c) whose most d) most of whom 25. In the last week of August the Dow-Jones ............... 70 points. a) felt b) has fallen c) has felt d) fell 26. The Japanese have invested ............... $7 billion in office towers. a) estimated b) an estimated c) estimating d) an estimate 27. He would like to obtain ............... information. a) farther b) the more c) further d) the farther 28. This car costs ............... in Copenhagen as in Brussels. a) twice as many b) half as many c) twice so d) twice as much 29. Going via Dover is ............... far the shortest route. a) from b) by c) not d) much 30. The new facility, ............... , would increase capacity by 20%. a) if built b) to build c) of building d) it builds 31. The ............... you say about it, the better. a) least b) lest c) lesser d) less 32. This railway line is no ............... in use. a) further b) any more c) farther d) longer 33. The decision was made after ............... . a) an one-hour meeting b) an one hour’s meeting c) a one-hour meeting d) one-hour meeting 34. Faster growth would ............... easier to reduce the subsidies. a) do it b) cause it c) make d) make it 35. ............... he was seventy, he was still a remarkable swimmer. a) However b) Yet c) Although d) Since 36. Curiously, researchers have found ............... indications of warfare among the clans of the Ice age. a) a little b) little c) few d) a lot Texte Teaching goes virtual in Pakistan By Alfred Hermida BBC News Online technology staff Thousands of Pakistanis are being offered the chance to learn the skills they need to thrive in the computer age thanks to a new virtual university. The US$40m project is providing distance learning over the television and internet so that anyone can take part in the classes, regardless of where they live in Pakistan. The aim is to create a generation of software programmers and computer engineers who can rival the best in countries like the US. Pakistan is eager to develop an informatin technolog industry, much like India has done. Experts estimate the country needs at least 60,000 computer science graduates to achieve this aim. “India is a very inspiring cse. They got their act together very early,” said Salman Ansari, adviser to Pakistan’s Ministry of Science and Technology. “We are leveraging technology to get the level that we need to get to,” he told the BBC programme Go Digital. Exciting education The Virtual University combines television, video-conferencing and the internet to provide lessons, tutorials and guidance to students all over Pakistan. The lectures are produced in a professional studio, carefully put together to ensure that they are clear and accessible. Students can log on to the university over the internet and discuss the subject with a lecturer. “The students feel empowered by sitting in front of a PC and being able to to shoot off questions or put their comments on a discussion board,” said Naveed Malik, the rector of the Virtual University. “It’s a very exciting experience. Students are realising that they are having a better educational expenence than most of our conventional institutions.” Cheap and friendly Currently around 500 people are taking part in a pilot project. The organisers hope to have 5,000 students by September, rising to 25,000 by the end of 2003. One of the key aspects or the project is to ensure that anyone, regardless of their income and where they ]ive, can take part in the lessons. “We have opened up access to the Virtual University to all segments of the population by keeping the prices extremely low,” said Mr Malik. To this end, educational centres are being set up where students can view the courses and access the internet. The plan is to set up a high speed computer network linking 60 universities and 2,500 schools and colleges. A further 10,000 schools will be able to access the lessons through the internet. “We realised that we had to build up the internet in Pakistan very rapidly,” said Mr Ansari. “So two years ago we had about 29 cities on the internet; today we have 580 online and it will be 1,000 by the end of the year.” The government has also worked to ensure that the cost of going online is within reach of most. “I could be sitting in the middle of nowhere, hundreds of miles from anywhere, but when I log in, the cost would be six rupees (10 cents) an hour,” he said. Vocabulaire : To thrive : to prosper Income : revenu Tutorials : travaux dirigés Within reach : abordable 1. What is a “virtual university” ? How does it operate? Explain Pakistan’s project and its objectives. (5pts) 2. What are the advantages – and possible limitations – of distance learning? Would you rather attend12 a virtual university than a conventional one ? Why or why not? (6pts) 12 to attend : fréquenter, suivre des cours dans. . . L1 : Mathématiques (Wolfmann) septembre 2002 Durée : 3 heures Tous documents autorisés. Les trois parties ne sont pas indépendantes mais peuvent être traitées séparément. Soit n un entier, n ≥ 2. On considère l’ensemble En = {−1, +1}n Puisque {−1, +1} est un sous-ensemble de Z stable pour le produit, on définit une loi interne ? dans En comme suit : Si x = (x1 , x2 , . . . , xi , . . . , xn ) et y = (y1 , y2 , . . . , yi , . . . , yn ) sont deux éléments de En alors : x ? y = (x1 y1 , x2 y2 , . . . , xi yi , . . . , xn yn ) PARTIE I 0) Question pour fixer les idées (0 point) Etablir la table de la loi ? pour n = 2. n est maintenant quelconque, n ≥ 2. 1) Montrer que (En , ?) est un groupe commutatif en précisant l’élément neutre et le symétrique de chaque élément. 2) Pour n = 3, déterminer tous les sous-groupes qui contiennent l’élément (-1, -1, -1) PARTIE II On définit dans En une relation R par : si x = (x1 , x2 , . . . , xi , . . . , xn ) ∈ En et y = (y1 , y2 , . . . , yi , . . . , yn ) ∈ En alors xRy ⇔ ∀i ∈ {1, 2, . . . , i, . . . , n} : xi ≥ yi où ≥ désigne la relation d’ordre habituelle dans Z. 1) Montrer que R est une relation d’ordre dans En . 2) Si z = (z1 , z2 , . . . , zi , . . . , zn ) ∈ En , on définit S − (z) comme étant l’ensemble des indices pour lesquels la composante correspondante de z est égale à -1. C’est à dire S − (z) = {i, 1 ≤ i ≤ n | zi = −1} Montrer que xRy ⇔ S − (x) ⊂ S − (y) 3) Montrer que (En , R) est un treillis en précisant pour chaque ensemble de deux éléments sa borne inférieure et sa borne supérieure. PARTIE III Soit σ l’application de En dans En (shift ou décalage circulaire) telle que : si z = (z1 , z2 , . . . , zi , . . . , zn ) alors σ(z) = (zn , z1 , . . . , zi−1 , . . . , zn−1 ). On se propose de trouver le nombre d’éléments x de la forme (y1 yn , y2 y1 , . . . , yi yi−1 , . . . yn yn−1 ) c’est à dire tel qu’il existe y satisfaisant à x = y ? σ(y). Soit f l’application de En dans En telle que f (u) = u?σ(u). Soit F l’équivalence d’application de f . 1) Montrer que pour chaque x de En , la classe d’équivalence de x pour F contient exactement deux éléments que l’on précisera en fonction de x. On pourra commencer par examiner la classe de (1, 1, 1, . . . , 1, . . . , 1) 2) Déterminer le cardinal de En /F puis celui de f (En ) et en déduire le nombre d’éléments x de En de la forme y ? σ(y). 3) Question supplémentaire (avec points supplémentaires) : Montrer que x est de la forme y ? σ(y) si et seulement si le nombre de composantes de x qui sont égales à -1 est un nombre pair. C++ septembre 2002 Durée 1h30 Cours autorisé ATTENTION : soignez la présentation et l’écriture. Chaque réponse doit être accompagnée d’une justification. Le barème est donné à titre indicatif. Exercice 1. (6 pts) Questions de cours Répondre aux questions suivantes de manière concise (i.e. 3-4 lignes maximum). Eviter d’utiliser telles quelles des phrases tirées du cours, ces questions sont là pour évaluer votre maı̂trise du langage, évaluation nulle dans le cas pré-cité. 1. Pourquoi est-il conseillé de passer par valeur un paramètre dont le type est une classe à une fonction ? 2. Dans une classe, comment fait-on pour initialiser un attribut dont le type est une classe (par opposition à un type fondamental) ? 3. Vous voulez écrire une fonction qui calcule le carré de deux entiers, de deux réels, de deux fractions, de deux matrices, etc. Comment faites-vous ? Exercice 2. (14 pts) Comptes bancaires L’objectif de cet exercice est de définir différentes sortes de comptes bancaires. 1. Compte simple. Tout d’abord, nous nous intéressons à un compte simple caractérisé par un solde exprimé en centimes (ou cents), positif ou négatif, et son titulaire (on suppose qu’il existe une classe Personne). Il est possible de créditer ce compte ou de le débiter d’un certain montant. Définir en C++ la classe correspondant à ce compte (classe Compte). 2. Compte courant. En fait, une banque conserve, pour chaque compte, l’historique des opérations qui le concernent (on se limite ici aux opérations de crédit et de débit). Cet historique est utilisé pour éditer les relevés de compte envoyés à ses clients. Le service télématique de la banque donne la possibilité au client de consulter l’historique. Le client peut choisir de voir toutes les opérations, les opérations de crédit seules ou les opérations de débit seules. On souhaite modéliser un tel compte qu’on appelle compte courant. Il peut être défini comme un compte pour lequel l’historique des opérations est conservé. Un compte courant offre des opérations pour afficher l’ensemble des opérations effectuées (afficher) ou seulement les opérations de crédit (afficher crédit) ou de débit (afficher débit). Indiquer quelle est la relation entre un compte simple et un compte courant. Écrire la classe C++ correspondant à un compte courant (classe Compte Courant). Indication : pour représenter l’historique on utilisera un tableau d’entiers. Le signe de l’entier indique le type d’opération (positif pour crédit et négatif pour débit). La valeur absolue de l’entier correspond au montant de la transaction. 3. Numéro de compte. Pour identifier ses comptes, une banque leur affecte des numéros qui doivent bien entendu être uniques. On suppose que les numéros sont des entiers et qu’ils sont attribués par ordre croissant en commençant à 10001. Les numéros de compte sont donc 10001, 10002, 10003, etc. Un numéro doit être attribué à tout compte qui est ouvert (créé). Il est donc naturel de le définir dans la classe Compte. Indiquer précisément où ce numéro doit être affecté. Proposer une solution pour déterminer ces numéros et modifier la classe Compte en conséquence. Indiquer quelles sont les modifications à apporter à la classe modélisant les comptes courants. Carte à Mémoire et Contrôle d’Accès septembre 2002 Durée 1h I) Lorsque une carte est introduite dans un lecteur, des données sont échangées. Quel nom est donné à cette phase. Ces données sont-elles transmises depuis la carte ou vers la carte ? II) Donner le nom et le rôle de deux types de fichiers dans le système de fichiers. Préciser leur rôle. III) Dans le protocole de validation des transactions commerciales pour les cartes à puce, quelles données sont créées par la carte ? A quelles entités sont elles transmises ? IV) Pour de petits montants, le centre de contrôle est utilisé de manière différée. Concevoir de manière détaillée une fraude, effectuée par le porteur de carte, rendue possible par le fait que les données du centre de contrôle ne sont pas disponibles lors de la transaction. Cette fraude est-elle possible sans complicité ? L2 : Systèmes d’exploitation septembre 2002 Partie 2 Aucun document, ni calculette ne sont autorisés. Les parties 1 et 2 seront traitées sur des feuilles séparées. Utilisation sous Linux d’un ensemble de sémaphores Le travail consiste à remplir le programme suivant, par rapport aux commentaires. Key_t ma_cle Int id_ens_sem Union semun { Int val ; Struct semid_ds *buf ; Ushort *array ; } init_sem ; ma cle = - - - - - - - - - - - - - - - - - - - // id ens sem = - - - - - - - - - - - - - - - - -// - - - - - - - - - - - - - - - - - - - - - - - - - -// -------------------------struct sembuf operation[] = - - - - - - - // ------------------------ sur un fichier existant quelconque création d’un ensemble de 2 sémaphores on initialise la valeur de tous les sémaphores de l’ensemble à ’2’. on définit un ensemble d’opérations : P (sem0,1) & V (sem1,2) // on applique cet ensemble de deux opérations à l’ensemble de sémaphores de id ens sem Questions de cours 2. A quoi peuvent servir les sémaphores ? 3. Donnez l’algorithme des deux primitives de manipulation des sémaphores. 4. Quelles sont les opérations possibles sur un sémaphore privé 5. Décrivez succinctement la primitive supplémentaire de manipulation de sémaphore qui est implémentée sous UNIX. Manipulations de sémaphores 6. Ecrire l’algorithme qui permettent de synchroniser deux classes de processus : Consommateurs et producteurs. Vous utiliserez les primitives prédéfinies de manipulations de sémaphores. 7. Montrez le bon fonctionnement de votre algorithme sur un exemple concret. L3 : Bases de données 2e session 2002 Durée 2 heures Ci-dessous, le texte de l’examen de juin. Je vous demande de traiter uniquement les questions auxquelles vous n’avez pas su répondre ou bien auxquelles vous estimez n’avoir pas répondu correctement, lors de l’examen de juin. 1. On considère une application informatique utilisant plusieurs bases de données relationnelles. Pour faciliter l’accès à ces bases de données on construit une “métabase” qui décrit ces bases de données de la façon suivante. Une base de données est décrite par son nom (une chaı̂ne de caractères) qui l’identifie et par l’ensemble de ses relations. Une relation est décrite par son nom (une chaı̂ne de caractères) qui l’identifie au sein d’une base de données, par l’ensemble de ses attributs et par sa clé primaire qui rappelons-le est un sous-ensemble des attributs de cette relation. Un attribut d’une relation est décrit par son nom (une chaı̂ne de caractères) qui l’identifie au sein de cette relation et par son type (une chaı̂ne de caractères). On demande : (a) de construire le schéma de classes UML qui spécifie cette métabase ; (b) de traduire ce schéma en schéma relationnel. 2. Soit un index organisé en arbre B+, constitué de 80000 enregistrements dont les clés ont une longueur maximum de 30 octets. On suppose de plus que les pages doivent avoir une longueur qui est une puissance de 2 (32, 64, 128, . . . ) et qu’un pointeur occupe 4 octets. Calculer la taille minimum des pages pour que l’index ait une hauteur maximum de 3 (racine + 1 niveau de nœuds non terminaux + 1 niveau de feuilles). 3. Soit deux relations de base P et Q telles que P possède un attribut A qui constitue sa clé primaire et Q possède un attribut B qui est une clé étrangère qui réfère la clé primaire de P . On suppose qu’il n’existe pas d’index sur les attributs A et B. (a) Proposer une méthode basée sur la construction d’un fichier de hachage avec répertoire pour effectuer l’équijointure join(P, Q, A = B). (b) Evaluer le coût de cette méthode en supposant connus les temps de lecture et d’écriture d’une page, les cardinalités de P et Q, le nombre de pages qu’elles occupent et la taille du répertoire dont on suppose qu’elle a été choisie de façon à ce qu’une seule page soit liée à chaque case du répertoire. 4. Soit les trois transactions suivantes : T1 start lock X C1 read C1 C1 := C1 - A write C1 unlock C1 lock X C2 read C2 C2 := C2 + A write C2 unlock C2 commit T2 start lock X C1 read C1 C1 := C1 - B write C1 lock X C2 read C2 unlock C1 C2 := C2 + B write C2 unlock C2 commit T3 start lock S C1 read S C2 read C1 read C2 display C1 + C2 unlock C1 unlock C2 commit (a) Ces trois transactions sont-elles bien formées ? Justifiez votre réponse. (b) Lesquelles de ces trois transactions sont à deux phases ? Justifiez votre réponse. Considérons maintenant les deux exécutions suivantes de ces transactions : E1 (T1 ) (T1 ) (T1 ) (T1 ) (T1 ) (T1 ) (T3 ) (T3 ) (T3 ) (T3 ) (T3 ) (T3 ) (T3 ) (T3 ) (T3 ) (T1 ) (T1 ) (T1 ) (T1 ) (T1 ) (T1 ) start lock X C1 read C1 C1 := C1 - A write C1 unlock C1 start lock S C1 lock S C2 read C1 read C2 display C1 + C2 unlock C1 unlock C2 commit lock X C2 read C2 C2 := C2 + A write C2 unlock C2 commit E2 (T2 ) (T2 ) (T2 ) (T2 ) (T2 ) (T2 ) (T2 ) (T2 ) (T3 ) (T3 ) (T2 ) (T2 ) (T2 ) (T2 ) (T3 ) (T3 ) (T3 ) (T3 ) (T3 ) (T3 ) (T3 ) start lock X C1 read C1 C1 := C1 - B write C1 lock X C2 read C2 unlock C1 start lock S C1 C2 := C2 + B write C2 unlock C2 commit lock S C2 read C1 read C2 display C1 + C2 unlock C1 unlock C2 commit (c) Lesquelles de ces deux exécutions sont-elles sérialisables ? Justifiez votre réponse. (d) Vérifier la réponse à la question précédente en traçant les graphes de dépendance de ces deux exécutions.