If you're seeing this message, it means we're having trouble loading external resources on our website.

If you're behind a web filter, please make sure that the domains *.kastatic.org and *.kasandbox.org are unblocked.

Main content

Learning programming on Khan Academy

In this course, we'll be teaching the concepts of the JavaScript programming language and the cool functions you can use with it in the ProcessingJS library. Before you dig in, here's a brief tour of how we teach programming here on Khan Academy, and how we think you can learn the most.
Normally, we teach on Khan Academy using videos, but here in programming land, we teach with something we call "talk-throughs". A talk-through is like a video, but it's actually interactive- you can pause at any time if you want to play with the code yourself, and you can spin-off if you want to make your own version of what we made.  Here's an animated GIF of a talk-through (there will be sound in the actual talk-throughs!):
Animated GIF of a talk-through about variables.
After a talk-through, we'll give you a step-by-step coding challenge and guide you through them with messages and hints. If you feel like you're spending too much time on a challenge and getting frustrated, try re-watching the talk-through or just keep going and re-visit the challenge later. Here's an animated GIF of the Bucktooth Bunny challenge:
Animated GIF of a learner working on the variables challenge called Bucktooth Bunny.
When you're learning to program, you've got to practice-practice-practice. The challenges are a good way to try out what you've learned, but we want you to go deeper. That's why we now have projects in the course, opportunities to spend a lot more time and be more creative than you can be in the challenges.
Screenshot of the "What's for Dinner?" project.
Besides the projects, you should also make up completely new programs, whatever's in your head. Just click "New program" on the programming homepage, and look at the documentation to remember how to do things.
And hey, it's totally okay to make mistakes. That's what programmers do all the time - we break things, we make mistakes, we learn from them.
Screenshot of a ProcessingJS program and an error message popped up on the canvas.
Once you've made a program, you can save it and share it with your friends and family. It'll also show up in our community programs area, and other programmers can comment on it or ask you questions about how you did something. You can do the same for any interesting programs you find, too, and if you have an idea for customizing a program you see, just click "Save as spin-off" and you'll have your own copy of it.
All in all, there are 40 talk-throughs, 35 challenges, and 9 projects in this course, and it takes about 15-40 hours to complete, depending how wild you go with your projects. That might seem like a lot of time, but it's worth it, because at the end, you'll know the fundamentals of programming that are common across all programming languages.
Welcome to programming land: we're a community learning together and inspiring each other to turn the visions in our head into reality. Onward!

Want to join the conversation?

  • leafers tree style avatar for user jackacid
    Is there a way to search for a specific community program, either by title or by author? Currently all i see are categories: Hot, Recent, Contests, or Top. The search function at the top of the page seems to be limited to official content.
    (1,673 votes)
    Default Khan Academy avatar avatar for user
    • female robot grace style avatar for user Inger Hohler
      Currently you can use the search bar at the top (magnifying glass) to search for programs by title and also users by nickname. However, there seem to be some limits to the search. I was able to find many but not all of the programs on the high end of the hotlist. When I tried to search for some of my older programs with as many votes and spin-offs, only the most recent one from about 7 months ago was included. Also, if the program title was related to a subject on KA, I did not find the program, only the videos/articles on KA.
      (26 votes)
  • blobby green style avatar for user paul mnindi
    Is it possible to learn java s. and c# at the same time? if so I need help who can assist me.
    (308 votes)
    Default Khan Academy avatar avatar for user
    • piceratops ultimate style avatar for user trek
      I've found that when I have students trying to learn multiple programming languages that share syntactical elements, it is much more confusing for them. Usually they forget what language allows or prohibits certain behaviors. I'd suggest getting the fundamentals down first and then add new languages. Otherwise, you may find yourself giving up in frustration or at the least struggling way more than is needed. JMHO.
      (486 votes)
  • leaf green style avatar for user tk12
    I've finished the Intro to JS, but I am not sure what exactly is the "fundamentals of programming that are common across all programming languages." Could someone explain?
    (465 votes)
    Default Khan Academy avatar avatar for user
    • leafers seedling style avatar for user Ali Mehdi
      Programming and programming languages are totally two different things, If we know programming we can work in any programming language. One should learn concepts of programming ( like variables, loops etc.) to make algorithms for problem solving. Then these concepts could be applied to any language.
      (36 votes)
  • blobby green style avatar for user Edward Santoro
    I would like to program an ebook to be read from a web browser. I already have the following files: MP3s of read text for each page, text to be placed at the bottom of each page, JPG image for each page.

    I would like to put all these files into one folder and write some kind of html/xtml header file that tells the web browser how to display the individual pages of the ebook: when to play the MP3 of the page text, when to turn to the next page, etc.

    My question: What type of programming do I need for this? Can it all be done in HTML 5, or do I also need to incorporate a CSS style sheet and/or bits of Java Script.

    Thank you for whatever direction you can point me.
    (226 votes)
    Default Khan Academy avatar avatar for user
    • leafers ultimate style avatar for user Justin Ly
      You are doing Java script, a famous and most common script. If you use Java script for some other one, such as HTML 5, or more, it won't work. If you want to use others, you will have to learn them. I was wondering the same thing. I hope they teach others like PYTHON!
      (6 votes)
  • male robot hal style avatar for user Kevin Zhang
    Why you guys use processing JS? It is not real JavaScript.
    (178 votes)
    Default Khan Academy avatar avatar for user
  • duskpin seedling style avatar for user Haylee11Kirby
    How does programming work exactly?
    (100 votes)
    Default Khan Academy avatar avatar for user
    • hopper cool style avatar for user avmswimmer
      Programming is how you tell computers to do things. Without being programmed, a computer would be useless. People have to program it to respond to user interaction with a mouse and keyboard, show different things on the screen, and access the internet. So, computer programmers give the computer instructions on how to do that in their programs.

      However computers can’t understand words and number that are used in programming. When you run the code, what is actually happening is that the words you type are converted into binary code (also called machine language). It basically looks like a bunch of ones and zeroes. The ones and zeros specify if certain “gates” in the hardware of the computer are either on or off. The electric current can flow through all the gates that are on and whatever path the current takes makes it do something on the computer (ie make the screen light up a certain way, add some numbers, or send a message)

      People used to do programming only with machine language. However it took a very long time, and if just one mistake was made it would be nearly impossible to find it, since all the programs were just thousands of ones and zeroes. Eventually programming languages were invented so programs could be easier read or understood

      Hope this helps!
      (263 votes)
  • duskpin ultimate style avatar for user ℳ𝒶𝒹ℯ𝓁ℯ𝓃𝒶 ℬ𝒾𝒸𝓀𝓁ℯ𝓎
    I'm considering taking my online school's Java Programming course next year, and I'm curious how similar it will be to the form of Javascript taught here on KA. The course description says that "The student will use Oracle’s Java programming language throughout this course."

    Will working through the Intro to JS and/or Advanced JS courses here on KA prepare me at all for my school's Java course?

    Thanks in advance!
    (33 votes)
    Default Khan Academy avatar avatar for user
  • starky tree style avatar for user jaimon.sorge
    where do you go to program?
    (22 votes)
    Default Khan Academy avatar avatar for user
  • blobby green style avatar for user job king
    is khan academy offering lessons on programming languages? i would really like to take lessons on C
    (21 votes)
    Default Khan Academy avatar avatar for user
  • aqualine ultimate style avatar for user Lucy John
    How do you find projects created by other people? On the screen in the video, there seems to be a menu with a tab called 'Browse Programs', but I'm not sure where to find it.
    (21 votes)
    Default Khan Academy avatar avatar for user