I use Khan Academy a lot in my math teaching, and each of my students have a Google spreadsheet keeping track of their progress in the course. Every week I go through my students’ achievements on Khan Academy, and mark some spreadsheet cells green. I’ve managed to automate this pretty far, but it still takes some 20 minutes of repetitive work per class – with the included risk of manual errors.

A few weeks ago I learned that Khan Academy exposes information through an API, and I’ve been trying to make write a script in Google Drive that can talk to Khan Academy and make updates automatically.

**The why**

I would really like to have such a script, for three reasons:

- Students would get quicker results from their work. This is good for motivation, and thus for learning.
- It would save me a lot of time – probably a bit more than an hour every week, plus the extra work I have to spend every now and then when I make mistakes in the manual procedures and have to revert and start over.
- I would feel that Khan Academy is so easy to work with that I would start looking into how I can contribute math exercises I’m missing.

**I need help**

I’ve spent quite a bit of time trying to create such a script, with no success. I’m not 100% sure that it actually possible, and I don’t have the skills in OAuth and JavaScript to find out.

If you could give me a hand on this, you have my sincere thanks.

**What I have so far**

- To get student data out of Khan Academy, you need a pair of keys. This is two-click procedure over at https://www.khanacademy.org/api-apps/register. (You also need an account at Khan Academy, to have some data to pull out.)
- Khan Academy uses OAuth 1.0. Required parameters are described here: https://github.com/Khan/khan-api/wiki/Khan-Academy-API-Authentication
- From some Google Drive document (such as a spreadsheet), you can use the class OAuthConfig to try to connect to Khan Academy. The actual request is handled by the class UrlFetchApp. (All of this is handled from tools > script editor.)

When I’ve tried this, I only get ”OAuth Error”. Possible problems, which I’ve been unable to solve/investigate properly.

- As far as I can tell, Google Drive scripts use OAuth 1.0A. I think this is compatible with 1.0 (required by Khan Acdemy), but this
*might*be the source of the problems. - I haven’t found a way to explicitly set the parameters required by Khan Academy. Maybe this is done automatically by the OAuthConfig object, maybe not.

The code I’m using can be found on GitHub: https://github.com/Itangalo/studentmatrix/blob/master/studentMatrixKhan.js. Bear in mind that I actually don’t know JavaScript, so it’s ok to laugh.

I’ve looked a bit at the project KhanReporter, written in Python, that talks with both Khan Academy and Google Drive. Perhaps you can make more sense of it than I can.

**Interested?**

If you’re interested in helping out, feel free to write a comment to this post. Thanks in any case.

I thought KA already has got class performance overview or dashboard?

There is a khan-developer mailing list, u might post there.

Thanks for the comments!

Khan Academy does indeed have tools for monitoring class performance, but the classes I’m teaching are only covered partly (20%?) by the content on Khan Academy. So I have separate spreadsheets for keeping track of student progress. (Also, Khan Academy is only one of the ways students can show that they have mastered a topic, so I/the student can’t rely only on Khan’s reporting.)

I found Khan developer Google group the other night, while continuing this work, and found some useful information. (It hasn’t help me solve the problem, but it seems that Khan Academy doesn’t really follow the OAuth flow, which explains why the Google script tools for don’t work.)

20% what are the other 80%?

Khan Academy is great for practicing standard exercises, to make sure you can do calculations on a lot of things between negative numbers and derivatives to polynomials. It is not so good when it comes to learning how to analyze and solve problems closer to real-world scenarios (but there are some exercises that go a bit in that direction).

Khan Academy doesn’t deal with things like describing mathematical concepts, talking mathematics, making clear and concise solutions to mathematical problems, or knowing how/when mathematics is useful outside of school. These are all things the Swedish curriculum states that we should take into accound when setting grades.

Khan Academy has some great videos for a lot of these things – but the class performance overview doesn’t really help here. :-/

I d love to get a copy of your syllabus. Ok in Swedish . Include your email if possible . Thanx.

(It seems there’s a maximum nesting levels for comments, so I’m answering here.)

Awesome!

When looking for the links, I found that the version of the curriculum/syllabus in English too! You will find them here:

http://www.skolverket.se/polopoly_fs/1.191466!/Menu/article/attachment/Curriculum.pdf (General goals for the upper secondary school)

http://www.skolverket.se/polopoly_fs/1.174554!/Menu/article/attachment/Mathematics.pdf (Descriptions of goals and grading criteria for courses in mathematics)

I have worked quite a bit with the latter document, trying to make them less abstract and easier to understand for both me and my students. Let me know if you’re interested in that as well.

I’m sending you an e-mail with these links, so you’ll get my address as well.

At last, at last, I have a script that can connect with Khan Academy.

To solve this, I used John Kristian’s JavaScript library for OAuth, and embedded it in my custom code. (http://oauth.googlecode.com/svn/code/javascript/) I still can’t use OAuth straight off, but I can use call the parts I need and make useful things happen.

Thanks John Kristian for this code. It saves me countless hours.

The resulting code is found on GitHub, as usual: https://github.com/Itangalo/studentmatrix (Again, remember that I’m very new on JavaScript. It’s ok to laugh.)