Categories
Product Review

Web Development CS253 – Course Review

What it covers

Web Development CS253 is taught at Udacity, and has a free version and a US$150 version – which has in-class projects, coaching and code reviews, as well as a verified certificate.

The course covers all basics on web development, and you will develop a very simple blog and a wiki by the end.
It uses Python and Google App Engine, which I think are excellent choices for a course and require relatively little setup.

The teacher is Steve Huffman, which is one of co-founders of reddit. It is nice to have a teacher with such experience, although he does warn you several times that Google App Engine is new to him.

The official level of the course is Intermediate, which assumes that you can already program in Python.

I have done a lot of web development, but mostly way back (1999-2002), using Delphi CGI, which is fairly outdated. I am planning on doing an overhaul on some of the systems in my site, and the course seemed like it would be useful.

How the course works

The course, as usual for Udacity, is a series of videos on YouTube (almost always with subtitles available), with quizzes in the middle. Some quizzes are simple multiple-choice, and same use an online Python IDE where you can type, try your solutions and submit them.

You also have separate homeworks, which technically can be built on any web development language you want – all tests are made by accessing the URL you specify. The course is all taught using Google App Engine and Python, though.

Content

The first part assumes that you have no HTML or server practice. You can skip a whole lot if you already do.
Soon you will write actual simple apps, use databases, add access control, use JSON and use Memcached to allow for much larger scale sites.
There is some very interesting coverage on how things are scaled on reddit and Udacity itself.

Python

I have to say that I didn't like the idea of a language with significant whitespace. But having used Python in this course and others, I have come to really appreciate how clean it looks. It is also quite easy to use for web development, and I understand it has nice frameworks (such as django).

Google App Engine

Google App Engine is an interesting option for hosting that many large companies use. The big advantage is that scaling is much easier, specially if you don't have experience with setting up multiple servers and doing load balancing on bigger loads. It can do a lot of that automatically. And a big advantage for the course as well as trying it out is that it is free up to a certain point – which you are totally not going to reach at this course.

It has improved a lot over the years and now supports several languages, instead of just Python as when it started. There are also a whole bunch of services you can use, but you always have to be careful because everything comes at a literal cost.

You still have to take care not to be bitten by eventual consistency problems, and I have noticed wild speed differences in response time, including responses freezing for more than a minute while the server created an index for a datastore with a couple of dozen entries (!).

Homework Checking

I had some trouble with the homework checking, and the forums are full of similar complaints. Basically, sometimes the checker will just say the things didn't work, making it a major problem to figure out what you did wrong. In some cases, simply resubmitting after an error got a version accepted.

On some other cases, the system pointed out what it tested and failed, and then it was easy to correct.

Conclusions

I thought this was useful, and it was interesting to see how CGIs work on Python and Google App Engine. The course took me about 30 hours, including all videos and homework.

If you don't have web development experience or if you are interested in learning Python or how to use Google App Engine, that feels like time well spent. I am not sure if the paid version would be worth it for me – I don't really have any use for the certificate at this point, but the in-class projects and code reviews sound like they might be useful.

I am still not sure if I am going with Ruby on Rails for my site backend or Python, though. 🙂