Ce repository documente mon parcours d'apprentissage du cours CS50x de Harvard, une introduction complète à l'informatique suivie par plus d'un million d'étudiants dans le monde. Ce cours gratuit via edX couvre les fondamentaux de la programmation, des algorithmes et du développement web.
- Maîtriser les bases du langage C et de la gestion mémoire
- Apprendre Python et ses applications pratiques
- Comprendre les structures de données et algorithmes fondamentaux
- Renforcer mes compétences en bases de données avec SQL et des technologies web (HTML, CSS, JavaScript, Flask)
- Préparer mon Master en Computer Science
Introduction à la pensée computationnelle avec Scratch, blocs visuels, concepts de base de la programmation.
Syntaxe C, compilation, types de données, fonctions, bibliothèques standards, debugging avec printf
.
Arrays, chaînes de caractères, manipulation de caractères, arguments en ligne de commande, cryptographie basique.
Algorithmes de tri (bubble, selection, merge), recherche (linéaire, binaire), analyse de complexité (Big O), récursivité.
Pointeurs, allocation dynamique, gestion heap/stack, manipulation de fichiers, formats d'images (BMP, JPEG).
Listes chaînées, arbres binaires, tables de hachage, piles, files, optimisation des accès mémoire.
Transition vers Python, syntaxe haut niveau, bibliothèques, programmation orientée objet, parsing de données.
Bases de données relationnelles, requêtes SQL, joins, indexation, conception de schémas, SQLite.
HTML5, CSS3, JavaScript, DOM manipulation, responsive design, frameworks CSS, interfaces utilisateur.
Flask, sessions, cookies, APIs REST, sécurité web, authentification, déploiement d'applications.
Développement d'un projet personnel intégrant les compétences acquises, présentation et documentation.
Semaine | Sujet | Exercices réalisés | Statut |
---|---|---|---|
Week 0 | Scratch | Projet Scratch (non inclus dans le repo) | ✅ Terminé |
Week 1 | Langage C | hello.c , mario.c , credit.c |
✅ Terminé |
Week 2 | Arrays | scrabble.c , readability.c , substitution.c |
✅ Terminé |
Week 3 | Algorithmes | sort/answers.txt , plurality.c , runoff.c |
✅ Terminé |
Week 4 | Mémoire | filter-less/helpers.c , recover/recover.c , volume/volume.c |
✅ Terminé |
Week 5 | Structures de données | inheritance/inheritance.c , speller/dictionary.c |
✅ Terminé |
Week 6 | Python | sentimental-hello/hello.py , sentimental-mario-more/mario.py , sentimental-credit/credit.py , sentimental-readability/readability.py , dna/dna.py |
✅ Terminé |
Week 7 | SQL | songs/ , movies/ , fiftyville/ |
✅ Terminé |
📝 Problem Set : https://cs50.harvard.edu/x/2025/psets/0/
Exercice | Description | Fichier | Difficulté |
---|---|---|---|
Scratch Project | Création d'un projet interactif avec Scratch (blocs visuels) | Non inclus dans le repo | ⭐ |
📝 Problem Set : https://cs50.harvard.edu/x/2025/psets/1/
Exercice | Description | Fichier | Difficulté |
---|---|---|---|
Hello | Programme interactif de salutation personnalisée | hello.c |
⭐ |
Mario | Génération de pyramides adjacentes avec validation d'entrée | mario.c |
⭐⭐ |
Credit | Validation de cartes de crédit avec algorithme de Luhn | credit.c |
⭐⭐⭐ |
📝 Problem Set : https://cs50.harvard.edu/x/2025/psets/2/
Exercice | Description | Fichier | Difficulté |
---|---|---|---|
Scrabble | Calcul des points d'un mot selon les règles du Scrabble | scrabble.c |
⭐ |
Readability | Calcul du niveau de lecture d'un texte avec l'index Coleman-Liau | readability.c |
⭐⭐ |
Substitution | Chiffrement par substitution avec validation complète de clé | substitution.c |
⭐⭐⭐ |
📝 Problem Set : https://cs50.harvard.edu/x/2025/psets/3/
Exercice | Description | Fichier | Difficulté |
---|---|---|---|
Sort | Analyse et identification d'algorithmes de tri par leurs performances | sort/answers.txt |
⭐ |
Plurality | Système de vote majoritaire simple avec structures de données | plurality.c |
⭐⭐ |
Runoff | Système de vote à tours multiples avec élimination progressive | runoff.c |
⭐⭐⭐ |
📝 Problem Set : https://cs50.harvard.edu/x/2025/psets/4/
Exercice | Description | Fichier | Difficulté |
---|---|---|---|
Volume | Modification du volume d'un fichier audio WAV avec manipulation binaire | volume/volume.c |
⭐⭐⭐ |
Filter-less | Application de filtres d'images (grayscale, sepia, reflect, blur) | filter-less/helpers.c |
⭐⭐⭐ |
Recover | Récupération de fichiers JPEG supprimés depuis une carte mémoire | recover/recover.c |
⭐⭐⭐ |
📝 Problem Set : https://cs50.harvard.edu/x/2025/psets/5/
Exercice | Description | Fichier | Difficulté |
---|---|---|---|
Inheritance | Simulation de l'hérédité génétique avec arbres familiaux et allocation mémoire | inheritance/inheritance.c |
⭐⭐⭐ |
Speller | Correcteur orthographique avec table de hachage optimisée | speller/dictionary.c |
⭐⭐⭐ |
📝 Problem Set : https://cs50.harvard.edu/x/2025/psets/6/
Exercice | Description | Fichier | Difficulté |
---|---|---|---|
Hello (Python) | Version Python du programme de salutation avec syntaxe simplifiée | sentimental-hello/hello.py |
⭐ |
Mario (Python) | Pyramides adjacentes en Python avec validation d'entrée et fonctions | sentimental-mario-more/mario.py |
⭐⭐ |
Credit (Python) | Validation de cartes de crédit en Python avec algorithme de Luhn | sentimental-credit/credit.py |
⭐⭐ |
Readability | Index de lisibilité Coleman-Liau en Python avec manipulation de chaînes | sentimental-readability/readability.py |
⭐⭐ |
DNA | Profilage génétique avec séquences STR et analyse de fichiers CSV | dna/dna.py |
⭐⭐⭐ |
📝 Problem Set : https://cs50.harvard.edu/x/2025/psets/7/
Exercice | Description | Fichier | Difficulté |
---|---|---|---|
Songs | Requêtes SQL sur une base de données Spotify (top songs, artists, etc.) | songs/ |
⭐⭐ |
Movies | Requêtes complexes sur une base de données IMDb (films, acteurs, ratings) | movies/ |
⭐⭐⭐ |
Fiftyville | Enquête de détective utilisant SQL pour résoudre un mystère | fiftyville/ |
⭐⭐⭐ |
- Cours CS50x 2025 - Site officiel
- edX Platform - Plateforme d'apprentissage
- CS50 IDE - Environnement de développement
- Documentation CS50 - Référence technique
- Programmation en C : Syntaxe, pointeurs, gestion mémoire
- Programmation en Python : Syntaxe haut niveau, gestion des types dynamiques, fonctions
- Manipulation d'arrays : Chaînes de caractères, arguments de ligne de commande
- Structures de données :
struct
, tableaux multidimensionnels, listes chaînées, tables de hachage - Cryptographie basique : Chiffrement par substitution
- Algorithmes de tri : Bubble sort, selection sort, merge sort
- Analyse de complexité : Notation Big O, temps d'exécution
- Optimisation : Détection de tri précoce, efficacité algorithmique, fonctions de hachage
- Systèmes de vote : Logique électorale, algorithmes de décision
- Pointeurs et mémoire : Allocation dynamique, heap/stack, structures récursives
- Manipulation de fichiers : Lecture/écriture CSV, parsing de données
- Traitement d'images : Formats BMP, manipulation de pixels, filtres graphiques
- Forensique numérique : Récupération de données, analyse de signatures de fichiers
- Listes chaînées : Insertion, suppression, traversée de listes dynamiques
- Tables de hachage : Fonctions de hachage, gestion des collisions, optimisation des performances
- Arbres de données : Structures hiérarchiques, récursivité, héritage génétique
- Gestion mémoire avancée : Libération récursive, prévention des fuites mémoire
- Transition C vers Python : Migration de code, adaptation des algorithmes
- Validation d'entrées : Vérification robuste des données utilisateur en Python
- Modularité Python : Fonctions spécialisées, importation de modules
- Parsing de données : Analyse de fichiers CSV, manipulation de chaînes avancée
- Profilage génétique : Algorithmes de correspondance, analyse STR
- Debugging Python : Gestion d'erreurs, optimisation de performance
- SQL fondamental : Requêtes SELECT, WHERE, ORDER BY, LIMIT
- Jointures : INNER JOIN, LEFT JOIN, relations entre tables
- Fonctions d'agrégation : COUNT, AVG, MIN, MAX, GROUP BY, HAVING
- Sous-requêtes : Requêtes imbriquées, EXISTS, IN
- Analyse de données : Filtrage complexe, tri multi-critères
- Conception de schémas : Relations tables, clés primaires/étrangères
- Optimisation : Index, performance des requêtes
Dernière mise à jour : Septembre 2025