Skip to content

Ce repo contient mes devoirs et programmes écrit durant mon cursus de Harvard CS50x. CS50's Introduction to Computer Science est le cours d'introduction à l'informatique de l'Université Harvard, proposé gratuitement en ligne via la plateforme edX.

Notifications You must be signed in to change notification settings

K-sel/harvard-cs50

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Harvard CS50x - Mon Parcours d'Apprentissage

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.

📚 Aperçu du programme

  • 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 🤖

🎯 Ma démarche

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

📋 Progression par semaine

🟢 Week 1 - Langage C ✅

🔧 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

🟢 Week 2 - Arrays (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

🟢 Week 3 - Algorithmie & Récursivité (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

🟢 Week 4 – Memory ✅

🔧 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

🟢 Week 5 – Structures de données ✅

🧠 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.

🟢 Week 6 – Python ✅

🐍 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

🟢 Week 7 – SQL ✅

🗄️ 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

🟢 Week 8 – Web Frontend (HTML, CSS, JS) ✅

🌐 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

🚀 Objectifs d'apprentissage

  • 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

About

Ce repo contient mes devoirs et programmes écrit durant mon cursus de Harvard CS50x. CS50's Introduction to Computer Science est le cours d'introduction à l'informatique de l'Université Harvard, proposé gratuitement en ligne via la plateforme edX.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published