Web Programming 2010

Web based software development is one field which sees massive innovation. In the 90's most websites were static websites. These were soon replaced by dynamic websites which were backed by databases and developed mostly in Perl. Since then several languages (Java, Python, PHP, Ruby, etc) and frameworks (Struts, JSF, Django, Rails, etc) have become prevalent for web programming. These take a lot of the boiler plate tasks away from the developer, thus making it possible for the developer to focus more on the business logic.

We have also seen an increasing use of Javascript, CSS, AJAX, and now HTML5.

When we make a web based software, we normally do it in a particular language and use libraries and frameworks available for that ecosystem. I plan to use Java for this course. However, I feel that working with just one language is not good enough now. We often have to work with software that is already written, or we may need to port existing code into another platform. PHP is a language that is very widely used for web development. For the purpose of at least becoming familiar with another language and platform, I will do some projects in PHP as well.

If you want to host your own websites, it is very important to understand the basics of hosting, such as domain names and IP addresses, DNS servers, host records, and some basics of cloud computing. Websites we deploy, will be open to the public and to malicious attacks. Hence it is important for a developer to understand the basics of web security. I will also cover these in my course.

Last but not the least, good and sensible UI design is extremely important in making a website usable and popular. This too will be covered in the course.

Main topics that will be covered

  • Understand the basics of web based development (Request/Response cycle, HTTP Headers, MIME types)
  • Client technologies (Javascript, CSS, HTML5, AJAX)
  • Configuring and deploying a webserver (Apache, Tomcat, Jetty, JBoss)
  • Making a simple, database backed, rich client, web application
  • Managing scale (in terms of concurrent users, database calls, and database size)
  • Web services (includes basics of XML, REST and SOAP, and deploying web services)
  • Securing your website

Resources

There are several resources available in the form of open courseware, web sites, and books

*