Cours d'informatique
Cours d'informatique : les bases
L'informatique couvre un large éventail de spécialités, des mathématiciens jusqu'aux sciences de l'ingénieur.
Il vous permet de d'acquérir les bases sur lesquels vous pourrez vous reposer quelque soit votre spécialisation ultérieur, (ingénieur système, réseau, technicien, programmeur, ...).
Vous pouvez choisir une partie seulement de ce cours si vous le souhaitez, par exemple seulement l'architecture des ordinateurs. L'approfondissement de chacun des sujets dépend du nombre d'heures choisies.
Plan d'Introduction Générale : Architecture des Ordinateurs et Systèmes d'Exploitation
Histoire de l'Informatique : De la Préhistoire à l'ENIAC
Objectifs : Comprendre l'évolution de l'informatique depuis ses débuts jusqu'à l'ère moderne.
Contenu :
Préhistoire de l'Informatique :
Les premiers outils de calcul : abaques, boulier.
Les machines mécaniques : machine à différences de Charles Babbage, machine analytique.
Début du 20ème Siècle :
Les premières machines électromécaniques : tabulatrices de Herman Hollerith.
Les premiers calculateurs électroniques : Zuse Z3, Colossus.
L'ENIAC (Electronic Numerical Integrator and Computer) :
Contexte historique : Seconde Guerre mondiale et besoin de calculs rapides.
Caractéristiques techniques : architecture, composants, programmation.
Impact et héritage : influence sur les développements futurs, transition vers les ordinateurs modernes.
Technologies Employées :
Lampes : Utilisation des tubes à vide pour les premiers calculateurs électroniques.
Transistors : Révolution apportée par les transistors, remplaçant les lampes.
Premiers Circuits Intégrés : Miniaturisation poussée par la conquête spatiale.
VLSI (Very Large Scale Integration) : Augmentation de la densité des composants sur une puce.
CMOS (Complementary Metal-Oxide-Semiconductor) : Technologie de fabrication des circuits intégrés, réduisant la consommation d'énergie.
Miniaturisation et Circuits Intégrés :
Conquête spatiale : besoin de miniaturisation pour les missions spatiales.
Développement des circuits intégrés : transistors, microprocesseurs.
Impact sur l'informatique moderne : réduction de la taille, augmentation de la puissance de calcul.
Plan de Cours : architecture des ordinateurs
Objectifs : Comprendre les bases de l'architecture des ordinateurs.
Contenu :
Composants de Base d'un Ordinateur :
Le processeur (CPU) : architecture, registres, unités de contrôle et d'exécution.
La mémoire : types de mémoire (RAM, ROM, cache), hiérarchie de la mémoire.
Périphériques d'entrée/sortie : interfaces, bus, contrôleurs.
Architecture du Processeur :
Architecture de von Neumann vs architecture Harvard.
Le cycle d'instruction : fetch, decode, execute.
Pipelining : concepts de base, avantages et inconvénients.
Superscalarité et exécution hors ordre.
Mémoire et Hiérarchie de la Mémoire :
Mémoire principale (RAM) : types, organisation, gestion.
Mémoire cache : niveaux de cache, politiques de remplacement, cohérence de cache.
Mémoire secondaire : disques durs, SSD, mémoire flash.
Mémoire virtuelle : concepts, gestion, pagination et segmentation.
Bus et Interfaces :
Types de bus : bus de données, bus d'adresses, bus de contrôle.
Protocoles de communication : synchronisation, arbitrage.
Interfaces de périphériques : PCI, USB, SATA.
Architecture Parallèle et Multicœur :
Architecture multicœur : avantages, défis, programmation.
Architecture parallèle : SIMD, MIMD, SMP, NUMA.
Techniques de parallélisme : OpenMP, MPI, CUDA.
Architecture des Réseaux et des Systèmes Distribués :
Architecture réseau : modèle OSI, protocoles de communication.
Systèmes distribués : concepts, synchronisation, tolérance aux pannes.
Cloud computing : architecture, services, virtualisation.
Sécurité et Fiabilité :
Sécurité matérielle : Trusted Platform Module (TPM), chiffrement.
Fiabilité : tolérance aux pannes, redondance, RAID.
Sécurité logicielle : protection de la mémoire, contrôle d'accès.
Études de Cas et Projets :
Études de cas : analyse d'architectures spécifiques (x86, ARM, RISC-V).
Projets pratiques : conception et simulation d'une architecture simple, optimisation de performance.
Plan de Cours : systèmes d'exploitation et leur rôle
Objectifs : Comprendre les bases des systèmes d'exploitation.
Contenu :
Architecture des Systèmes d'Exploitation :
Structure en couches : noyau, shell, applications.
Modèles d'architecture : monolithique, micro-noyau, modulaire.
Interfaces utilisateur : CLI (Command Line Interface), GUI (Graphical User Interface).
Gestion des Processus :
Concepts de processus et de threads.
États des processus : nouveau, prêt, en cours d'exécution, en attente, terminé.
Ordonnancement des processus : algorithmes (FIFO, Round Robin, SJF, Priority Scheduling).
Synchronisation et communication inter-processus (IPC) : sémaphores, mutex, tubes, mémoire partagée.
Gestion de la Mémoire :
Types de mémoire : RAM, ROM, cache.
Allocation de mémoire : contiguë, non contiguë.
Pagination et segmentation.
Mémoire virtuelle : concepts, gestion, pagination à la demande.
Gestion des Fichiers et des Systèmes de Fichiers :
Concepts de fichiers et de répertoires.
Systèmes de fichiers : FAT, NTFS, ext4, HFS+.
Opérations sur les fichiers : création, lecture, écriture, suppression.
Sécurité des fichiers : permissions, contrôle d'accès.
Gestion des Périphériques et des Entrées/Sorties :
Types de périphériques : périphériques de stockage, périphériques d'entrée/sortie.
Pilotes de périphériques.
Interruptions et gestion des interruptions.
DMA (Direct Memory Access).
Sécurité des Systèmes d'Exploitation :
Concepts de sécurité : authentification, autorisation, confidentialité, intégrité.
Mécanismes de sécurité : chiffrement, pare-feu, antivirus.
Vulnérabilités et attaques : virus, malwares, exploits.
Systèmes d'Exploitation Réseau et Distribués :
Concepts de base des systèmes distribués.
Protocoles de communication : TCP/IP, UDP.
Services réseau : DNS, DHCP, FTP.
Systèmes de fichiers distribués : NFS, CIFS.
Études de Cas et Projets Pratiques :
Études de cas : analyse de systèmes d'exploitation spécifiques (Unix, Windows, Linux).
Projets pratiques : conception et implémentation de petits systèmes d'exploitation, optimisation de performance.
Exercices Pratiques
Exercices sur Unix
Objectifs : Appliquer les concepts théoriques sur un système Unix.
Contenu :
Commande de base : ls, cd, cp, mv, rm, chmod, chown.
Gestion des processus : ps, top, kill, nice, renice.
Gestion des fichiers : touch, cat, more, less, head, tail.
Scripting shell : écriture de scripts simples en bash.
Administration système : gestion des utilisateurs, groupes, permissions.
Exercices sur Windows
Objectifs : Appliquer les concepts théoriques sur un système Windows.
Contenu :
Commande de base : dir, cd, copy, move, del, attrib.
Gestion des processus : tasklist, taskkill, taskmgr.
Gestion des fichiers : type, more, find.
Scripting batch : écriture de scripts simples en batch.
Administration système : gestion des utilisateurs, groupes, permissions.
Plan de Cours : réseaux
Objectifs : Comprendre l'évolution des réseaux, les technologies et topologies utilisées, les protocoles et l'internet moderne.
Contenu :
Histoire des Réseaux :
Les premiers réseaux : ARPANET, développement des réseaux locaux (LAN).
Évolution des réseaux : de l'ARPANET à l'Internet moderne.
Technologies et Topologies Utilisées :
Topologies de réseau : bus, étoile, anneau, maillage.
Technologies de réseau : Ethernet, Wi-Fi, fibre optique.
Protocoles de Communication :
Modèle OSI : couches et fonctions.
Protocoles de base : TCP/IP, UDP, HTTP, FTP.
Internet Moderne :
Infrastructure de l'Internet : backbone, ISP, DNS.
Services et applications : web, email, streaming, cloud computing.
Sécurité des réseaux : pare-feu, VPN, chiffrement.
Plan de Cours : programmation
Objectifs : Comprendre l'évolution de la programmation depuis ses débuts jusqu'à l'ère moderne.
Contenu :
Débuts de la Programmation :
Les premiers langages de programmation : Fortran, COBOL, Lisp.
Évolution des langages : de l'assembleur aux langages de haut niveau.
Types de Programmation :
Programmation impérative : C, C++, Java.
Programmation fonctionnelle : Haskell, Lisp.
Programmation orientée objet : Java, C#.
Programmation logique : Prolog.
Langages de Programmation :
Langages de bas niveau : assembleur.
Langages de haut niveau : Python, Ruby, JavaScript.
Langages spécialisés : SQL, HTML/CSS.
Programmation Web :
Évolution du web : de l'HTML statique aux applications web dynamiques.
Technologies web : HTML, CSS, JavaScript, frameworks (React, Angular, Vue.js).
Backend : langages et frameworks (Node.js, Django, Ruby on Rails).
Bases de données : SQL, NoSQL (MongoDB, Cassandra).