Chronologie du cours
page d’accueil
septembre
2 septembre 2024
présentation rapide de ce qu’est l’informatique;
introduction à la ligne de commande
introduction au SGF
commandes liées au SGF : pwd
, cd
, ls
, mkdir
, rmdir
, cp
,
mv
, rm
4 septembre 2024
i-nœuds, commande ls -i
répertoires comme entité structurante pour le passage du tableau
d’i-nœuds à l’arborescence du SGF
liens physiques et liens symboliques; commandes ln
et ln -s
exemple de création d’un faux gros fichier; code: bigfile.c
espace d’adressage
droits sur les fichiers : consultation, signification et modification
5 septembre 2024
caractérisation d’un langage de programmation: paradigmes
(POO/impératif/fonctionnel)
graphe de flot de contrôle d’un programme
compilation vs. interprétation
types: définition, taille, conversions explicite et implicite, typage fort vs. typage faible
typage statique vs. typage dynamique
identifiants dans les langages de programmation
bases de C
: compilation
9 septembre 2024
bases de C
: flot d’un programme C
et rôle de la fonction main
identifiants en C
: règles
variables en C
: déclaration, affectation
variables en C
: portée
10 septembre 2024
variables en C
: portée; code :
reutilisation_identifiant.c
constantes en C
(littérales et symboliques)
fonctions en C
: invocation/appel, syntaxe
11 septembre 2024
fonctions en C
: passage par valeurs, variables locales, valeur de
retour; code : passage_par_valeurs.c
types en C
: int
, unsigned int
, int8_t
, int32_t
, int64_t
,
uint8_t
, uint32_t
, uint64_t
bit de poids fort / bit de poids faible
complément à 2
16 septembre 2024
opérations sur les entiers
norme IEEE 754 pour les nombres à virgule flottante en double
précision
opérations sur les doubles, problèmes de précision et erreurs d’arrondi
opérations entre doubles et entiers
booléens
structures de contrôle de C
: conditionnelles, boucles
conditionnelles, boucles inconditionnelles
18 septembre 2024
23 septembre 2024
25 septembre 2024
gestion de la mémoire en C
: tableaux (déclaration, initialisation)
30 septembre 2024
preuve de correction par récurrence
compter des opérations en itératif et en récursif
ordres de grandeurs : grand O, $\Theta$, $\Omega$
octobre
2 octobre 2024
définition des pointeurs
valeur, contenu et déréférencement d’un pointeur
obtenir une valeur de type pointeur: NULL
, adresse d’une variable,
allocation mémoire avec malloc
7 octobre 2024
comparaisons et calculs des ordres de grandeurs habituels
comment définir les tailles des entrées; code : tri_bulle.c
complexités dans le pire et le meilleur des cas (définition)
Schéma général de calcul d’une complexité
étude de la complexité temporelle du tri bulle: meilleur des cas et
pire des cas; code : tri_bulle.c
9 octobre 2024
14 octobre 2024
16 octobre 2024
étude de la complexité temporelle de la recherche dichotomique: meilleur des
cas et pire des cas; code : dichotomie.c
novembre
4 novembre 2024
6 novembre 2024
étude de la complexité temporelle du tri fusion; code : tri_fusion.c
13 novembre 2024
introduction à OCaml
: immuabilité, expressions
compilation et exécution OCaml
: OCamlc
, OCamlopt
, REPL
types primitifs OCaml
définitions de variables
expressions conditionnelles, expressions let
et portée
annotation de types
fonctions anonymes
définition d’une fonction
18 novembre 2024
sémantiques dynamique et statique des fonctions
curryfication
20 novembre 2024
25 novembre 2024
polymorphisme
listes littérales, sémantiques des listes, constructeur de liste (::
); code : longue_liste.ml
filtrage par motifs de listes
fonctionnement du filtrage
27 novembre 2024
filtrage profond, disjonction de motifs
exemples filtrage par motifs de listes; code :
pattern_matching.ml
décembre
2 décembre 2024
types algébriques: types énumérés sans valeur; code : mois.ml
portée des constructeurs des types énumérés
motifs de filtrage pour les types énumérés
enregistrements et leurs motifs
$n$-uplets et leurs motifs
4 décembre 2024
9 décembre 2024
11 décembre 2024
types récursifs et polymorphes; code : liste.ml /
liste_parametree.ml
mot-clef and
en OCaml
pour définir des types mutuellement
récursifs
options
parenthésage (
/)
et begin
/end
files en OCaml
; code : queue.ml
16 décembre 2024
arbres binaires : définitions de base (père, frère, sous-arbre,
feuille, nœud interne, branche, arbre binaire strict, arbre binaire
complet)
lien taille / hauteur dans les divers types d’arbres binaires
implémentation des arbres binaires en C
avec des pointeurs et en OCaml
avec un type somme
implémentation des arbres binaires complets sous forme de tableau
files de priorité
18 décembre 2024
implémentation des files par tas max : percolation vers le bas (correction et
complexité)
janvier
6 janvier 2025
implémentation des files par tas max (suite) : percolation vers le
haut, modification de valeur, insertion de valeur, extraction du
maximum, construction d’un tas (avec les complexités)
7 janvier 2025
complexité en moyenne
étude de la complexité en moyenne du tri bulle; code :
tri_bulle.c
complexité amortie : méthode du banquier, exemple des tableaux de
taille variable
8 janvier 2025
complexité amortie (suite) : méthode du banquier, exemples des
tableaux de taille variable et des files implémentées par deux
piles; méthode des potentiels, exemple des tableaux de taille
variable
13 janvier 2025
complexité amortie (fin) : exemple des files implémentées par deux
piles avec la méthode des potentiels
applications des arbres binaires :
minoration de la complexité dans le pire des cas d’un tri par
comparaisons
tri par tas
principe du codage de Huffman
tri rapide : déroulement sur un exemple
15 janvier 2025
mutabilité en OCaml
: enregistrements avec champs mutables, types référence
(y compris les tests d’égalité et de différence, ==
et !=
)
unit
comme type de retour d’une fonction
opérateur ;
20 janvier 2025
tri rapide : correction totale, analyse
de complexité dans le pire des cas, dans le meilleur des cas et en
moyenne sous l’hypothèse de l’absence de doublons; code :
tri_rapide.c
tri rapide : sensibilisation au cas des doublons
22 janvier 2025
type unit
: type de retour, expressions conditionnelles, fonctions
sans argument; code : pile.ml
tableaux en OCaml
boucles for
en OCaml
27 janvier 2025
tri rapide : variante pour tenir compte des doublons; code :
tri_rapide_3.c
parcours d’arbres binaires: en profondeur (préfixe, postfixe,
suffixe), en largeur
boucles while
en OCaml
28 janvier 2025
exceptions en OCaml
type caractère en C
et en OCaml
chaînes de caractères en C
et en OCaml
Rappels sur les flux standards des processus
février
3 février 2025
représentation d’un ensemble de données
arbres binaires de recherche:
construction naïve; code : abr.ml
recherche d’élément
parcours infixe
ajout d’un élément
suppression d’un élément
arbres rouge et noir: définition, lien entre taille et hauteur
4 février 2025
10 février 2025
arbres rouge et noir : insertion et suppression d’un élément; code :
arbresRN.ml
tables de hachage: définition
11 février 2025
tables de hachage: résolution des collisions par sondage et par
chaînage; module Hashtbl
en OCaml
tests fonctionnels ou “boîtes noires”
mars
3 mars 2025
tests structurels ou “boîtes blanches”
documentation du code
assert
récursivité et induction : preuve du principe de récurrence,
vocabulaire lié aux ordres
4 mars 2025
ordres bien fondés
ordres sur les ensembles produits
définitions par induction
théorème d’induction structurelle
10 mars 2025
caractérisation d’un ensemble défini par induction comme union
infinie
théorème d’induction bien fondée
construction inductive des formules de logique propositionnelle,
représentation par arbre d’une formule, notions de taille et de
hauteur
ensemble des valeurs de vérité
valuations et extension inductive aux formules
11 mars 2025
nouveaux connecteurs : $\to$, $\leftrightarrow$, $\top$, $\bot$
satisfiabilité d’une formule, modèle (notation $\models$)
tautologie, antilogie; principe du tiers exclu
équivalence logique; contraposée, lois de De Morgan
conséquence logique (notation $\models$)
12 mars 2025
vocabulaire : littéraux positifs et négatifs, clauses
problèmes SAT et $n$-SAT
formes normales négatives : constructions et preuves
formes normales conjonctives : construction, preuve, exemple de
formule dont la FNC a une taille exponentielle
description du format DIMACS et exemple de minisat comme SAT-solveur
17 mars 2025
substitution dans un formule logique : définition, une substitution
dans une tautologie est une tautologie
algorithme de Quine
formules normales disjonctives, FND complètes
18 mars 2025
24 mars 2025
25 mars 2025
31 mars 2025
diviser pour régner : couverture de $n$ points par $k$ segments
égaux de plus petite longueur; ligne d’horizon
meet in the middle : somme de sous-ensembles
algorithmique du texte : recherche de motif (algorithme naïf)
avril
1er avril 2025
algorithmique du texte : recherche de motif (algorithme de
Rabin-Karp + algorithme de Boyer-Moore-Horspool)
début bases de données : vocabulaire sur les tables
7 avril 2025
requêtes simples sur une seule table : SELECT ... FROM ... WHERE ...
organisation du résultat d’une requête : AS
, ORDER BY
,
DISTINCT
opérations ensemblistes : INTERSECT
, EXCEPT
, UNION
jointures “à la main”
jointures internes avec JOIN
8 avril 2025
jointures externes avec LEFT JOIN
requêtes complexes : requêtes imbriquées
modèle entités / associations
contraintes de cardinalité
contraintes d’intégrité : clefs primaires, clefs étrangères
fonctions d’agrégation : MIN
, MAX
, SUM
, AVG
, COUNT
agrégats : GROUP BY
, HAVING
28 avril 2025
fin algorithmique du texte : compression de données
(algorithme de Lempel-Ziv-Welsh)
début graphes : vocabulaire
29 avril 2025
un peu de combinatoire sur les graphes
connexité et forte connexité, composantes connexes et fortement
connexes