CS50x est le cours d'introduction à l'informatique de Harvard, reconnu mondialement et suivi par plus d'un million d'étudiants. Proposé gratuitement via edX, il couvre les fondamentaux de la programmation et de l'informatique.
- Week 1: Langage C - Syntaxe, compilation, types
- Week 2: Arrays - Tableaux, chaînes, cryptographie
- Week 3: Algorithms - Tri, recherche, complexité
- Week 4: Memory - Pointeurs, allocation dynamique
- Week 5: Data Structures - Listes, arbres, hash tables
- Week 6: Python - Transition vers un langage haut niveau
- Week 7: SQL - Bases de données relationnelles
- Week 8: Web Frontend - HTML, CSS, JavaScript
- Week 9: Web Backend - Flask, sessions, cookies
- Week 10: Conclusion - Récapitulatif et projet final
- Special: AI Seminar - Intelligence Artificielle 🤖
Passionné par l'informatique, j'entreprends cette formation en parallèle de mes études pour :
- Renforcer mes bases en programmation et algorithmes
- Découvrir de nouveaux langages (C, Python)
- Préparer mon Master en Computer Science à la HES-SO
- Démontrer ma motivation et mon approche autodidacte
🔧 Concepts appris : Syntaxe C, compilation, types de données, fonctions, bibliothèques, debugging
📝 Devoirs réalisés :
Lien vers le Problem Set Week 1 (devoirs a rendre pour la semaine) : https://cs50.harvard.edu/x/2025/psets/1/
Exercice | Description | Énoncé | Mon code |
---|---|---|---|
Hello, It's Me | Programme interactif demandant le nom de l'utilisateur et saluant personnellement | Énoncé | hello.c |
Mario (more) | Création de pyramides adjacentes avec des #, gestion des espaces et validation des entrées utilisateur (hauteur 1-X) | Énoncé | mario.c |
Credit (more) | Validation de numéros de cartes de crédit utilisant l'algorithme de Luhn, identification du type de carte (AMEX, MASTERCARD, VISA) | Énoncé | credit.c |
🔧 Concepts appris : Tableaux, chaînes de caractères, manipulation de caractères, arguments de ligne de commande, cryptographie
📝 Devoirs réalisés :
Lien vers le Problem Set Week 2 (devoirs a rendre pour la semaine) : https://cs50.harvard.edu/x/2025/psets/2/
Exercice | Description | Énoncé | Mon code |
---|---|---|---|
Scrabble | Calcul des points Scrabble pour deux joueurs en fonction de la valeur des lettres, détermination du gagnant | Énoncé | scrabble.c |
Readability | Calcul de l'indice de lisibilité Coleman-Liau d'un texte basé sur le nombre de lettres, mots et phrases | Énoncé | readability.c |
Substitution (more) | Implémentation d'un chiffre de substitution avec validation de clé, préservation de la casse et des caractères non-alphabétiques | Énoncé | substitution.c |
💡 Concepts appris : Algorithmes de tri (bubble, selection, insertion, merge), recherche (linéaire et binaire), complexité algorithmique (Big O, Oméga (Ω) et Théta (Θ)) , efficacité des algorithmes, récursivité (introduction)
📝 Devoirs réalisés :
Lien vers le Problem Set Week 3 (devoirs a rendre pour la semaine) : https://cs50.harvard.edu/x/2025/psets/3/
Exercice | Description | Énoncé | Mon code |
---|---|---|---|
Sort (easy) | Analyse de trois programmes pour identifier les algorithmes de tri implémentés (bubble, selection, merge) via observation de leur comportement et complexité | Énoncé | sort |
Collatz | Calcul récursif du nombre de divisions nécéssaires d'un nombre pour arriver à 1. | Énoncé | collatz.c |
Plurality | Implémentation d’un vote majoritaire simple où le ou les candidats avec le plus de voix gagnent | Énoncé | plurality.c |
Runoff (more) | Simulation d’un scrutin à vote préférentiel (ranked-choice) avec éliminations successives jusqu’à obtenir une majorité absolue | Énoncé | runoff.c |
🔧 Concepts appris : Pointeurs, gestion de la mémoire dynamique (heap vs stack), manipulation de fichiers (fread
, fwrite
), formats BMP et JPEG.
📝 Devoirs réalisés : Lien vers le Problem Set Week 4 : https://cs50.harvard.edu/x/2025/psets/4/
Exercice | Description | Énoncé | Mon code |
---|---|---|---|
Filter (less) | Application de filtres simples (grayscale, noir et blanc, réflexion) sur des BMP | Énoncé (filter-less) | filter-less.c |
Recover | Récupération de fichiers JPEG à partir d’une image brute de carte mémoire | Énoncé | recover.c |
Volume | Modification du volume (agrandissement ou atténuation) d’un fichier audio WAV | Énoncé (volume) | volume.c |
🧠 Concepts appris : FIFO (Queue), LIFO (Stack), linked lists, binary trees, hash tables, tries, doubly linked lists, gestion des collisions, fonctions de hachage, gestion dynamique de la mémoire (malloc
, free
, realloc
), pointeurs, structures de données imbriquées, itération dans des structures de données complexes.
📝 Devoirs réalisés : Lien vers le Problem Set Week 5 : https://cs50.harvard.edu/x/2025/psets/5/
Exercice | Description | Énoncé | Mon code |
---|---|---|---|
Inheritance | Simulation de l’hérédité génétique du groupe sanguin via une structure d’arbre de données. | Énoncé | inheritance.c |
Speller | Implémentation d’un correcteur orthographique performant basé sur une table de hachage (Hash table) et des Linked lists. | Énoncé | dictionary.c |
PS : Pour runner speller, dézipper le fichier puis déplacer dictionary.c dans le folder fraichement dézippé. Ensuite runnez en suivant les instructions données dans l'énoncé de CS50.
🐍 Concepts appris : Introduction à Python, syntaxe plus simple que C, typage dynamique, listes, dictionnaires, boucles, fonctions, gestion de fichiers, parsing de CSV.
📝 Devoirs réalisés :
Lien vers le Problem Set Week 6 : https://cs50.harvard.edu/x/2025/psets/6/
Exercice | Description | Énoncé | Mon code |
---|---|---|---|
Hello | Première prise en main de Python : impression simple avec print() |
Énoncé | hello.py |
Mario | Reproduction de la pyramide de Mario avec boucles et chaînes en Python | Énoncé | mario.py |
Credit | Réécriture en Python de l’algorithme de Luhn pour valider les numéros de carte de crédit | Énoncé | credit.py |
Readability | Calcul de l’indice de lisibilité d’un texte avec l’algorithme de Coleman-Liau | Énoncé | readability.py |
DNA | Analyse d'une séquence ADN pour identifier un individu en fonction du nombre de STR. Première expérience de parsing de CSV et prise en main de fonction itératives | Énoncé | dna.py |
🗄️ Concepts appris : Bases de données relationnelles, SQL (SELECT, WHERE, ORDER BY), agrégations (COUNT, AVG, SUM), GROUP BY / HAVING, jointures (JOIN), clés primaires/étrangères, vues et normalisation.
📝 Devoirs réalisés :
Lien vers le Problem Set Week 7 : https://cs50.harvard.edu/x/2025/psets/7/
Exercice | Description | Énoncé | Mon code |
---|---|---|---|
Songs | Requêtes SQL pour analyser une base de chansons (artistes, genres, attributs audio, classements). | Énoncé | songs |
Movies | Écriture de requêtes SQL pour analyser une base de films, acteurs et réalisateurs. | Énoncé | movies |
Fiftyville | Enquête criminelle via SQL : croiser plusieurs tables pour identifier le coupable. | Énoncé | log.sql |
🌐 Concepts appris : Structure HTML5, balises et sémantique, stylisation avec CSS (sélecteurs, classes, IDs, responsive design), interactivité avec JavaScript (DOM, événements, manipulation de contenu), intégration de Bootstrap pour créer rapidement des interfaces modernes et adaptatives.
📝 Devoirs réalisés :
Lien vers le Problem Set Week 8 : https://cs50.harvard.edu/x/2025/psets/8/
Exercice | Description | Énoncé | Mon code |
---|---|---|---|
Trivia | Création d’une page web interactive avec questions de quiz (choix multiples et réponses libres) utilisant HTML, CSS et JavaScript | Énoncé | trivia |
Homepage | Développement d’un mini-site personnel multi-pages, responsive et stylisé avec Bootstrap et CSS personnalisé | Énoncé | homepage |
- Maîtriser les concepts fondamentaux de l'informatique
- Développer une pensée algorithmique rigoureuse
- Acquérir des compétences pratiques en développement
- Constituer un portfolio de projets concrets