* lundi 15/9. Architecture : mémoire, processus etc.
* lundi 29/9. Modèle de calcul des automates finis.
* lundi 6/10. Machine virtuelle à pile (MVàP).
* lundi 13/10. Fin MVàP + révisions
à planifier un examen sur table.
Ce cours est un peu réduit par rapport aux autres années (moins de séances).
Pas de détails sur le codage des fichiers dont le texte (ASCII, UTF-8), ni sur le système des fichiers (arborescence, comment c'est codé etc), ni sur les commandes unix.
### Anglais
L'objectif est de travailler en anglais (écouter, écrire, discuter) autour de sujets en lien avec l'informatique, soit historique, soit plus récents et en lien avec le droit.
* lundi 17/11. Présentation de page du manuel unix en anglais.
Discussion d'articles de Alan Turing.
Présentation de ressources en anglais pour continuer la suite du cours sous la forme d'un séminaire participatif.
* lundi 8/12. à organiser selon choix sujets étudiants
* lundi 15/12. à organiser selon choix sujets étudiants
évaluation en cours: participation + présentation en petit groupes.
Un peu de background sur l'architecture, en particulier la hiérarchie de la mémoire d'une machine moderne. Illustration sur mon portable.
* Registres : une dizaine 64 bits chaque.
* Cache L1, L2, L3 : entre la RAM et les registres, quelques Mo (ma méchine 16 Mo Bytes).
* RAM : plusieurs Giga (mémoire vive) 32 Ga sur ma machine
* Disque : 1 Tera.
à chaque étage, on fait en gros fois 1000. La vitesse d'accès (et le prix) est inversement proportionnel.
Explication : assembleur pour chaque famille de processeur (dépend du fabriquant AMD ou Intel)
En pratique: on a souvent un assembleur abstrait indépendant du matériel.
La traduction d'un code de haut niveau se fait en deux temps. D'abord du langage de haut niveau vers cet assembleur, puis de cet assembleur vers le véritable assembleur du constructeur du processeur.
Évocation Loi de Moore : doublement de la mémoire dans les années 80, 90, viser le bon bussiness plan car projet prend 10 ans entre début et livraison des premiers clients.
Évocation: partage de la RAM entre chaque processus.
Un processus a une pile (pour les choses petites) et un tas (pour les choses grandes). Sur la pile on indique l'adresse de quelque chose de gros dans le tas.
Rappel des instructions élémentaires pour faire des calculs sur la pile (pousser un entier, 4 opérations arithmétique). Exemple d'un calcul de moyenne avec deux notes et des coefficients différents.
Présentation de l'intérêt d'avoir des variables dans la pile, et des entrées sorties avec l'utilisateur. Exemple avec le cacul de la moyenne précédent.
Évolution du calcul de la moyenne, avec l'apparition d'un maximum. Il est nécessaire de pouvoir dépasser le stade d'instructions successives systématiques et d'avoir des blocs d'instructions, avec des sauts, en particuliers des sauts conditionnés ou résultat d'un test.
Formalisation d'un if-then-else avec la MVàP.
Évocation de boucles. Formalisation d'une boucle while.