Skip to content
A (deprecated) framework for building exercises to work with Khan Academy.
HTML JavaScript CSS Python Shell Makefile
Latest commit 8076e90 @alopatin alopatin Properly clean up after a problem when using interfaceFunctions
Not having this line was causing a bug in webapp where a new
ItemRenderer was being added to the page every time you advanced
to the next question, and each one wanted to try and control the
same DOM nodes (this didn't work out very well).

Test Plan:
In webapp, skip questions while keeping an eye on the React dev tools.
Note that additional ItemRenderer instances are no longer being added.

Auditors: michelle
Failed to load latest commit information.
build Make sure a string is passed into JSON.parseString
css Update khan-exercises to remove all references to Jed.
exercises Add some text to ellipse_intuition to help explain the exercise better.
fonts Move all answer area content to the bottom of the question area
genfiles Make sure a string is passed into JSON.parseString
images Update badge images and fix clipping
local-only Update khan-exercises to remove all references to Jed.
test Tests: Make tests run again
third_party Differentiate between error types when failing to load an exercise.
tools Add tools/, which will be automatically run by khan-linter.
utils Refactored calculator UI code to a separate module
.arcconfig Fix the Show Answers button when reporting an exercise issue.
.arclint Fix the regexp for arc lint to correctly only match a single line.
.gitignore Fixed a few TODOs.
.gitmodules Move qunit to a more-global directory
.travis.yml Send Travis alerts to Slack instead of HipChat
Makefile Get rid of an obsolete comment. Answer major question in README.
exercises-stub.js Add a bunch of eslint-disable comments for legacy code.
history.js Change from $._ and $.ngettext over to i18n._ and i18n.ngettext.
interface.js Properly clean up after a problem when using interfaceFunctions
khan-exercise.js Prevent race condition in calculator modules
lint_blacklist.txt Add MathZoom.js to MathJax for real
main.js Use requirejs for module loading
package.json Rewrite pack.rb in javascript, to remove the main ruby dep on our cod…
requirements.txt First pass at creating a new script for our i18n e…

Khan Academy Exercises

Khan Academy has created a generic framework for building exercises. This framework, together with the exercises themselves, can be used completely independently of the Khan Academy application.

This repo consists of two parts:

  • Various HTML files that describe exercises.
  • A jQuery plugin for generating a usable, interactive, exercise from any of the HTML files.

Current Status

Khan Exercises is no longer used for development of new exercises at Khan Academy. We're always looking to improve the exercises that are currently built with Khan Exercises, but at this time we don't intend to add any new exercises. New exercises on Khan Academy are written by many content experts using Perseus and stored in our datastore as individual questions.

The bulk of our bug reports now go into Zen Desk where volunteers surface issues to KA developers, but we still process issues and PRs that come in through this repository. The goal is to keep high-quality bug reports and feature requests in this repository so awesome OSS developers who want to help KA have the tools do so.

If you're looking to contribute time, looking through our wiki is a good place to start. Questions should go into the issue tracker (we may set up gitter if there ends up being a high volume of questions).


Copyright (c) 2015 Khan Academy

The exercise framework is MIT licensed.

The exercises are under a Creative Commons by-nc-sa license.

Using the Framework Locally

You need to serve the files from some sort of a server. You can't just open the files directly in a browser. For example:

cd khan-exercises
python -m SimpleHTTPServer # or python3 -m http.server

Now if you open your browser to http://localhost:8000 (or you should see the contents of the khan-exercises directory. Navigate to the exercises subfolder, and an HTML file under there to see an exercise.


If you're passionate about providing a free world-class education for anyone, anywhere and want to apply to be a full-time or intern software developer at Khan Academy, please do so.

Something went wrong with that request. Please try again.