A free-first, beginner-friendly guide to learning programming, computer science, AI, and the practical tools developers use every day.
This is for people who want a real way in: career switchers, curious beginners, parents learning with kids, teachers, and anyone who has looked at programming and thought, "I have no idea where to start."
The goal is not to collect every link. The goal is to make the next step feel possible.
If you are new or overwhelmed, start with START_HERE.md. This README is the bigger map; the start-here guide is the gentler first route.
Last major research pass: May 2026
- Start Here First
- Free-First Philosophy
- Cost Legend
- Start Here
- If You Have No Technical Background
- Choose a Path
- Career Switcher Path
- University OpenCourseWare
- Complete Free Curricula
- Video and YouTube
- Books and Textbooks
- Programming Languages
- Web Development
- Python and Automation
- Computer Science Foundations
- AI and Machine Learning
- Data and Databases
- Developer Tools
- Practice and Projects
- Career and Community
- Kids, Teens, and Classrooms
- How to Study
- Resource Criteria
- Contributing
If you have no technical background, are switching careers, or just want one clear first step, read START_HERE.md before this full guide.
The rest of this README is a reference map. You do not need to read it in order, and you definitely do not need to learn everything listed here.
Most resources here are free to read, watch, or audit. Some platforms charge for certificates, grading, cloud compute, or extra practice, but the core learning material should be usable without paying.
This guide prefers:
- official university course materials
- open source curricula
- public documentation
- free educational videos and YouTube playlists
- project-based learning
- active communities
- resources that teach durable fundamentals
This repository is not a place to advertise paid courses, bootcamps, coaching, newsletters, communities, apps, or subscription products. Course and tutorial submissions should be free, or free to audit in a way that lets learners use the core material without paying.
Books are the main exception: highly regarded books that must be purchased are fine when they are clearly labeled as Library/Paid and linked to an official author or publisher page. Affiliate links, referral links, coupon campaigns, and promotional submissions from people selling the resource do not belong here.
YouTube is welcome when the videos are genuinely educational and free to watch. Normal platform ads or occasional sponsorships do not automatically disqualify a channel, but the resource should not exist mainly to push learners into a paid course, bootcamp, private community, or subscription.
It avoids:
- link dumps with no guidance
- promotional submissions for paid products
- affiliate, referral, or tracking links
- YouTube channels that are mostly marketing funnels
- resources that are mostly paywalled
- narrow framework hype without fundamentals
- abandoned tutorials that no longer run
- resources that encourage copying instead of understanding
| Label | Meaning |
|---|---|
| Free | Core material is available without payment. |
| Free audit | You can learn for free, but certificates or graded options may cost money. |
| Free materials | Course pages, notes, videos, or assignments are public, but support/grading may not be. |
| Mixed | Useful free material exists, but the platform also has paid tiers. |
| Compute may cost | The course is free, but serious cloud/GPU usage can cost money unless you use free tiers carefully. |
| Library/Paid | Worth borrowing or buying, but not freely available from the publisher. |
If you are completely new, you do not need to understand this whole guide today. Start with one gentle resource, make a few small things, and come back when you have a better sense of what you enjoy.
The shortest possible recommendation:
- If you want the gentlest start, use Scratch for a weekend.
- If you want a practical adult beginner path, start Python Programming MOOC or Python for Everybody.
- If you want websites, start MDN Learn Web Development.
- After two weeks, build something tiny without following a tutorial exactly.
Do not start by comparing every language, bootcamp, framework, and job title. That way lies fog.
AI is part of learning to code now. It can explain errors, give hints, translate docs into plainer language, and help you see another way to solve a problem. Use it.
But do not let it take the steering wheel too early. The point of learning to code is not to produce code-shaped text. The point is to understand a problem, try an idea, watch it fail, debug it, and slowly build your own judgment.
A good rule: ask AI for hints, explanations, and review before you ask it for a complete answer. If you use generated code, make sure you can explain it, test it, and change it yourself.
Start here if terms like terminal, Git, API, framework, database, or algorithm still feel mysterious.
Your first goal is not to "become a software engineer." Your first goal is to learn what code feels like: giving a computer precise instructions, seeing where they fail, and changing them until they work.
| Day | Do this | Why |
|---|---|---|
| 1 | Make or remix one project in Scratch | Learn sequencing, loops, conditions, and events without syntax getting in the way |
| 2 | Read a visual intro like Hello Ruby or a few chapters of Secret Coders | Make the ideas feel less abstract |
| 3 | Start Python Programming MOOC or Python for Everybody | Move from blocks and stories to typed code |
| 4 | Type every example yourself | Your hands need practice, not just your eyes |
| 5 | Break a small program on purpose and fix it | Debugging is normal, not a sign you are bad at this |
| 6 | Make a tiny project: calculator, quiz, or guessing game | Build confidence with something complete |
| 7 | Write down what confused you and what finally clicked | This becomes your personal map |
- Most gentle: Scratch + Hello Ruby + Khan Academy Computer Programming.
- Most practical: Python Programming MOOC + Automate the Boring Stuff.
- Most career-aligned for web jobs: MDN Learn + freeCodeCamp + The Odin Project.
Children's books, visual books, and classroom resources are fair game for adult learners. If a book makes loops, variables, logic, or debugging feel less scary, it is doing useful work.
Recommended first paths:
| Goal | Start with | Then try |
|---|---|---|
| Learn programming from zero | Python Programming MOOC or Python for Everybody | Exercism Python |
| Build websites | MDN Learn Web Development | The Odin Project |
| Build full stack apps | The Odin Project | Full Stack Open |
| Automate work | Automate the Boring Stuff with Python | Python for Everybody |
| Study CS deeply | OSSU Computer Science | Teach Yourself Computer Science |
| Learn AI literacy | Elements of AI | Google Machine Learning Crash Course |
| Learn AI engineering | CS50 AI | Hugging Face LLM Course |
| Learn with kids | Scratch | Khan Academy Computer Programming |
Good if you have never programmed before.
- CS50x - broad, energetic introduction to computer science. Free audit
- Python Programming MOOC - University of Helsinki's current Python-first introductory programming course. Free
- Exercism - practice exercises with community feedback. Free
- Build three small projects: a calculator, a todo list, and a file cleanup script.
Good if you want visual feedback and portfolio projects.
- MDN Learn Web Development
- freeCodeCamp
- The Odin Project
- Full Stack Open after you know basic JavaScript
Build: landing page, form, browser game, API app, full stack CRUD app, deployed portfolio.
Good if you want scripts, dashboards, data cleanup, or practical office automation.
- Python for Everybody
- Automate the Boring Stuff with Python
- SQLBolt
- Kaggle Learn
- Data 8 for a university-style data science course
Build: file renamer, CSV cleaner, spreadsheet report generator, API client, data dashboard.
Good if you want a self-directed alternative to parts of a CS degree.
- OSSU Computer Science
- Teach Yourself Computer Science
- MIT OpenCourseWare
- Stanford Engineering Everywhere
- CS DIY Wiki for a broad course map and project references
Expect this path to take years, not weeks. That is normal.
Good if you can already write basic Python and want to understand modern AI without skipping the programming foundation.
- Elements of AI for AI literacy
- Google Machine Learning Crash Course
- CS50 AI
- Microsoft AI for Beginners
- Hugging Face LLM Course
- fast.ai Practical Deep Learning for Coders
Build: classifier, recommender, document search app, evaluation set, small local model demo, AI feature with logging and fallback behavior.
Career switchers need two things at once: a gentle on-ramp and evidence that they can build real things. You do not need to learn everything in this guide. You need a sequence that turns confusion into finished projects.
Use these to understand the shape of the field before committing to a specialty:
- Scratch or Hello Ruby for a low-pressure first taste.
- CS50x if you want a broad, motivating survey.
- Python Programming MOOC if you want a steadier first programming course.
- The Missing Semester once command-line tools stop feeling completely alien.
Choose one track for 8-12 weeks:
| Track | Learn | Build |
|---|---|---|
| Web developer | HTML, CSS, JavaScript, Git, APIs | personal site, form app, API app, full stack CRUD app |
| Python automation | Python, files, APIs, CSV/Excel, SQL | file organizer, report generator, API client, dashboard |
| Data analyst | SQL, spreadsheets, Python, statistics | cleaned dataset, SQL analysis, notebook, dashboard |
| AI app builder | Python, APIs, prompts, embeddings, evaluation | chatbot, document search, classifier, evaluation set |
A career-switcher portfolio does not need to be huge. It needs to be clear.
- Build three finished projects.
- Put setup instructions in every README.
- Include screenshots or a short demo.
- Write what you tried, what broke, and what you changed.
- Show one project that solves a real problem from your previous career.
After you can build small projects, add:
- Git and GitHub
- command line basics
- debugging
- testing
- databases
- one deployment platform
- basic security and privacy habits
Interview prep, algorithms, and system design are useful later. They are not the first mountain.
These are university-level resources with substantial free public material. Some are true OpenCourseWare, some are public course websites, and some are MOOCs from universities. The distinction matters less than whether learners can actually use the materials.
- MIT OpenCourseWare - MIT's flagship open course collection, with materials from thousands of courses. Free materials
- Introductory Programming Courses - MIT OCW collection focused on Python and introductory CS. Free materials
- 6.0001 Introduction to Computer Science and Programming in Python - rigorous Python intro. Free materials
- 6.0002 Introduction to Computational Thinking and Data Science - modeling, simulation, optimization, and data. Free materials
- 6.006 Introduction to Algorithms - algorithms and data structures. Free materials
- 6.042J Mathematics for Computer Science - discrete math for CS. Free materials
- The Missing Semester of Your CS Education - shell, Git, editors, debugging, profiling, security, and workflow. Free
- CS50x - Harvard's introduction to computer science for majors and non-majors. Free audit
- CS50 Python - programming with Python. Free audit
- CS50 Web Programming - web apps with Python, JavaScript, SQL, Django, testing, scalability, and security. Free audit
- CS50 AI with Python - search, knowledge, uncertainty, optimization, learning, neural networks, language, and LLMs. Free audit
- CS50 SQL - relational databases and SQL. Free audit
- Stanford Engineering Everywhere - free Stanford engineering course materials, including introductory CS, AI, and machine learning. Free materials
- CS106A Programming Methodology - classic intro programming course. Free materials
- CS106B Programming Abstractions - data structures, recursion, and abstraction. Free materials
- CS107 Programming Paradigms - systems and language paradigms. Free materials
- CS229 Machine Learning - classic machine learning lectures and materials. Free materials
Berkeley has many public course sites, but access can vary by term. Prefer pages that clearly expose readings, notes, assignments, or videos.
- Data 8: Foundations of Data Science - entry-level data science with Python, statistics, inference, and real datasets. Free
- CS 61A - structure and interpretation of computer programs. Some current materials may require campus access; older public materials are still useful. Mixed public materials
- CS 61B - data structures and software engineering in Java. Mixed public materials
- Berkeley AI Materials - public project materials associated with CS188-style AI courses. Free materials
- CS 189 Introduction to Machine Learning - public lecture materials for a rigorous ML course when available by term. Mixed public materials
- CMU CS Academy - free, interactive Python-based CS curriculum for middle school, high school, and intro learners. Free
- Algorithms, Part I and Algorithms, Part II - Princeton algorithms courses by Robert Sedgewick and Kevin Wayne. Free audit
- Algorithms book site - companion textbook site with code, data, and exercises. Free
- Python Programming MOOC - current Python-first intro and advanced programming course materials. Free
- Full Stack Open - modern full stack web development with React, Node, testing, GraphQL, TypeScript, CI/CD, containers, and relational databases. Free
- Elements of AI - AI literacy course for non-programmers and beginners. Free
- Java Programming MOOC - excellent Java course, now marked by Helsinki as legacy and no longer maintained. Free, legacy
- OMSCS Open Courseware - public course content from Georgia Tech's Online Master of Science in Computer Science program. Free materials
- TU Delft OpenCourseWare - engineering-focused OCW. Useful for adjacent math, engineering, and computing topics. Free materials
- OpenStax - free, peer-reviewed textbooks from Rice University's OpenStax initiative. Good for math, statistics, physics, and other foundations. Free
- OpenLearn - free learning from The Open University. Useful for computing, IT, math, and digital skills. Free
Use these when you want a structured path rather than a single course.
- OSSU Computer Science - a community-maintained path to a free self-taught CS education using online materials. Free
- Teach Yourself Computer Science - opinionated guide for self-taught engineers and bootcamp graduates who want CS depth. Free
- CS DIY Wiki - broad self-study map across CS, systems, AI, software engineering, and tools. Free
- freeCodeCamp - interactive curriculum, projects, certifications, articles, and YouTube courses. Free
- The Odin Project - open source full stack web development curriculum. Free
- Full Stack Open - university-backed full stack curriculum from Helsinki. Free
- roadmap.sh - community developer roadmaps for roles and skills such as frontend, backend, DevOps, AI engineer, SQL, Python, and system design. Free
- Microsoft Web Dev for Beginners - 12-week project-based web curriculum. Free
- Microsoft Data Science for Beginners - 10-week data science curriculum. Free
- Microsoft Machine Learning for Beginners - 12-week classic ML curriculum. Free
- Microsoft AI for Beginners - 12-week AI curriculum covering neural networks, classic AI, and ethics. Free
- Microsoft Generative AI for Beginners - lessons on building generative AI applications. Some examples can require API access. Free materials, compute/API may cost
Video can be a great first doorway, especially for career switchers and visual learners. Use it actively: pause, type the code yourself, take notes, and build something small after watching.
Prefer specific playlists or full courses over a vague channel recommendation. Channels are fine when the whole channel is consistently educational.
- freeCodeCamp on YouTube - long-form free programming courses across web development, Python, data, computer science, and AI. Quality varies by instructor, so pick one course and finish it before hopping around. Free
- CS50 on YouTube - Harvard CS50 lectures, shorts, and course videos. Best paired with the official CS50 course site so you also do the problem sets. Free
- MIT OpenCourseWare on YouTube - university lecture videos from MIT. Best for learners who like classroom-style lectures. Free
- Crash Course Computer Science - short conceptual videos on computing history and CS ideas. Good orientation, not enough by itself for learning to program. Free
- Computerphile - approachable videos on computer science concepts, security, algorithms, and computing culture. Free
- The Coding Train - creative coding, p5.js, Processing, simulations, and playful projects. Especially good for learners who want coding to feel visual and alive. Free
- Kevin Powell - CSS and frontend layout explanations. Good after basic HTML/CSS starts to make sense. Free
- MDN on YouTube - web platform explanations from MDN. Free
- Corey Schafer - Python tutorials that are widely recommended for fundamentals and practical topics. Some videos are older, so check package versions as you follow along. Free
- StatQuest - friendly explanations of statistics and machine learning concepts. Free
- 3Blue1Brown - visual math, linear algebra, calculus, neural networks, and other foundations. Free
Books are still one of the best ways to learn deeply. Courses are great for structure and accountability; books are great for building durable mental models, going at your own pace, and returning to a topic later.
This section is free-first, but excellent paid books are welcome. A highly regarded book that is worth buying, borrowing, or requesting from a library can belong here, especially when it teaches durable fundamentals better than a free alternative.
- OpenStax Computer Science - free peer-reviewed computer science textbooks from Rice University's OpenStax project. Good for intro CS, Python, data science, business technology, and adjacent foundations. Free
- OpenStax - free textbooks for math, statistics, science, business, and other foundations that support CS learning. Free
- Free Programming Books - large community-maintained index of free programming books in many languages. Use it as a search index, not as a guided path. Free list
- LibreTexts - broad open textbook library used by many educators. Quality varies by book, but it is useful for math, science, engineering, and computing topics. Free
These are not only for children. They can be excellent for career switchers, parents learning with kids, teachers, and anyone who wants the ideas to feel less abstract before starting a formal course.
- Hello Ruby - picture-book style introduction to computational thinking, computers, the internet, and AI. Good for making the subject feel friendly before syntax appears. Library/Paid
- Secret Coders - graphic novel series that mixes story, logic puzzles, and basic programming ideas. Library/Paid
- Lauren Ipsum - story-based tour of computer science ideas such as logic, naming, algorithms, and problem solving. Library/Paid
- Coding Games in Scratch - project-based Scratch game book. Useful when typed code feels like too much friction at the beginning. Library/Paid
- Python for Kids - accessible Python book that works for kids, families, and adults who want a playful first Python text. Library/Paid
- Coding for Kids: Python - project-based Python introduction through games and activities. Library/Paid
- Grokking Algorithms - visual, friendly introduction to algorithms. Not a children's book, but often less intimidating than traditional algorithm textbooks. Library/Paid
- Think Python - beginner-friendly Python by Allen Downey. Free online book
- How to Think Like a Computer Scientist: Interactive Edition - interactive Python text with exercises. Free
- Automate the Boring Stuff with Python - practical Python automation for real tasks. Free online book
- Eloquent JavaScript - modern JavaScript programming, now in its fourth edition. Free online book
- You Don't Know JS Yet - deep JavaScript series for learners ready to understand the language more carefully. Free
- Composing Programs - Python-based introduction to abstraction, functions, interpreters, and computer science ideas inspired by SICP. Free
- The Rust Programming Language - official Rust book. Free
- Rust by Example - example-driven Rust reference. Free
- A Tour of Go - official interactive Go introduction. Free
- Effective Go - official Go idioms and style. Free
- Learn Go with Tests - Go through test-driven exercises. Free
- Beej's Guide to C Programming - approachable C programming guide. Free
- Build Your Own Lisp - learn C by building a Lisp interpreter. Free online book
- LearnCpp - modern C++ tutorial and reference. Free
- Structure and Interpretation of Computer Programs - classic computer science text. It is older, but still excellent for learning abstraction and program design. Free online book
- Open Data Structures - data structures in multiple programming languages. Free online book
- Operating Systems: Three Easy Pieces - widely used operating systems textbook. Free online book
- Dive into Systems - accessible systems book covering C, architecture, assembly, operating systems, and parallel computing. Free online book
- Nand2Tetris - build a computer from first principles. Course/project materials are free; the book is paid. Free materials, Library/Paid book
- Crafting Interpreters - build interpreters in Java and C. Free online book
- Programming Languages: Application and Interpretation - programming language concepts and interpreters. Free online book
- Software Engineering at Google - what Google learned about programming over time, scale, and engineering practice. Free online book
- The Architecture of Open Source Applications - essays on the design of real open source systems. Free online book
- The Performance of Open Source Applications - case studies on performance in real systems. Free online book
- Producing Open Source Software - human side of running open source projects. Free online book
- Designing Data-Intensive Applications - modern distributed data systems. Not free from the publisher, but one of the most useful modern software books. Library/Paid
- Think Stats - probability and statistics for programmers. Free online book
- Think Bayes - Bayesian statistics with Python. Free online book
- Mathematics for Machine Learning - linear algebra, calculus, probability, and optimization for ML. Free online book
- OpenIntro Statistics - approachable statistics textbook. Free
- R for Data Science - data science with R, tidyverse, and practical workflows. Free online book
- Deep Learning - classic deep learning textbook by Goodfellow, Bengio, and Courville. Free online book
- Dive into Deep Learning - interactive deep learning book with code, math, and exercises. Free online book
- Interpretable Machine Learning - practical model interpretability. Free online book
- Understanding Machine Learning: From Theory to Algorithms - rigorous ML theory text. Free online book
- Mathematical Engineering of Deep Learning - mathematical foundations of deep learning. Free online book
These are not free-first resources, but they are important enough that learners may want to know they exist. Borrow them, buy used, request them from a library, or buy them when they match your goals.
- The Pragmatic Programmer - practical habits for becoming a better developer. Best after you have written some code and felt a few real project pains. Library/Paid
- Refactoring - Martin Fowler's guide to improving existing code safely. The second edition uses JavaScript examples. Library/Paid
- Working Effectively with Legacy Code - still one of the most useful books for learning how to change messy code with tests. Library/Paid
- Domain-Driven Design - Eric Evans' classic on modeling complex business domains. Best for intermediate and advanced developers. Library/Paid
- Patterns of Enterprise Application Architecture - older, but still useful for understanding many backend architecture patterns. Library/Paid
- Python Crash Course - project-based Python for beginners. Library/Paid
- Fluent Python - deep Python for developers who already know the basics. Library/Paid
- Effective Python - practical ways to write better Python. Library/Paid
- Effective Java - essential Java practices for intermediate developers. Library/Paid
- JavaScript: The Definitive Guide - comprehensive JavaScript reference. Library/Paid
- Learning TypeScript - practical TypeScript introduction for JavaScript developers. Library/Paid
- Computer Systems: A Programmer's Perspective - systems from a programmer's point of view. Library/Paid
- Computer Networking: A Top-Down Approach - modern networking textbook, with the 9th edition updated for HTTP/3, QUIC, Wi-Fi 6, 5G, and security topics. Library/Paid
- Compilers: Principles, Techniques, and Tools - the "Dragon Book." Classic compiler reference, but many learners should start with Crafting Interpreters or PLAI. Library/Paid
- Designing Data-Intensive Applications - included above too because it is unusually useful for modern backend and data systems. Library/Paid
- Fundamentals of Data Engineering - modern data engineering concepts, architectures, and practices. Library/Paid
- Learning SQL - practical SQL introduction. Library/Paid
- Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow - practical ML and deep learning with Python. Library/Paid
- Designing Machine Learning Systems - production ML system design from data through deployment and monitoring. Library/Paid
- AI Engineering - building applications with foundation models, retrieval, evaluation, and product constraints. Library/Paid
- Deep Learning with Python - practical deep learning from Francois Chollet. Library/Paid
- MDN JavaScript Guide - official web-platform documentation. Free
- JavaScript.info - detailed modern JavaScript tutorial. Free
- TypeScript Handbook - official TypeScript guide. Free
- freeCodeCamp JavaScript Algorithms and Data Structures - interactive practice. Free
- Exercism JavaScript and Exercism TypeScript - exercises and community feedback. Free
- Python Programming MOOC - current university-style Python course from Helsinki. Free
- Python for Everybody - beginner-friendly course. Free
- Automate the Boring Stuff with Python - practical automation. Free online book
- Official Python Tutorial - canonical tutorial. Free
- Real Python - practical tutorials. Mixed
- Exercism Python - exercises and community feedback. Free
- Java Programming MOOC - excellent Helsinki Java course, now legacy but still useful. Free, legacy
- Oracle Java Tutorials - official Java tutorials. Free
- Dev.java - modern Java learning from Oracle. Free
- Exercism Java - practice exercises. Free
- A Tour of Go - official interactive intro. Free
- Go by Example - concise examples. Free
- Effective Go - official idioms. Free
- Learn Go with Tests - learn Go through tests. Free
- The Rust Programming Language - official Rust book. Free
- Rustlings - small exercises. Free
- Rust by Example - runnable examples. Free
- Comprehensive Rust - Rust course from Google. Free
C and C++ are powerful but less forgiving first languages. They are excellent for systems, embedded software, performance work, and understanding memory.
- Beej's Guide to C Programming - friendly C guide. Free
- The C Programming Language - classic book reference. Usually paid, but widely available in libraries.
- LearnCpp - modern C++ tutorial. Free
- C++ Core Guidelines - professional C++ guidance. Free
- Microsoft Learn C# - official C# documentation and tutorials. Free
- freeCodeCamp Foundational C# with Microsoft - interactive C# certification. Free
- Exercism C# - practice exercises. Free
- The Odin Project Ruby on Rails Path - full stack Ruby path. Free
- Ruby in Twenty Minutes - official quickstart. Free
- Ruby on Rails Guides - official Rails docs. Free
- Exercism Ruby - practice exercises. Free
- Scratch - visual programming for kids and first timers. Free
- Microsoft MakeCode - block and JavaScript-based coding for devices and games. Free
- p5.js - creative coding with JavaScript. Free
- The Coding Train - creative programming videos and projects. Free
- MDN Learn Web Development - structured web fundamentals. Free
- HTML on MDN - HTML docs. Free
- CSS on MDN - CSS docs. Free
- web.dev Learn - modern web platform learning from Google. Free
- Frontend Mentor - design-to-code practice challenges. Mixed
- The Odin Project - full stack JavaScript and Ruby paths. Free
- Full Stack Open - React, Node, testing, TypeScript, GraphQL, CI/CD, containers, and databases. Free
- CS50 Web Programming - Django, SQL, JavaScript, testing, scalability, and security. Free audit
- Microsoft Web Dev for Beginners - project-based intro. Free
- Learn Accessibility - practical web accessibility. Free
- WAI Tutorials - W3C accessibility tutorials. Free
- Laws of UX - design principles explained plainly. Free
- Automate the Boring Stuff with Python - files, spreadsheets, web scraping, email, and automation. Free online book
- Python for Everybody - Python, data structures, web, APIs, and databases. Free
- Python Standard Library - batteries included. Free
- Pandas User Guide - data analysis library docs. Free
- Jupyter Documentation - notebooks and interactive computing. Free
This section is here for depth. Beginners do not need to complete it before building useful projects.
- MIT 6.042J Mathematics for Computer Science - proof, induction, graph theory, counting, probability. Free materials
- Khan Academy Math - rebuild algebra, calculus, statistics, and linear algebra fundamentals. Free
- 3Blue1Brown - visual math explanations. Free
- Mathematics for Machine Learning - linear algebra, calculus, probability, and optimization for ML. Free online book
- MIT 6.006 Introduction to Algorithms - rigorous algorithms course. Free materials
- Princeton Algorithms - textbook site, code, and exercises. Free
- VisuAlgo - visual algorithm explanations. Free
- Open Data Structures - free textbook. Free
- CP-Algorithms - competitive programming algorithms reference. Free
- The Missing Semester - tools and workflow. Free
- Operating Systems: Three Easy Pieces - free OS textbook. Free
- Computer Systems: A Programmer's Perspective - classic systems textbook. Usually paid, but commonly available in libraries.
- Nand2Tetris - build a computer from first principles. Free materials
- CMU Database Group Courses - public database systems courses. Free materials
- Database System Concepts - classic database textbook companion site. Free materials
- PostgreSQL Tutorial - practical PostgreSQL. Free
- Computer Networking: A Top-Down Approach - textbook companion resources. Free materials
- OWASP Web Security Testing Guide - practical web security testing. Free
- PortSwigger Web Security Academy - hands-on web security labs. Free
- Cryptohack - cryptography practice. Free
- Crafting Interpreters - build an interpreter. Free online book
- Programming Languages: Application and Interpretation - programming language concepts. Free
- Build Your Own Lisp - C and Lisp through implementation. Free online book
- Software Engineering at Google - free online book about engineering at scale. Free
- The Architecture of Open Source Applications - essays on real systems. Free
- Refactoring Guru - design patterns and refactoring explanations. Mixed
- Google Engineering Practices - code review and engineering practice guidance. Free
AI has changed a lot since this repo was last active. It belongs in the guide, but it is not a replacement for learning to program.
Treat this section as a map, not a shortcut. Learn enough programming, math, testing, and software engineering to understand what your tools are doing and to notice when they are wrong.
- Elements of AI - beginner-friendly AI course that does not require programming. Free
- AI for Everyone - nontechnical overview from DeepLearning.AI. Free audit
- Khan Academy AI - AI education resources, especially for teachers. Free and mixed
- Google Machine Learning Crash Course - free self-study ML course from Google. Free
- Microsoft Machine Learning for Beginners - classic ML curriculum. Free
- CS50 AI - AI concepts and algorithms with Python projects. Free audit
- Stanford CS229 via SEE - classic ML lectures. Free materials
- Kaggle Learn - short practical data and ML courses. Free
- fast.ai Practical Deep Learning for Coders - practical deep learning for people with coding experience. Free, compute may cost
- Deep Learning Book - foundational deep learning textbook. Free online book
- Dive into Deep Learning - interactive deep learning book. Free
- Microsoft AI for Beginners - neural networks, classic AI, and ethics. Free
- Hugging Face LLM Course - NLP, transformers, datasets, tokenizers, fine-tuning, and sharing models. Free
- Microsoft Generative AI for Beginners - prompt engineering, RAG, agents, fine-tuning, and app patterns. Free materials, API may cost
- OpenAI Cookbook - official examples and guides for using the OpenAI API. Free materials, API may cost
- OpenAI Prompting Guide - official prompting guidance. Free
- Anthropic Prompt Engineering Guide - official Claude prompting guidance. Free
- Google Gemini Prompt Design - official prompt design strategies for Gemini API. Free
- Made With ML - production ML, testing, serving, monitoring, and iteration. Free
- Machine Learning Zoomcamp - practical ML engineering and deployment. Free
- Full Stack Deep Learning - ML product engineering and deployment. Free materials
- Hugging Face Agents Course - agent concepts and hands-on projects when publicly available. Free
- Google Responsible AI Practices - practical responsible AI guidance. Free
- Microsoft Responsible AI - principles, tools, and resources. Free
- NIST AI Risk Management Framework - risk management framework for AI. Free
- Model Cards - documentation pattern for model behavior and limitations. Free
- SQLBolt - interactive SQL lessons. Free
- Select Star SQL - approachable SQL tutorial. Free
- Mode SQL Tutorial - analytics-focused SQL. Free
- PostgreSQL Tutorial - practical PostgreSQL. Free
- Data 8 - Berkeley foundations of data science. Free
- Kaggle Learn - short practical courses. Free
- Microsoft Data Science for Beginners - 10-week curriculum. Free
- Think Stats - probability and statistics for programmers. Free online book
- Data Engineering Zoomcamp - practical data engineering course. Free
- dbt Learn - analytics engineering with dbt. Free
- Apache Airflow Documentation - workflow orchestration docs. Free
- GitHub Skills - hands-on GitHub courses. Free
- Git and GitHub Learning Resources - official GitHub guide. Free
- Pro Git - official Git book. Free
- Learn Git Branching - visual Git practice. Free
- First Contributions - beginner open source contribution workflow. Free
- The Missing Semester - practical developer workflow. Free
- VS Code Docs - editor documentation. Free
- Vim Tutor - Vim user manual and tutor. Free
- Explain Shell - explain shell commands. Free
- Google Testing Blog - testing practices. Free
- pytest Documentation - Python testing. Free
- Testing Library Docs - UI testing. Free
- Playwright Docs - browser automation and testing. Free
- Exercism - practice tracks and mentoring-friendly exercises. Free
- Codewars - small coding challenges. Free
- LeetCode - interview-style algorithm practice. Mixed
- Advent of Code - annual programming puzzles. Free
- Project Euler - math-heavy programming problems. Free
- HackerRank - practice problems. Mixed
- Project Based Learning - tutorials organized by programming language. Free
- Build Your Own X - recreate databases, Git, shells, browsers, games, AI models, and other systems. Free list
- Free Programming Books - large community-maintained list of free programming books and resources. Free list
- CS Video Courses - computer science courses with video lectures. Free list
- personal homepage
- "about me" page for a career-change portfolio
- calculator
- quiz app
- todo list
- unit converter
- random quote generator
- command-line notes app
- simple web scraper for a site that permits scraping
- habit tracker
- budget tracker
- small tool that solves a problem from your current or previous career
- recipe search app
- flashcard app
- API-backed dashboard
- browser extension
- turn-based game
- static site generator
- personal search engine for local files
- tiny database
- interpreter for a small language
- Git clone
- shell
- text editor
- web server
- container from scratch
- compiler
- distributed job queue
- RAG system with evaluation
For every project, write a short README:
- What does it do?
- How do I run it?
- What did you learn?
- What would you improve next?
- freeCodeCamp Forum - beginner-friendly community. Free
- Stack Overflow Help: Asking - asking better technical questions and understanding how Stack Overflow works. Free
- Open Source Guides - how open source projects work. Free
- GitHub Explore - discover open source projects. Free
- Good First Issue - find beginner-friendly issues. Free
Portfolio guidance:
- Show finished projects, not just certificates.
- Include screenshots, setup instructions, and a short explanation of tradeoffs.
- Keep projects small enough that you can explain every part.
- Prefer three polished projects over fifteen abandoned experiments.
- Write about debugging moments, not only the final result.
- Scratch - visual programming and creative projects. Free
- Khan Academy Computer Programming - JavaScript, drawing, animation, HTML/CSS, and SQL. Free
- CMU CS Academy - free Python-based curriculum designed for schools. Free
- Code.org - Hour of Code and K-12 CS curriculum. Free
- Microsoft MakeCode - blocks, JavaScript, microcontrollers, and games. Free
- CS Unplugged - computing concepts without computers. Free
The most reliable pattern:
- Pick one main course.
- Take notes in your own words.
- Type the code yourself.
- Do the exercises before watching solutions.
- Build a small project after every major topic.
- Ask for hints before asking for answers.
- Revisit older projects and improve them.
- Explain what you built in writing.
If you are a career switcher, keep a small learning log. Write three sentences after each study session: what you tried, what confused you, and what you will try next. This turns scattered effort into visible progress.
AI can help, but it should not do the learning for you. The best use of AI while learning is the same as a good tutor: it asks questions, gives hints, explains the thing you are stuck on, and helps you reflect on your own attempt.
Good AI uses:
- explain an error message
- generate practice problems
- ask for hints
- review code for edge cases
- compare two approaches
- create a study plan from a course syllabus
- turn a confusing paragraph of documentation into plainer language
Avoid:
- pasting assignments and accepting full answers
- using code you cannot explain
- skipping documentation
- trusting generated facts, APIs, or links without checking official sources
- mistaking a working answer for understanding
Useful prompt:
I am learning <topic>. Do not give me the full answer yet.
Ask me one question at a time and give hints when I get stuck.
Here is what I tried:
<code or explanation>
Resources included here should be:
- free-first, or clearly labeled when only auditing is free
- beginner-friendly or clearly labeled for intermediate/advanced learners
- actively maintained or still technically relevant
- practical enough to help learners build things
- high quality, not just popular
- focused on durable fundamentals rather than short-lived tricks
- respectful of accessibility, safety, and learner privacy
Courses, tutorials, videos, playlists, curricula, communities, and tools should be free or genuinely free to audit. Paid books may be included when they are widely respected, durable, and clearly worth buying or borrowing.
This repo is not for advertising something you sell. If you have a financial, employment, affiliate, or marketing relationship with a resource, disclose it. Promotional PRs, affiliate links, referral links, and paid-course submissions will be declined.
Contributions are welcome. Please read Contributing.md and MAINTENANCE.md before opening a pull request.
This project works best when additions are selective. A short explanation of why a resource belongs here is more helpful than a long list of links.
Maintainers also track high-priority resources in resources.yml and validate links with scripts/check_links.py.