Tuesday, November 1, 2011

Problem Set 8 - Documentation & Retrospective

So far in this course we have built things and in the process understood various aspects of how to build web applications.

If we want users to actually use our application, we must provide them with a manual or at the simplest a "how it works" page.

The process of coding is the best way to learn software engineering, and very often we learn just as much by making mistakes as we do by getting things right.

pset: Create a help page for your application. Then take a step back and write about what you learned, what mistakes you made, and a future roadmap for your application.

Learning Objectives:
  • Understand how to create a simple and effective help page
  • Understand how to learn from your mistakes
  • Understand how to communicate your ideas (technical or otherwise) in writing
  • Understand how to create a product roadmap

Problem Set 7 - Social

In the previous problem set, we learned how to secure our web application. In this problem set, we will integrate our application to the social web.

pset: take the application you made in problem set 6, and integrate it with one or more social applications, such as Twitter, Facebook, Google+, etc.

Learning Objectives:
  • Understand the meaning and importance of the social web
  • Understand the meaning of web api's and how to integrate with them
  • Understand how we can create value for our users by utilizing the social web

Problem Set 6 - Security

In the previous problem set, we learned about scalability. In this problem set, we are going to learn about security. Since our application will be deployed on the open Internet, it is vulnerable to all sorts of security exploits. In this problem set, we will learn about common security exploits and how we can protect our application against them.

pset: Take the application you created in problem set 5 and add user management and authentication to it. Then try to make commin security exploits on it. Now understand what you can do to protect your application against such exploits.

Learning Objectives:
  • Understand user management, authentication, user roles and other related concepts
  • Understand the common security exploits possible for web applications
  • Understand how to protect your application against them

Problem Set 5 - Scalability

In the previous problem set, we took the application we had developed in problem set 3, and made it more usable. In this problem set we will learn how to create scalable web applications

pset: Take the web application you have with you in problem set 4, and make some requests to it. Measure the time it takes for the application to provide responses. Now seed it with huge data, and again measure the time it took to make responses. Did the response time suffer? Try to make it faster by tweaking your queries. Now try to make it faster by adding a cache. Next simulate thousands of users accessing your application at the same time. Does the response time suffer? Can you make it faster?

Learning Objectives:
  • Understand the notion of scalability
  • Understand how data and queries affect the response time of an application
  • Understand how we can make the application faster by using a cache
  • Understand how the number of simultaneous hits can affect the response time of an application
  • Understand how we can use clustering to improve the response time
  • Find out if using a no-sql database will improve the scalability of your application

Problem Set 4 - Usability

In the previous problem set, we created a simple multi-user web application in which we learned about concurrency and how to avoid problems related to concurrency.

A good web application is one which is not only technically sound but also aesthetically pleasing, and offers a good user experience.

pset: In this problem set, we will take the application made in problem set 3, and understand how to make it more usable

Learning Objectives:
  • Understand the notion of usability
  • Understand some common usability design patterns
  • Learn how to make your web design aesthetically pleasing
  • Learn about the importance of clear error messages
  • Learn about the importance of internationalization and how to accomplish it in your web framework

Problem Set 3 - Simple multi-user application

In the previous problem set, we created a simple database backed application. We learned, why dynamic applications are better than static ones, and how databases can help us build dynamic web applications.

Now that you have a basic understanding of dynamic web applications, let us start tackling some complex issues. Most web applications are made to be used by multiple users simultaneously. This creates all sorts of concurrency related issues. Think of an airline reservation system. Imagine user A goes to the website to make a reservation and is looking at the available seats. By the time user A decides which seat they want to reserve, user B comes about and reserves that seat. However user A may not yet know of this. It is important that the system does not allow user A to re-reserve that same seat.

pset: In this problem set you can make any kind of a multi-user reservation system. For this exercise, you have to select a web framework on the platform of your choice.

Learning Objectives:
  • Understand concurrency related issues in multi-user web applications
  • Understand how the database and application server handle concurrency
  • Understand how web frameworks help us with the flow of a web application
  • Understand how web frameworks help us with templating
  • Understand what are database transactions, and why we need them
  • Understand how to design a complex data model, which consists of relationships between tables
  • Understand different types of SQL joins and the pros and cons of using them

Problem Set 2 - Simple two page database backed application

In the previous problem set (pset 1), we created a simple single page web application. This was a static application, because the data could not be changed.

Real world apps are dynamic where the data changes depending on user activity, or external systems. The question is where will we store this changing data. We could use the file system, but a database is a far better place to store the data.

pset 2: In this problem set, we will create a simple 2 page application.

  1. contact book

Learning objectives:
  • Understand why we need a dynamic web application
  • Understand why a database is the best way to store the data
  • Understand the features a database provides (ACID)
  • Understand how we connect to the database from our application
  • Understand the concepts of UI templates where we will fill in parts with the dynamic data
  • Understand page flow
  • Understand how to create a simple data model
  • Posting data (HTTP GET & POST)
  • Deploying a database backed application