Skip to content

An open letter to Google on how to enhance computer science teaching

June 25, 2011

Dear Google,
I guess if I really wanted you to read this, I should use blogger, but I’ll give this a shot.

First, I want to congratualte you for hiring Phil from Broken Airplane. This is a great move, and you’re bringing an awesome educator to your campus who will do great things.

Now I want to talk about how we can achieve a vision that sets a goal of having students graduate with an understanding of computational thinking.

You have the power to significantly transform how computer science is taught around the world. Here are few stories to get you thinking about this. I’ve got an iPad, and it’s awesome, but for the most part, it’s all about consumption. Sure there are a lot of great apps comping out that let me draw, paint and write, but there isn’t anything that lets me program. Imagine the power of giving a young child a tool that allows him/her to begin to explore the world of computational thinking to program the iPad to do things, right on the iPad itself.

Not a fan of iPads? I know. Most people think you should program on a real computer. Great. Have you tried to take a complete novice and show them how to do this? Just try python—the first thing I see when I go to their website is 7 different versions of python—egads! You shouldn’t have to download, install and muck around with a bunch of software just to be able to write a program. This is especially important because at many schools, computers are locked down in such a way that students can’t install new applications, and so that 8 year old who wants to try out programming by installing scratch is mostly stuck.

Here’s where you come in. You guys are the “cloud” people—you’ve created Google docs, which has had a huge transformative effect on education. When you got fed up with old browsers like IE 6, and users who couldn’t upgrade it because of IT restrictions, you actually created a Chrome Frame to run inside IE to give the user the experience of a modern browser. You’ve also got the Google app engine, which lets developers create web applications that run on your server.

Here’s my idea. When a student wants to learn to program in a language, say Python, they would just go to google apps, and open up a code window, just like they might open a spreadsheet today. They can start programming right away, and when they run their code, you’d actually execute it on your servers, and display the output right there for the users to see. This would be incredible for student learning since there would be nothing to install, and students would get the thrill of literally programming applications to run on Google’s servers. This would be the perfect compliment to Google Code University.

I teach my students how to program visual models of physical systems using vpython. My students love this, but getting over the hurdles of installing python and then vypthon, can present a hurdle, and I imagine for some students and teachers, this hurdle can be insurmountable.

Ok, I’m not a computer scientist, and I’m sure there are a ton of reasons why you could never let random users just have willy nilly access to be able to execute whatever program they wrote in python on your servers. But I don’t think these problems are deal-breakers. I’m sure you guys can figure out how to create a safe enough sandbox this purpose that will keep malicious programs from doing any real harm. I mean, next to getting cars to drive themselves, this problem seems pretty easy.

If you can pull this off—think how big it would be. Now anyone, who simply has access to a web browser can learn to program. Even the kid who has to go to the library for internet access can begin to experiment.

13 Comments leave one →
  1. June 25, 2011 11:36 am

    Thanks for the shout out, and for immortalizing my misspelling of Dan Meyer’s twitter handle!

    I am glad you and I are on the same wavelength (pun intended). I have talked to them about this kind of thing and they are interested. They have brought me on board to correct the gap between the cool things they have and the limitations that teachers and students encounter (like IT policies).

    Luckily, my position is interdisciplinary so I will be collaborating with multiple divisions within Google to bring an amazing 21st century education experience for students.

    As I said, I look forward to your posts as I feel they could be spoken about my class and pedagogy. Your passion for projects and pedagogy is refreshing and it is so nice to have a community like this that we can get inspired and refreshed. When I started down this journey years ago, there were few thinking and creating like we are (plus there was no Google!) and now the community is exploding with blogs, conferences, TED talks, etc. I cannot wait to see what is in the future for all of us and I hope to contribute as much as I can.

    Oh yeah and thanks for posting about my friend Allison (@infinigons) she loved the rock star feeling of being referred to in your post (https://quantumprogress.wordpress.com/2011/06/22/maybe-the-twitterblogging-department-needs-its-own-journal/). Our colleague Kyle who brought up the question in the first place said he got it from the Putnam Problems, he is a joy to work with. Sigh, I will miss our math department.

    • June 25, 2011 11:17 pm

      Phil
      Your work sound so awesome. I hope that you aren’t two bound up Google’s NDA too keep us updated as to how things are going.

  2. Emily permalink
    June 26, 2011 7:05 pm

    I happen to have a friend who works at google, and I forwarded your post to him and he said, “that sounds dead easy – surely we’ve done that already” and then gave me this link to a demo of a python shell in an app engine:

    http://shell.appspot.com/

    • June 26, 2011 8:17 pm

      Emily,
      First, thanks so much for passing this on to your friend at google. That’s awesome! Second, this looks great—I’ve seen the google app engine before, and need to do a bit more to explore it to see if we’ll be able to do our vpython coding in it (it would be awesome if we could). Also, just playing around a bit, I think there is some work google could do to make it a bit more friendly to the novice user, but still, it looks like an awesome tool.

  3. foo bar baz permalink
    June 26, 2011 7:28 pm

    Fair thee well:
    http://shell.appspot.com/

  4. June 26, 2011 7:28 pm

    Great post! You probably already know about this, but there is an online code execution environment similar to what you mention called ideone. Take a look at the python version; they support about 40 languages. http://ideone.com/ is the link – one of the interesting things they have are samples of code in many of the languages they support.

    • June 26, 2011 8:17 pm

      Ben,
      I didn’t know about this. It looks great—I’m wondering if it can handle multiple files or uploading modules. I’ll definitely check it out.

  5. June 28, 2011 12:14 pm

    Yeah there are people already working on this, although not so much for kids/students – more for professional programmers, hobbyists, highered students, or artists.

    Search for ‘browser-based IDEs’ for example. There is stuff like processing.js, kodingen, cloud9 ide, and so forth. Here’s one processing.js browser-based editor, for example: http://sketchpad.cc/

    Python isn’t the best language for beginners and kids. Scratch is more appropriate, and people are working on browser-based blocks programming IDEs, but unfortunately most of them are done in flash, not HTML5. Waterbear is done in html5, but it is still very rough and early in development: http://waterbearlang.com/ Another that was proposed is called designBlocks.

    I and others are working on alternative languages, too, that compile down to javascript, since javascript, like python, isn’t for everyone either: https://github.com/jashkenas/coffee-script/wiki/List-of-languages-that-compile-to-JS

    See also http://www.playmycode.com/ and http://pixieengine.com/ which let you create games from within your browser.

    And sites like http://jsdo.it/ and http://jsfiddle.net/ that let you code basic javascript/html/css in your browser.

    • June 28, 2011 10:08 pm

      Doug,
      Congrats on being the 1000th comment on my blog!

      I think you are right—the problem is almost none of these environments are designed for the begninner. All of them assume a level of understanding of computing/instruction following that is beyond many students and unnecessary in my opinion.

      I’ve seen a few browser based IDE’s before, but I’m really looking of r something that will run python, which is the primary language I use, since there are already tremendous resources for using it in the physics curriculum, including the Matter and Interactions text, and the newly created phyutil module. i also think it’s totally manageable as a first language for high school students. Scratch is great, but I don’t think my students would find it all that appealing.

  6. June 30, 2011 1:17 am

    Python is a good choice for high-school students, but I wouldn’t write off their willingness to learn Scratch, nor the cool things you can do with it. Scratch provides an excellent environment for simple (high-school level) simulations. I taught Scratch to one group of mixed middle-school and high school students, and the high schoolers started out dubious, but ended up the most enthusiastic.

  7. July 10, 2011 3:25 pm

    Yesterday I found this page describing how a stanford professor is finding a way to xecute CS101 code in the browser using HTML5—this is incredible. You’re using tiny programs to do amazing things and it’s exactly what I’m talking about. Now if only you could do this with vpython code…Imagine putting this in an online text.

    • July 12, 2011 11:05 am

      Here’s an even better example of what I’d like to see, at least for my purposes. This was put together by Bruce Sherwood, author of Matter and Interactions. This was done by rewriting a pretty classic vpython program in javascript and running in javascript using WebGL. Still, I’d like two things: 1. being able to use packages like phyutil, which I think will be essential to teaching physics with vpyhton in the near future, and 2. being able to write code in python, rather than having to translate between javascript and python.

      • July 12, 2011 2:51 pm

        Your “better example” gave me “Error: PANIC: unknown operation undefined ({_tail:(void 0)})”

        I think that is a good example of why browser-based programming environments are not so good: debugging tools are terrible and different browsers are likely to interpret the code differently.

        I think that you are better off sticking with vpython for the next few years.

Leave a comment