How to use Google App Engine in Education
I had a talk at the LOK 2009 (Linux in Education) conference about Google App Engine. In the presentation I gave an overview about the App Engine itself:
- The general architecture.
- The Python runtime.
- A very brief introduction into the data store.
- A demo application to show some of the features.
At the end of the presentation I showed a very basic message wall application. It is online at: http://lok-2009.appspot.com.
The slides and the source code are available here (the code is in English, the slides are in Hungarian).
Read on for more details.
I also talked about how the App Engine could be used in education, mostly concentrated on high schools.
There are several challenges one has to face when trying to teach programming to high school students:
- General ignorance: most high school students simply don't care.
- Traditional methods are based on teaching the syntax of a specific language (usually Pascal), and some basic algorithms like ordering in arrays, linked lists, computing square root ... etc. These topics are simply boring to anyone, except those, who already learned it outside the school. So they are bored as well....
- Another method of teaching programming is to use a desktop database application, like MS Access, and create some simple data driven applications. Still boring to most of the students...
- Most example programs that are presented in this manner are oversimplified. The programs omit error handling, use of comments, or even formatting. Testing is never mentioned. This simply teaches bad programming patterns.
In my opinion the key answer to these challenges is to teach something that is interesting to students. Most high school students spend most of their "computer time" on the Web: social networking sites, forums, chatting, or simply browsing. They know this envionment on the power user level already. We could leverage this knowledge and interest to teach programming.
And here comes App Engine into the picture....
Why is Google App Engine a good platform for teaching programming?
- It is a complete environment. Development tools and deployment environment are available for free to all students.
- It enables students to create and share web applications.
- App Engine is specifically suited to create mashups. Combine existing web applications into something new. Creating mashups take much less effort than implementing something from scratch, yet the result can be just as pleasing to the users and the developers.
- App Engine is also suited to create OpenSocial applications. Most students are already on at least one social network. Now, they can create applications for their own daily use. There are not many greater motivations than building something for your own use.
- App Engine provides many tools, but not too many. Also, in order to use it efficiently, you have to use the right patterns. App Engine is less forgiving about bad patterns than your regular development environment. You have to constantly be aware about your limits (quotas), and design your applications accordingly. There are many junior developers, fresh out of college, who never had to think about scalability issues, or the hidden costs of their design choices..
Of course, I have no illusions: Most students still won't care.
But at least those, who are interested in programming will have learned something useful. They can start building applications that they can be proud of. Their knowledge will already be a value on the market, so they will find better summer jobs / internship positions.
Now, that Google released the Java Runtime for App Engine, the question is inevitable: which language should one choose: Python or Java.
Personally I like both languages, have used them both in real projects. For teaching high school students, I think Python is better suited for the following reasons:
- Less things to learn. You can bootstrap a Python application in a few lines of code. With Java, you have to teach about servlets, war files ... etc. just to get a hello world up and running.
- Dynamic language. For the small applications the students will create the more compact syntax of a dynamically typed language is easier to use in my opinion.
- Python syntax. This is perhaps the most controversial thing about Python. And probably the most people only know this much about the language: The language without braces. Where you have to indent code.In my opinion, if a student learns a good habit (well kept coding style) early, he will use it later on as well. We all know how hard is to crush bad habits out of our system.
In case of college students, both runtimes should be included in the courses, because they have to be able to choose the right environment for their future projects.
I would like to hear about your opinion regarding using App Engine as an educational platform. You may reach me here, or through the contact form on this site.