Schedule


 Deadline Id Pts Assignment Method of Submission
 Jan 16java 10Set up an environment for developing Java programs. See Java for instructions.


Commit your hello project to the Subversion repository that I provide to you.  Send me an email stating that you have completed the assignment.
 Jan 22 http 10Implement a single threaded Web server that displays the messages sent to it by connecting Web browsers and returns the string "Hello" for every incoming request. Read HTTP for instructions.Commit changes to your hello project to your Subversion repository.  Send me an email notification.
 Jan 28threads 10Extend your Web server so that simultaneous incoming requests are handled in separate threads.  Read Threads for instructions.Commit changes to your hello project. Send me an email notification.
 Feb 3gae 10Read What is Google App Engine.

Complete the tutorial Getting Started: Java, resulting in a deployed guestbook application.  (You do not need to do the section Codelabs for Getting Started in Java.)

IMPORTANT: if you are using the most recent distribution of Eclipse (Juno), then the update URL to use for installing the Google plugin is the following:

https://dl.google.com/eclipse/plugin/4.2

Also, set the JRE version to 1.6 when creating your Eclipse Web Application Project.
Post a link to your deployed guestbook application to the CSE 405 Winter 2013 Google Group.  Do not commit your project into your repository.
 Feb 9bstrap 10Read Bootstrap and create a new Java Google App Engine project called app that illustrates responsive design with Bootstrap.Name your project app and commit it to your Subversion repository.  Post a link to your deployed application to the CSE 405 Winter 2013 Google Group.
 Feb 15ajax 20Read and do Ajax.

If you are having trouble with this assignment, you might want to watch the following videos that I recorded.

These videos cover material that you need to understand in order to do the ds assignment.
Commit changes to your project.  Redeploy your application and post a link to it to the CSE 405 Winter 2013 Google Group.  It should be the same link you posted for the previous assignment.  (From this point on, you will re-post the same link to the group for each assignment you complete.)
 Feb 21ds 30Read and do Datastore.

Related lectures:
Commit changes to your project.  Post a link to your re-deployed app.
 Feb 27style 10Refactor the HTML, CSS and Javascript within your project so that your source code adheres to the following 2 style guides.
All new code written in this course should adhere to the style guides covered in this assignment.
Commit changes to your project.  Post a link to your re-deployed application.

You are welcome to modify items within the Google style guides.  In this case, document all changes in a Web page that you add to your deployed application and provide a link to that when posting your application link. 

Also, use the CSE 405 Google group to discuss changes to the style rules that you are considering for your project.

 Mar 4number 30Extend your application to let each user manage the value of an integer associated with their username (their personal number).  The personal number for each user should start at 0. Provide each user with the ability to increment and save their number by clicking buttons.

On the home page of the application, users see the admin message and the largest number in the system (across all users).  This is shown whether the user is logged in or not logged in.

If the user is logged in, they also see the user-wide largest number, their personal number, a button to increment their personal number, a button to save their personal number, and a logout button.

If the user is not logged in, they see a login button and the largest number across all users; they do not see the increment button or the personal number.

All new code should adhere to the style guides covered in the style assignment.

Supporting videos:
Commit changes to your project.  Post a link to your re-deployed app.
 Mar 10 local 20Modify your application so that the user manages a personal string that is displayed in the app when the user is logged in. Store the value of this string in HTML5 local storage so that it can be loaded into the app when the user returns to the app after restarting the browser.

Note: this problem would be complicated to solve if the string placed in local storage is associated with a user account.  This would enable a user on a single computer to log into the app with different accounts and see different values stored in localstorage.  However, you do not need to do this for this assignment.
Re-deploy your app and commit changes.  Send me an email stating whether you have the application working or not.
Mar 16secure 20Read and do Secure.

Supporting video:
Re-deploy your app and commit changes.  Send me an email stating whether you have the application working or not.  Include in your email the code for the 2 malicious code test cases.

If you worked on the optional clickjacking problem, let me know.
 Mar 22 apis 20Study the documentation on the Google Drive API.  

Provide the user with a "write string" button that when clicked stores the string from the previous assignment (local) into the user's Google Drive cloud storage. Provide a "read string" button that does the opposite: it retrieves the string from the user's cloud storage, displays it and writes it into local storage (overwriting whatever is in local storage).

Here is my experiment to see one way to store JSON data into the user's Google drive storage.

Supporting video:

March 13, 2013 Lecture

Daniel Urbach provides the following feedback on this assignment: 
 

Updating the file on the Drive with another file is as easy as changing "POST" to "PUT" in the gapi.client.request header, and adding the fileID of the original file to the end of the URL in the header.  I used your example from github and made these simple changes and that is all it took.

Re-deploy your app and commit changes.  Send me an email stating whether you have the application working or not.