Course list

3. [C] Introduction à la programmation en C

Ce cours est un complément au syllabus d'apprentissage de la programmation en langage C sous Unix disponible via:

https://sites.uclouvain.be/SyllabusC

et utilisé en 2e bloc de bachelier en sciences informatiques à l'UCLouvain.

Besoin d'aide ? Rejoignez notre Slack

Algorithmes Avancés

L'objectif général de ce cours est de donner aux apprenants des notions avancées théoriques et pratiques sur différentes approches de résolution de problèmes.

OBJECTIFS DU COURS POUR L’APPRENANT

Au terme de ce cours, l’apprenant sera capable :

  • de modéliser un problème comme un problème de graphe ;
  • de justifier le choix d’une approche algorithmique plutôt qu’une autre ;
  • d’utiliser de manière adéquate les différentes approches algorithmiques classiques.

CONTENU DE COURS

  • Introduction
  • Graphes : représentations et quelques algorithmes
  • Approche gloutonne / greedy
  • Recherche complète
  • Diviser pour reigner / Divide and conquer
  • Programmation dynamique

PRE-REQUIS

  • Complexité algorithmique
  • Structures de données linéaires et non linéaires
  • Langage de programmation orientée objet

METHODES D’ENSEIGNEMENT ET D’APPRENTISSAGE

  • Cours magistral
  • Approche Par Problème
  • Travaux Dirigés
  • Travaux Pratiques
  • Travaux Personnels des Etudiants

EVALUATION DES APPRENTISSAGES

  • Un examen écrit (sur des questions de compréhension, de connaissance et d'application) – 50%
  • 5 TP – 50%

REFERENCES BIBLIOGRAPHIQUES

      1. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein. Introduction to algorithms. 3ème édition, 2009.
    1. Halim, Competitive Programming, 3ème édition, 2013.
      1. Skiena, The algorithm design manual, 2ème edition.
Interactive

Ce cours comporte quelques exercices interactifs offrant aux étudiants un accès SSH pour entrer différentes commandes.

Retro-engenierie

L’objectif de ce cours est d’initier les étudiants aux technique de rétro-ingénierie. Ils apprendront analyser des codes binaires et à désassembler des applications afin d’avoir accès à la logique de ces applications.

De manière spécifique les étudiants développeront les compétences suivants :

#. Maîtrise des modèle de code générer par les différents types de compilateur modernes

  1. Maîtrise des techniques d’analyse statique de codes binaires
  2. Maîtrise des techniques d’analyse dynamique de codes binaires
  3. Être capable de mettre en œuvre ces technique pour analyser et disséquer des applications courantes.
Sytèmes temps réel

Ce ours a pour objectif de permettre aux apprenants de:

  1. Comprendre les spécificités des systèmes embarqués et temps réels
  2. Etre capable de concevoir et l'implémentation le logiciel pour de petit systèmes embarqués et temps réels.
  3. Etre capable d'étendre cette capacité de conception et d'implémentation à des systèmes plus grand et plus complexes.