Skip to content

ashleymcnamara/learn_to_code

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Learn to Code

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

Contents

Start Here First

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.

Free-First Philosophy

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

Not an Advertising Channel

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

Cost Legend

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.

Start Here

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:

  1. If you want the gentlest start, use Scratch for a weekend.
  2. If you want a practical adult beginner path, start Python Programming MOOC or Python for Everybody.
  3. If you want websites, start MDN Learn Web Development.
  4. 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.

A Note About AI

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.

If You Have No Technical Background

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.

A Calm First Week

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

Three Gentle Starting Options

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

Choose a Path

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

Absolute Beginner

Good if you have never programmed before.

  1. CS50x - broad, energetic introduction to computer science. Free audit
  2. Python Programming MOOC - University of Helsinki's current Python-first introductory programming course. Free
  3. Exercism - practice exercises with community feedback. Free
  4. Build three small projects: a calculator, a todo list, and a file cleanup script.

Web Developer

Good if you want visual feedback and portfolio projects.

  1. MDN Learn Web Development
  2. freeCodeCamp
  3. The Odin Project
  4. Full Stack Open after you know basic JavaScript

Build: landing page, form, browser game, API app, full stack CRUD app, deployed portfolio.

Python, Data, and Automation

Good if you want scripts, dashboards, data cleanup, or practical office automation.

  1. Python for Everybody
  2. Automate the Boring Stuff with Python
  3. SQLBolt
  4. Kaggle Learn
  5. Data 8 for a university-style data science course

Build: file renamer, CSV cleaner, spreadsheet report generator, API client, data dashboard.

Computer Science Depth

Good if you want a self-directed alternative to parts of a CS degree.

  1. OSSU Computer Science
  2. Teach Yourself Computer Science
  3. MIT OpenCourseWare
  4. Stanford Engineering Everywhere
  5. CS DIY Wiki for a broad course map and project references

Expect this path to take years, not weeks. That is normal.

Learning AI After the Basics

Good if you can already write basic Python and want to understand modern AI without skipping the programming foundation.

  1. Elements of AI for AI literacy
  2. Google Machine Learning Crash Course
  3. CS50 AI
  4. Microsoft AI for Beginners
  5. Hugging Face LLM Course
  6. 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 Switcher Path

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.

Phase 1: Get Oriented

Use these to understand the shape of the field before committing to a specialty:

Phase 2: Pick a Job-Adjacent Track

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

Phase 3: Make Proof

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.

Phase 4: Add Job Skills

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.

University OpenCourseWare

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

Harvard

  • 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

UC Berkeley

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

Carnegie Mellon

  • CMU CS Academy - free, interactive Python-based CS curriculum for middle school, high school, and intro learners. Free

Princeton

University of Helsinki

  • 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

Georgia Tech

  • OMSCS Open Courseware - public course content from Georgia Tech's Online Master of Science in Computer Science program. Free materials

Other Open Courseware and OER Sources

  • 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

Complete Free Curricula

Use these when you want a structured path rather than a single course.

Video and YouTube

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.

Beginner-Friendly Video

  • 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

Web and Creative Coding Video

  • 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

Python and Data Video

  • 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 and Textbooks

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.

Open Textbook Libraries

  • 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

Gentle, Visual, and Children's Books

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

Beginner Programming Books

Language-Specific Books

Computer Science Foundations Books

Software Engineering and Architecture Books

Data, Math, and Statistics Books

AI and Machine Learning Books

Highly Rated Paid Books Worth Buying or Borrowing

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.

General Software Craft

  • 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

Language and Web Books

Systems, Networking, and Compilers

Data, Backend, and System Design

AI and Machine Learning

Programming Languages

JavaScript and TypeScript

Python

Java

Go

Rust

C and C++

C and C++ are powerful but less forgiving first languages. They are excellent for systems, embedded software, performance work, and understanding memory.

C#

Ruby

Scratch and Creative Coding

  • 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

Web Development

Frontend Fundamentals

Full Stack

Accessibility and Design

Python and Automation

Computer Science Foundations

This section is here for depth. Beginners do not need to complete it before building useful projects.

Discrete Math and Math for CS

Algorithms and Data Structures

Systems and Operating Systems

Databases

Networking and Security

Compilers and Programming Languages

Software Engineering

AI and Machine Learning

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.

AI Literacy

  • 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

Machine Learning Foundations

Deep Learning

LLMs and Generative AI

AI Engineering and MLOps

Responsible AI

Data and Databases

SQL

Data Science

Data Engineering

Developer Tools

Git and GitHub

Command Line and Editors

Testing, Debugging, and Quality

Practice and Projects

Exercise Sites

Project-Based Learning Lists

Beginner Project Ideas

  • 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

Intermediate Project Ideas

  • 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

Advanced Project Ideas

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

Career and Community

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.

Kids, Teens, and Classrooms

How to Study

The most reliable pattern:

  1. Pick one main course.
  2. Take notes in your own words.
  3. Type the code yourself.
  4. Do the exercises before watching solutions.
  5. Build a small project after every major topic.
  6. Ask for hints before asking for answers.
  7. Revisit older projects and improve them.
  8. 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>

Resource Criteria

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.

Contributing

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.

About

Resources for budding developers

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages