Bienvenue sur ce guide, conçu pour vous accompagner dans l'acquisition des connaissances fondamentales et des bonnes pratiques du développement informatique. Que vous soyez scientifique, ingénieur ou chercheur, si votre travail implique une dimension numérique significative – modélisation, simulation, analyse de données, data science, automatisation, déploiement de solutions, etc. – ce guide est fait pour vous.
La science moderne s'appuie de plus en plus sur des outils numériques. Que ce soit pour traiter de vastes ensembles de données, simuler des phénomènes complexes ou automatiser des tâches répétitives, la maîtrise des compétences en développement informatique est devenue indispensable.
Ce guide a pour but de vous fournir les bases nécessaires pour :
- Écrire du code de qualité : clair, maintenable et facile à partager.
- Utiliser les outils essentiels : Git, GitHub, environnements de développement, etc.
- Comprendre les concepts clés : architecture logicielle, tests, différents styles de programmation.
- Aborder des techniques spécifiques : calcul scientifique, résolution d'équations, etc.
Que vous soyez débutant ou que vous cherchiez à renforcer vos compétences, ce guide vous accompagnera dans votre parcours pour devenir un développeur scientifique autonome et efficace.
| Section | Statut | Dernière MàJ | Niveau recommandé |
|---|---|---|---|
| 1 - Git Basics | ✅ Complet | 2025-01 | Débutant |
| 2 - Collaboration | 🚧 En révision | - | Avancé |
| 3A - Survival Kit | ✅ Complet | 2025-01 | Débutant |
| 3B - Code propre | 🟡 Partiel | 2024-12 | Intermédiaire |
| 3C - Collab avancée | 🟡 Partiel | 2024-12 | Avancé |
| 4 - Tests | 🚧 En révision | - | Intermédiaire |
| 5 - Scientific (2 exemples) | ✅ Complet | 2025-01 | Tous niveaux |
| 5 - Scientific (complet) | 🚧 En cours | - | - |
| 6 - Lexique CS | 📝 Planifié | - | Tous niveaux |
Légende : ✅ Utilisable en prod | 🟡 Utilisable mais incomplet | 🚧 En travaux | 📝 Pas commencé
Note: Les dates « Dernière MàJ » pour les lignes marquées ✅ sont mises à jour automatiquement lors des pushes sur la branche par défaut via GitHub Actions.
Pour vous guider dans votre progression, nous avons conçu des parcours d'apprentissage structurés avec trois niveaux de compétences :
- 🌱 Niveau 1 - Débutant (0-6 mois) : Git + Survival Kit + Premier projet collaboratif
- 🚀 Niveau 2 - Autonome (6-12 mois) : Code propre + Tests + Méthodes numériques
- 🎯 Niveau 3 - Expert (12+ mois) : Collaboration avancée + Gestion projet + Culture CS
Chaque niveau propose des durées estimées, des critères de validation mesurables et des projets concrets pour valider vos acquis.
➡️ Découvrir les parcours d'apprentissage
| Sujet | Description |
|---|---|
| Git Basics | Introduction aux bases de Git. |
| Local & Remote Repositories | Gestion des dépôts locaux et distants. |
| Getting Started with GitHub | Premiers pas avec GitHub. |
| Branching Strategy | Stratégies de branchement pour une gestion efficace du code. |
| 🎯 Exercice Fil Rouge | Exercice pratique complet : votre première contribution open source ! |
| 📝 Quiz d'Auto-Évaluation | Testez vos connaissances avec 15 questions (30% théorie, 70% pratique) |
| Sujet | Description |
|---|---|
| Collaboration Procedure | Introduction aux procédures de collaboration. |
| Project Management | Ressources en ligne et conseils pour la gestion de projet. |
| • Classic Project Management | Gestion de projet classique : initialiser, lancer et exploiter un projet. |
(Détails supplémentaires dans le dossier A-Classic_Project_Management/) |
|
| • Agile Project Management | Gestion de projet Agile, incluant le modèle d'équipe de Tuckman et les outils visuels. |
(Consultez le dossier B-Agile_Project_Management/ pour des exemples concrets) |
|
| • Data Science Project Guide | Guide dédié à la gestion de projets en Data Science. |
| Project Management Resources | Ressources graphiques (images, schémas) associées à la gestion de projet. |
| Parcours / Module | Description |
|---|---|
| Index des Parcours | Vue d'ensemble des trois parcours progressifs. |
| 🥉 Parcours A - Survival Kit | Bases minimales professionnelles (env, README, structure minimale). |
| • Environnement Python - Basics | Créer et gérer un environnement léger. |
| • README minimal | Structurer un README efficace rapidement. |
| • Structure dépôt minimale | Organisation initiale simple. |
| 🥈 Parcours B - Coder Proprement | Lisibilité, architecture et qualité du code. |
| • PEP8 / Beautiful Code | Conventions de style et formatters. |
| • Architecture | Structurer le logiciel avant de coder. |
| • Styles de Programmation | Paradigmes et choix contextuels. |
| • VSCode | Configuration productive VSCode. |
| • PyCharm | Utilisation de PyCharm. |
| 🥇 Parcours C - Collaborer à l'Échelle | Standardisation, doc avancée, collaboration. |
| • Documentation Scientifique | Structurer une doc de recherche. |
| • Documentation Technique | Docstrings & génération automatique. |
| • README vs Wiki | Choisir l'outil adapté. |
| • Structure dépôt complète | Organisation modulaire avancée. |
| • Workflows Git Avancés | Branching & collaboration avancée. |
| Sujet | Description |
|---|---|
| Test & Validation | Importance des tests dans le développement logiciel. |
| Tests Unitaires | Mise en place et exécution des tests unitaires. |
| Tests d'Intégration | Stratégies de test pour l'intégration des composants. |
| Tests Fonctionnels | Validation des fonctionnalités via des tests fonctionnels. |
| Sujet | Description |
|---|---|
| Calcul Scientifique & Méthodes Numériques | Techniques pour la résolution d'équations et la modélisation numérique. |
| • Résolution d'un système d'équations différentielles ordinaires • Introduction aux algorithmes de résolution des systèmes d'équations différentielles ordinaires |
Algorithmes et Méthodes pour résoudre les équations différentielles ordinaires. |
| • Bilan de Population (PBE) | Approches (méthode des moments, discrétisation, etc.) pour résoudre des bilans de population. |
| • Résolution d'un système d'équations algébro-différentielles | Techniques de résolution pour les systèmes DAE. |
| • Résolution d'un système d'équations aux dérivées partielles | Méthodes pour résoudre des EDP complexes. |
| Sujet | Description |
|---|---|
| Fundamentals -En construction | Concepts fondamentaux en algorithmique et structures de données. |
| • Algorithm Complexity | Introduction à la complexité algorithmique. |
| • Data Structures & Algorithms | Principes des structures de données et algorithmes. |
| Programming Languages -En construction | Présentation de plusieurs langages (R, Python, C/C++/C#, JavaScript, Matlab, Rust/Go). |
| Database Management -En construction | Concepts et pratiques avancées en SQL et gestion de données. |
| Big Data -En construction | Introduction aux concepts de Hadoop, Spark, MapReduce et au streaming. |
| Machine Learning -En construction | Bases et techniques du machine learning et du deep learning. |
| DevOps -En construction | Principes de CI/CD, containerisation et infrastructure as code. |
| Cybersecurity -En construction | Bonnes pratiques et stratégies de sécurité pour les applications web. |
| Cloud Computing -En construction | Concepts d'API REST, services cloud et architectures microservices. |
| Computer Science Overview -En construction | Synthèse des notions clés en informatique. |
- Section 1 : Git Basics - Complète avec exercices et quiz
- Section 2 : Collaboration - Gestion de projet classique et Agile
- Section 3 : Best Practices - 3 parcours progressifs (A, B, C)
- Section 4 : Tests - Unitaires, intégration, fonctionnels
- Section 5 : Calcul scientifique - ODE, DAE, PDE, PBE
- Templates : README, .gitignore, requirements, PR checklist
| Fichier | Description | Priorité |
|---|---|---|
6-computer_science/5-machine_learning/introduction.md |
Concepts ML, types d'apprentissage | ⭐⭐⭐ |
6-computer_science/5-machine_learning/supervised_classification.md |
Scikit-learn, métriques, validation | ⭐⭐⭐ |
6-computer_science/5-machine_learning/supervised_regression.md |
Régression, feature engineering | ⭐⭐⭐ |
6-computer_science/5-machine_learning/unsupervised.md |
Clustering, PCA, réduction dimensionnalité | ⭐⭐ |
6-computer_science/5-machine_learning/time_series.md |
ARIMA, Prophet, forecasting | ⭐⭐ |
6-computer_science/5-machine_learning/deeplearning_framework.md |
PyTorch/TensorFlow basics | ⭐⭐ |
6-computer_science/2-programming_languages/advanced_python.md |
Decorators, generators, async/await | ⭐⭐⭐ |
6-computer_science/2-programming_languages/c_cpp_csharp.md |
Pointeurs, mémoire, interop Python | ⭐⭐ |
6-computer_science/2-programming_languages/matlab.md |
Bases MATLAB pour scientifiques | ⭐⭐ |
| Fichier | Description | Priorité |
|---|---|---|
6-computer_science/6-devops/ci_cd.md |
GitHub Actions, Jenkins, pipelines | ⭐⭐⭐ |
6-computer_science/6-devops/contener.md |
Docker, Kubernetes basics | ⭐⭐⭐ |
6-computer_science/6-devops/infrastructure_as_code.md |
Terraform, Ansible | ⭐⭐ |
6-computer_science/8-cloud_computing/intro_to_cloud_services.md |
AWS/Azure/GCP overview | ⭐⭐ |
6-computer_science/8-cloud_computing/microservices_scalable_architectures.md |
Architecture microservices | ⭐⭐ |
| Fichier | Description | Priorité |
|---|---|---|
6-computer_science/4-big_data/hadoop_spark.md |
Écosystème Hadoop, Spark basics | ⭐⭐ |
6-computer_science/4-big_data/mapreduce_concept.md |
Paradigme MapReduce | ⭐⭐ |
6-computer_science/4-big_data/streaming.md |
Kafka, traitement temps réel | ⭐ |
6-computer_science/7-cybersecurity/security_principles.md |
Principes fondamentaux sécurité | ⭐⭐ |
6-computer_science/7-cybersecurity/webapp_security.md |
OWASP, sécurité web | ⭐⭐ |
6-computer_science/7-cybersecurity/best_practice.md |
Bonnes pratiques développeur | ⭐ |
| Fichier | Description | Priorité |
|---|---|---|
6-computer_science/1-fundamentals/data_structure_and_algorithm.md |
Structures avancées, graphes | ⭐ |
6-computer_science/3-database_management/datalake_datawharehouse.md |
Data lakes vs warehouses | ⭐ |
6-computer_science/3-database_management/optimized_request.md |
Optimisation SQL avancée | ⭐ |
6-computer_science/2-programming_languages/R.md |
R pour statistiques | ⭐ |
6-computer_science/2-programming_languages/javascript.md |
JS pour visualisation | ⭐ |
6-computer_science/2-programming_languages/rust_go.md |
Langages systèmes modernes | ⭐ |
Vous souhaitez aider à compléter ce guide ?
- Consultez la roadmap ci-dessus et choisissez un fichier à compléter
- Créez une branche
feature/nom-du-fichier - Utilisez les templates existants comme référence (templates/)
- Soumettez une PR avec le checklist PR
Les contributions sont les bienvenues, même partielles ! Un fichier avec 50% du contenu est mieux qu'un fichier vide.
- 📦 Templates Prêts à l'Emploi : Consultez le dossier templates/ pour des modèles réutilisables (README, .gitignore, requirements.txt, PR checklist)
- LICENSE : Consultez le fichier LICENSE pour les détails sur les droits d'utilisation.
Nous vous souhaitons une bonne lecture et une excellente progression dans l'apprentissage des pratiques du développement scientifique !