Département Programmation et informatique fondamentale PIF
Laboratoire d'Intelligence Artificielle et Sémantique de Données
Université Paris 8
2023-2024
Méthodologie de la programmation
Ce cours est conçu pour introduire les étudiants aux principes fondamentaux et aux bonnes pratiques de la programmation informatique. À travers une approche progressive et structurée, ce cours vise à équiper les étudiants avec les connaissances nécessaires pour développer des applications logicielles robustes et efficaces.
Contenus du cours:
Notions de base : Introduction à l'environnement de développement, compréhension du cycle de compilation et d'interprétation, exploration des jeux d'instructions, variables, fonctions, conditions, boucles d'itération, et introduction à la récursivité.
Familles de Langages Informatiques :
Langages de Commande (Shell) pour automatiser et exécuter des tâches système.
Langage Impératif (C) pour aborder la programmation procédurale avec un focus sur la structure et la séquence des opérations.
Langage Orienté Objet (C++) pour comprendre l'encapsulation, l'héritage, et le polymorphisme.
Langage Impératif Structuré Orienté Objet (Python) pour allier la simplicité syntaxique à la puissance de la programmation orientée objet.
Objectifs pédagogiques :
Apprendre à programmer : acquérir une compréhension solide des principes de base de la programmation pour pouvoir écrire et débugger du code.
Construction d'un projet : introduction aux méthodologies pour débuter et gérer le développement d'un projet informatique.
Résolution de problèmes par étapes : apprendre à décomposer les problèmes en sous-problèmes gérables et à les résoudre systématiquement.
Projets pratiques :
Création d'une première application : mettre en pratique les connaissances acquises en développant une application simple.
Réalisation d'un projet en mode guidé : appliquer une démarche méthodologique pour réaliser un projet informatique de A à Z, en mode guidé.
Objectifs du cours:
Comprendre et appliquer les principes fondamentaux de la programmation.
Maîtriser les bases de différents langages de programmation et comprendre leurs utilisations selon le contexte.
Aborder la conception et le développement d'applications logicielles de manière méthodique.
Développer une capacité à résoudre des problèmes informatiques complexes par étapes.
Ce cours est essentiel pour les étudiants en informatique débutant dans la programmation, offrant une base solide sur laquelle construire leur parcours académique et professionnel dans le développement logiciel.
Architecture des ordinateurs
Le cours "Architecture des Ordinateurs" offre aux étudiants une compréhension fondamentale de la structure et du fonctionnement interne des ordinateurs. Ce cours couvre les principes de base de l'architecture informatique, en se concentrant sur la manière dont le matériel et le logiciel interagissent pour exécuter les opérations et les instructions.
Sujets abordés incluent généralement :
Les composants de base d'un ordinateur : CPU (Unité Centrale de Traitement), mémoire, dispositifs d'entrée/sortie, etc.
Le cycle d'instruction : comment les instructions sont fetchées, décodées et exécutées.
Les systèmes de numération et la représentation des données : binaires, hexadécimales, et la représentation des nombres, des caractères, et des instructions.
L'organisation de la mémoire : RAM, ROM, mémoire cache, et la gestion de la mémoire.
Les architectures de processeur : architecture de Von Neumann, architectures parallèles, et les pipelines.
Les bus et les interfaces : méthodes de communication entre les composants d'un ordinateur.
Les dispositifs d'entrée/sortie et le stockage : principes de fonctionnement et d'interface avec le CPU et la mémoire.
Les concepts d'assemblage : introduction au langage d'assemblage pour comprendre le lien entre le matériel et les instructions de bas niveau.
Ce cours vise à doter les étudiants des connaissances nécessaires pour comprendre les décisions de conception d'architecture informatique et comment elles influencent les performances et la fonctionnalité des systèmes informatiques. Il est essentiel pour ceux qui s'intéressent à l'informatique matérielle, au développement de systèmes embarqués, ou à l'optimisation des logiciels au niveau matériel.
Programmation logique
Le cours "Programmation Logique", centré sur le langage Prolog, introduit les étudiants aux concepts et aux techniques fondamentales de la programmation basée sur la logique. Prolog, abréviation de "Programming in Logic", est un langage de programmation qui s'appuie sur la logique formelle pour effectuer des opérations de calcul. Ce cours explore comment la programmation logique peut être utilisée pour résoudre des problèmes complexes de manière déclarative, en exprimant les solutions sous forme de faits et de règles plutôt qu'en séquences d'instructions.
Contenus du cours :
Introduction à la programmation logique : histoire et principes fondamentaux de la programmation déclarative, avec une comparaison avec les paradigmes impératif et fonctionnel.
Les bases de Prolog : syntaxe de base, faits, règles, et requêtes. Comment formuler des problèmes et interroger des bases de connaissances.
Mécanisme d'unification et de retour en arrière : comprendre le cœur de Prolog, l'unification, et comment Prolog navigue dans les arbres de recherche pour trouver des solutions.
Structures de données en Prolog : listes, arbres, et autres structures, et comment les manipuler en Prolog.
Récursivité : exploitation de la puissance de la récursivité pour résoudre des problèmes en Prolog.
Stratégies de recherche : approfondissement des stratégies de recherche, telles que la recherche en profondeur et en largeur, et leur mise en œuvre en Prolog.
Résolution de problèmes : application de la programmation logique à des domaines tels que la résolution de puzzles, le traitement du langage naturel, et les systèmes experts.
Objectifs du cours :
Comprendre et appliquer les principes de la programmation logique pour exprimer des solutions à des problèmes informatiques.
Maîtriser la syntaxe et les fonctionnalités clés de Prolog pour créer des bases de connaissances et des programmes.
Utiliser la récursivité et les stratégies de recherche pour concevoir des algorithmes efficaces en Prolog.
Analyser et optimiser des programmes Prolog pour améliorer leurs performances et leur lisibilité.
Ce cours est particulièrement adapté aux étudiants intéressés par l'intelligence artificielle, la théorie des langages de programmation, et la résolution de problèmes complexes, offrant une approche différente de la programmation qui met l'accent sur le "quoi" plutôt que le "comment".
Ingénierie des Langues
Le cours "Ingénierie des Langues", destiné aux étudiant-e-s en dernière année de licence informatique, explore les techniques et outils avancés pour l'analyse et l'exploitation des données textuelles. Ce cours combine des approches théoriques et pratiques pour fournir une compréhension profonde de l'ingénierie linguistique et du traitement automatique des langues (TAL).
Contenus du cours :
Introduction à l'ingénierie des langues : définitions, domaines d'application, et enjeux.
Création de corpus : techniques de recueil de ressources web pour constituer des bases de données textuelles.
Analyse et annotation de données textuelles : méthodes et outils pour l'analyse syntaxique, sémantique et pragmatique des textes.
Introduction aux outils de métrique et aux statistiques pour l'évaluation des modèles de TAL : précision, rappel, score F1, et TF-IDF.
Technologies de traitement automatique du langage naturel (TALN) : approches basées sur le machine learning pour l'analyse linguistique, la reconnaissance de la parole, et la génération de texte.
Utilisation de modèles d'apprentissage pour l'analyse de données linguistiques : exploration des méthodologies d'apprentissage automatique et de leurs applications en ingénierie des langues.
Projets pratiques : développement d'applications de traitement de langues, incluant la création de corpus, l'annotation, l'analyse linguistique, et l'implémentation de modèles d'apprentissage.
Objectifs du cours :
Comprendre les principes de l'ingénierie des langues et du traitement automatique du langage naturel.
Maîtriser les compétences techniques pour collecter, analyser, annoter des données textuelles, et évaluer des modèles de TAL.
Développer une expertise dans l'utilisation d'outils de métrique et de statistiques pour l'évaluation des performances des modèles de TAL.
Appliquer les connaissances théoriques à des projets pratiques, en utilisant des modèles d'apprentissage pour résoudre des problèmes linguistiques complexes.
Ce cours est essentiel pour les étudiant-e-s souhaitant se spécialiser dans le traitement automatique du langage, offrant une base solide pour aborder les défis linguistiques et informatiques avec des méthodes avancées.
Remise à niveau en programmation informatique
Ce cours intensif s'adresse aux étudiants-e-s de première année de licence informatique ou en réorientation pour L1 Informatique, qui souhaitent consolider leurs acquis en
programmation ou qui n'ont pas pu suivre les cours de programmation durant le premier semestre 2023-2024.
Contenus du cours:
Notions de base et avancées en programmation : introduction aux concepts fondamentaux de la programmation, exploration des structures de contrôle, des fonctions et des classes, et approfondissement des techniques de résolution de problèmes.
Langages de programmation : apprentissage pratique de différents langages de programmation pour la création d'applications logicielles, avec un accent sur la syntaxe et les fonctionnalités spécifiques à chaque langage.
Projets pratiques : réalisation de projets courts pour appliquer les connaissances acquises en programmation et développer des compétences pratiques.
Objectifs du cours:
Acquérir une compréhension solide des principes de base et avancés de la programmation informatique.
Maîtriser la syntaxe et les fonctionnalités des langages de programmation utilisés dans le cours.
Développer des compétences pratiques en résolution de problèmes et en développement logiciel.
Être capable de concevoir et de créer des solutions logicielles pour des problèmes simples et complexes.
Ce cours intensif est une opportunité pour les étudiant-e-s de première année de licence informatique de se mettre à niveau en programmation et de développer des compétences essentielles pour leur parcours académique et professionnel.