Lectures et publications de référence#
Cette page rassemble les livres, articles et publications importants qui sont mentionnés à travers l’ensemble du cours. Chaque entrée pointe vers la ou les sections où elle est discutée.
(Cette page sera enrichie au fur et à mesure que de nouvelles références seront intégrées dans le cours.)
Livres#
- Fred Brooks, The Mythical Man-Month (1975) : réflexions sur la gestion de grands projets logiciels, dont la célèbre « loi de Brooks » → Module 1, Perspective historique
- Andrew Hunt et David Thomas, The Pragmatic Programmer (1999) : conseils pratiques pour le développeur, origine du principe DRY → Module 3, Architecture et modularité
- Kent Beck, Extreme Programming Explained (1999) : manifeste de l’XP, origine de YAGNI et du TDD → Module 1, Perspective historique
- Robert C. Martin, Clean Code (2008) : principes de conception et SOLID → Module 3, Architecture et modularité
- Mike Cohn, Succeeding with Agile (2009) : la pyramide des tests → Module 2, Les tests
- Gang of Four (Gamma, Helm, Johnson, Vlissides), Design Patterns (1994) : catalogue fondateur des patrons de conception → Module 1, Perspective historique, Module 3, Architecture et modularité
- Martin Kleppmann, Designing Data-Intensive Applications (2017) : référence moderne sur les systèmes de données → Module 3, Les données
Articles et essais#
- Edgar F. Codd, A Relational Model of Data for Large Shared Data Banks (1970) : article fondateur du modèle relationnel → Module 1, Perspective historique, Module 3, Les données (stockage)
- David Parnas, On the Criteria To Be Used in Decomposing Systems into Modules (1972) : introduction de l’information hiding → Module 3, Architecture et modularité
- Peter Naur, Programming as Theory Building (1985) : programmer comme construction d’un modèle mental → Module 2, Introduction
- Fred Brooks, No Silver Bullet (1986) : complexité essentielle vs accidentelle → Module 3, Introduction
- Melvin Conway, How Do Committees Invent? (1968) : la structure d’un système reflète celle de l’organisation qui le produit (loi de Conway) → Module 3, Architecture et modularité
- Edsger Dijkstra, Go To Statement Considered Harmful (1968) : plaidoyer pour la programmation structurée → Module 1, Perspective historique
- Martin Fowler, Continuous Integration (2006) : article de référence sur l’intégration continue → Module 2, L’intégration continue
- Roy Fielding, Architectural Styles and the Design of Network-based Software Architectures (thèse de doctorat, 2000) : définition de REST → Module 3, Les APIs
- Roy Fielding, REST APIs must be hypertext-driven (billet de blog, 2008) : critique des APIs « REST » qui n’implémentent pas HATEOAS → Module 3, Les APIs
- Peter Deutsch et al., Fallacies of Distributed Computing (1994) : huit hypothèses fausses sur les systèmes distribués → Module 3, Les APIs
- Leonard Richardson, Richardson Maturity Model : classification des APIs REST en quatre niveaux de maturité → Module 3, Les APIs
- Jim Gray, contributions aux transactions et bases de données (prix Turing 1998) : formalisation des propriétés ACID → Module 3, Les données (stockage)
- Gerard Salton, A Theory of Indexing (1975) et le système SMART : père de l’information retrieval, concepts fondateurs de TF-IDF et de l’index inversé → Module 3, Les données (au-delà des BD)
- Google, Bigtable: A Distributed Storage System for Structured Data (2006) : article fondateur du stockage orienté colonnes à grande échelle → Module 3, Les données (stockage)
- Tomas Mikolov et al., Efficient Estimation of Word Representations in Vector Space (2013) : introduction de Word2Vec et des embeddings de mots → Module 3, Les données (stockage)
- Marc Shapiro, Nuno Preguiça, Carlos Baquero et Marek Zawirski, Conflict-free Replicated Data Types (2011) : formalisation des CRDTs → Module 3, Les données (au-delà des BD)
- Satoshi Nakamoto, Bitcoin: A Peer-to-Peer Electronic Cash System (2008) : livre blanc introduisant la blockchain et le consensus distribué → Module 3, Les données (au-delà des BD)