This is an Awesome repository that collects free programming books officially made available by their authors or publishers. You can access them legally without violating copyright laws.
π This repository is available in multiple languages:
- πͺπΈ VersiΓ³n en EspaΓ±ol
- π¬π§ English Version (You are here)
-
- Data Structures and Algorithms
- π Data Science and Machine Learning
- Data Analysis
- Machine Learning
- Statistics
- Big Data
- Web Development (Frontend & Backend)
- Security and Ethical Hacking
- Databases and SQL
- Operating Systems and Networks
- 100% Free and legal content
- Verified high-quality resources
- Regularly updated
- Organized by technology and skill level
- Multi-language support
-
Eloquent JavaScript - Marijn Haverbeke
Learn JavaScript from fundamentals to advanced concepts, with interactive exercises. -
You Don't Know JS - Kyle Simpson
A series of books that explore JavaScript in depth. -
JavaScript for Cats - Max Ogden
A beginner-friendly introduction to JavaScript. -
JavaScript: The Good Parts - Douglas Crockford
An essential book that explores JavaScript best practices. -
Learning JavaScript Design Patterns - Addy Osmani
Clear explanations of design patterns in JavaScript. -
Functional-Light JavaScript - Kyle Simpson
Introduction to functional programming in JavaScript. -
JavaScript AllongΓ© - Reginald Braithwaite
A deep dive into JavaScript and its advanced features. -
Speaking JavaScript - Axel Rauschmayer
A book that teaches JavaScript to programmers from other languages. -
Programming JavaScript Applications - Eric Elliott
Scalable JavaScript applications. -
JavaScript Succinctly - Cody Lindley
A quick and clear introduction to JavaScript. -
Exploring ES6 - Axel Rauschmayer
A detailed explanation of ECMAScript 6. -
Understanding ECMAScript 6 - Nicholas C. Zakas
Key ES6 concepts explained simply. -
JavaScript 30 - Wes Bos
30 practical projects to improve JavaScript skills. -
Node.js Design Patterns - Mario Casciaro
Learn design patterns in Node.js.
-
Automate the Boring Stuff with Python - Al Sweigart
Learn to automate tasks with Python practically. -
Think Python - Allen B. Downey
An excellent book for learning Python from scratch. -
Python Crash Course (Free Sample) - Eric Matthes
A beginner-friendly introduction to Python with hands-on projects. -
Dive into Python 3 - Mark Pilgrim
Advanced Python 3 learning. -
Fluent Python - Luciano Ramalho
Deep dive into Python. -
Learn Python the Hard Way - Zed Shaw
A hands-on approach to learning Python.
-
[The C Programming Language (2nd Edition) - Kernighan & Ritchie (Not free officially)]
π This book is not free, but you can find alternatives like: -
Modern C - Jens Gustedt
-
C Programming for Beginners - R. Agapiev
-
Thinking in C++ - Bruce Eckel
A classic book on C++. -
C++ Primer - Stanley B. Lippman
A comprehensive reference on C++. -
C++ Concurrency in Action - Anthony Williams
A book on concurrency and parallelism in C++.
-
Think Java - Allen B. Downey and Chris Mayfield
A beginner-friendly introduction to Java. -
Java: The Legend - Ben Evans
History and evolution of Java. -
Effective Java - Joshua Bloch
Best practices for writing Java code. -
Java Concurrency in Practice - Brian Goetz
Advanced concepts on concurrency in Java.
- Frontend Development
- Backend Development
- Full Stack
- APIs & Microservices
-
Foundations of Data Science - Avrim Blum, John Hopcroft, Ravindran Kannan
Introduction to the mathematical and algorithmic foundations of data science. -
Data Science at the Command Line - Jeroen Janssens
How to perform data analysis using command-line tools. -
Python Data Science Handbook - Jake VanderPlas
A practical guide for data analysis in Python using NumPy, Pandas, Matplotlib, and Scikit-Learn. -
Data Science for Business - Foster Provost, Tom Fawcett
Explanation of how to use data science for business decision-making.
-
Pattern Recognition and Machine Learning - Christopher M. Bishop
A theoretical and practical introduction to machine learning models. -
The Elements of Statistical Learning - Trevor Hastie, Robert Tibshirani, Jerome Friedman
A reference book on statistical learning with applications in machine learning. -
Deep Learning - Ian Goodfellow, Yoshua Bengio, Aaron Courville
A comprehensive book on deep learning, written by leaders in the field. -
Understanding Machine Learning: From Theory to Algorithms - Shai Shalev-Shwartz, Shai Ben-David
A mathematical introduction to machine learning and its algorithms.
-
Think Stats - Allen B. Downey
Introduction to statistical analysis with Python. -
Think Bayes - Allen B. Downey
Learn Bayesian probability with Python examples. -
Introduction to Data Science - Rafael A. Irizarry
A clear and practical explanation of fundamental data science concepts. -
Data Wrangling with Python - Jacqueline Kazil, Katharine Jarmul
A guide to data cleaning and transformation with Python.
-
OpenIntro Statistics - David M. Diez, Mine Γetinkaya-Rundel, Christopher D. Barr
A complete introduction to statistics with practical applications. -
Statistical Learning with Sparsity - Trevor Hastie, Robert Tibshirani, Martin Wainwright
Modern methods of statistical learning. -
An Introduction to Statistical Learning - Gareth James, Daniela Witten, Trevor Hastie, Robert Tibshirani
An intuitive explanation of machine learning models using statistics. -
Mathematical Statistics - Jun Shao
A rigorous explanation of statistical and probability concepts.
-
Big Data: Principles and Best Practices - Nathan Marz, James Warren
Introduction to Big Data architecture and large-scale data processing. -
Mining of Massive Datasets - Jure Leskovec, Anand Rajaraman, Jeffrey Ullman
A classic book on techniques for handling large volumes of data. -
Introduction to Hadoop and Spark - Magda Balazinska
Explanation of how to use Hadoop and Spark for data processing. -
Fundamentals of Data Engineering - Joe Reis, Matt Housley
A reference guide on modern data engineering and its impact on Big Data.
- Cloud Computing
- Containers
- CI/CD
- Infrastructure as Code
- The CS50x Course Materials - Harvard University's introductory computer science course, free and open to all.
- How to Think Like a Computer Scientist - Allen B. Downey - A fundamental introduction to computational thinking and Python.
- Structure and Interpretation of Computer Programs - Harold Abelson & Gerald Jay Sussman - A foundational book for understanding programming paradigms.
- Computer Science from the Bottom Up - Ian Wienand - A free book covering foundational computer science topics from low-level programming to high-level concepts.
- Algorithms, Part I & II (Princeton University) - Robert Sedgewick & Kevin Wayne - Free online courses covering essential algorithmic techniques.
- The Algorithm Design Manual - Steven Skiena - Covers both theoretical and practical aspects of algorithms.
- A Common-Sense Guide to Data Structures and Algorithms - Jay Wengrow - A beginner-friendly book on algorithms and data structures.
- Open Data Structures - Pat Morin - A free and comprehensive introduction to data structures.
- Think Data Structures - Allen B. Downey - A beginner's guide to fundamental data structures using Java.
- Problem Solving with Algorithms and Data Structures - Brad Miller & David Ranum - A free interactive book covering Python-based data structures and algorithms.
- Data Structures and Algorithm Analysis in Java - Clifford A. Shaffer - A detailed introduction to data structures with Java.
-
Design Patterns Explained - Alan Shalloway & James R. Trott
A clear and accessible explanation of design patterns with examples in different programming languages. -
Game Programming Patterns - Robert Nystrom
A free book that explains design patterns applied to game development. -
Refactoring Guru: Design Patterns - Alexander Shvets
Detailed explanations of the most commonly used design patterns in software development.
-
Test-Driven Development by Example - Kent Beck
A practical introduction to test-driven development. -
Growing Object-Oriented Software, Guided by Tests - Steve Freeman & Nat Pryce
Demonstrates how to build object-oriented software using automated tests. -
The Little Book of Testing - Johannes Link
A pragmatic approach to testing techniques and strategies in software development.
-
Computer Systems: A Programmerβs Perspective - Randal E. Bryant & David R. OβHallaron
Explores how hardware and systems impact software performance. -
Performance Analysis and Tuning on Modern CPUs - Agner Fog
Explains code optimization for modern CPU architectures. -
Efficient Python Programming - Maciej GΔbala
Advanced strategies for optimizing Python performance.
-
Software Architecture Patterns - Mark Richards
Introduction to the most common software architecture patterns. -
Clean Architecture - Robert C. Martin
Software architecture principles based on best practices. -
The Architecture of Open Source Applications - Various Authors
Explores open-source software architectures with real-world case studies.
-
Distributed Systems: Principles and Paradigms - Andrew S. Tanenbaum & Maarten Van Steen
Explains the fundamentals of distributed systems and architectures. -
Designing Data-Intensive Applications - Martin Kleppmann
Covers patterns and architectures for scalable databases and systems. -
Googleβs Site Reliability Engineering - Google SRE Team
Explains Google's practices for managing distributed infrastructure.
-
The Web Application Hacker's Handbook - Dafydd Stuttard & Marcus Pinto
A comprehensive guide to web application security. -
Crypto 101 - Laurens Van Houtven
A practical introduction to modern cryptography. -
Security Engineering - Ross Anderson
Explains security engineering principles applied to various systems.
Contributions are welcome! Please read our contribution guidelines before submitting your pull request.
- Fork the repository
- Create a new branch (
git checkout -b feature/new-category
) - Make your changes
- Commit your changes (
git commit -am 'Add new category'
) - Push to the branch (
git push origin feature/new-category
) - Open a Pull Request
To the extent possible under law, contributors have waived all copyright and related or neighboring rights to this work.
Thanks to all our wonderful contributors who make this project possible!
Made with contrib.rocks.
holasoymalva Project Creator |
Thanks to all authors who freely share their knowledge and to the community for their valuable contributions.
βοΈ If you like this project, don't forget to give it a star!