Putting the magic in the machine since 1980.

Friday, May 6, 2011

A Webapp for Turning in Programming Homeworks

Since I had to grade about 20 programs every week and since these howeworks were webapps themselves that would be posted on some website that I could test, I figured that best way would be to have a pastebin-like app that allowed me to view all submitted homeworks. No such thing existed so I built one and called it i-am-done.

I used it last semester and it works very well. I allows one to:

  1. create a class, and homeworks for it, giving each one a due date,
  2. get a simple URL to give students for turning in programs for that homework,
  3. view all the submitted howeworks for each student, in nicely colorized code thanks to prettify,
  4. students can upload and delete any number of files associated with a particular homework but, of course, they can't see anyone else's homeworks.

It is like a paste-bin where only the person that created the class can see the code pasted under that class. I have placed the code here in case someone wants to make a fully featured system out of it. I would loooove to see that.

Web Applications: An Undergraduate Class

Yet nother semester of teaching web application development has passed. This time, finally, I had a significant number of students (30) signing up although, after it became clear this was a programming class, fewer (17) remained. This is to be expected as programming takes time and not everyone has the means.

A few interesting tidbits I found.

  1. Most undergraduates know little about web technologies. I kinda assumed that because they grew up with the web that they would know the difference between a GET and a POST, but no. There is a large knowledge gap to be filled in. Luckily, these are easy things for them to learn.
  2. There is a steep learning curve to developing modern web applications, and it keeps getting steeper every year. A lot of complex technologies that must be mastered: HTTP, HMTL, CSS, JavaScript, Databases, Ajax, jQuery, JSON, Cookies, Firebug, functional programming, REST, event handling, asynchronous lambda functions, the browser's loading orders, etc. (oh, and Python) One semester is only enough time to introduce a student to most of these, but not all, and mastery will require more time spent programming than is afforded. Still, a lot can be learned in one semester.
  3. I am sure some hated that we had 13 weekly homeworks, each one a significant programming project, but there really is no other way to learn all this stuff. It is one thing to read about Ajax, actually implementing a webapp that does it is a completely different matter.
  4. Its all about the JavaScript: Facebook moved to a JavaScript SDK in their platform, Google is using JavaScript as glue to for their 'apps enterprise', and node.js has gotten really popular. With jquery and firebug (or chrome developer tools), JavaScript is a lot of fun to learn and debug. However, its tricky to figure out the timing on how various parts of a page are loaded by the browser and, even harder, how to decide what code goes in the server or the browser, not to mention JavaScript's many many quirks.
  5. The google app engine works as a learning platform. It is minimal, reliable, and on the web (not on the student's laptop) so we all can see what we all have done.

Onward.