Web frameworks are software packages that facilitates the creation of dynamic web sites. Web frameworks help with processing HTTP requests and producing the responses, by (among other things):
There are many web frameworks, based on many programming languages. So why choose web2py.com? In my opinion, there are a few reasons for basing this class on web2py.
First, precisely because there are many web frameworks, chances are that the framework you will use when working in a company will not be the same framework you learned as a student. Since you will most likely need to learn a new framework anyway, it pays to learn a first framework that is pleasant to use, and efficient of your time, rather than worry too much about what is in use now.
The most common frameworks are based on the languages C++, Java, Ruby, PHP, Python, Perl. C++ is too low-level to constitute a good initial framework: development is slow, due to the low-level nature of C++ (and its lack of automatic memory management), and the need to compile the server application each time its code is modified. Perl has (again, in my opinion) horrible syntax, and the code people write in Perl has a tendency to be difficult to read by others (something that I, and my TA, do not appreciate). PHP is widely used (MediaWiki, for instance, is written in it), but is in my opinion a language of the past. PHP has poor implementations of array/lists and dictionaries, and generally is a more archaic language, with fewer packages, than Python, Java, or Ruby. Ruby is a serios contender, and Ruby on Rails is widely used. However, Ruby is useful mostly only in web development, while Python or Java are useful much beyond the web: if students need to learn yet another language, I felt they would be better served in the long term by learning Python or Java rather than Ruby. Java is a wonderful language, and some Java frameworks, such as GWT, are very interesting indeed. However, Java is more verbose than Python, and in a 10-week class, I felt there would be an advantage in using the simplest, most concise language available. Python is concise, powerful, and easy to read.
So Python it is. Which Python framework, then? There are many good ones; my personal favorite in this moment, for my own development, is probably Django, which comes with great documentation, and is a good balance between being conciseness and flexibility. But for a class, web2py is better. First, web2py makes it easy to package applications, send them to someone, load them, and run them. This greatly simplifies the submission of homeworks, and the evaluation of the progress of projects. Second, web2py is very simple to install, and gets students up and running in a minimum of time. Third, web2py comes with many extensions and apps that help integrate it, for instance, with OpenID, cloud services, and more. Fourth, web2py makes deployment easy, and has a very good compatibility with Google App Engine, which in my opinion is a very useful and very interesting deployment option. Web2py also has some drawbacks. I find it harder to customize than Django, and forms (and SQLFORMs and similar, in particular) do too much automatically, and make it difficult to achieve the degree of control I like to have when developing. But overall, web2py is the best option for a class.