Lab 1 - Getting Started/HTML

Due - Tuesday, January 29, 2008

The goal of this lab is to refresh your knowledge of HTML and get you started on the project you'll be implementing over the course of the semester. Each week (or sometimes two) you will implement a new component of a distributed, web-based eBook download service. By the end of the semester, you will have a working web site that enables a user to search for and download eBooks from his/her nearest mirror site, or upload books directly to his/her Google Docs. You will begin by implementing a centralized service that uses the RESTlet framework and an XML-based database of books. By the end of the semester, you will have a back-end content distribution network that replicates eBooks at several sites.

The focus of this lab is to design the HTML front-end for your site. You will write a set of web pages and make them available at www.cs.usfca.edu/~your-user-name/booksite. This means you will need to set up your site under /home/web/your-user-name/booksite.

You can visit Project Gutenberg to get a sense for where you might want to begin. Your site will not have all of the functionality of the Gutenberg site (e.g., the Advanced Search), and it can also be more aesthetically pleasing!

I recommend that you begin by downloading some eBook content to get a sense for the kind of data you'll be dealing with. You can either download directly from Project Gutenberg, or you can download my cached version of a subset of books.

Your site must support at least the following operations:

  1. Browse by author's last initial - Display all books authored by someone with the given last initial.
  2. Browse by title - Display all books with titles beginning with a given letter.
  3. Search by author's name - Display all books authored by someone whose name contains the search query.
  4. Search by title - Display all books with titles containing the search query.
  5. View details for a particular book - View details for a selected book.

It should be clear how your site will provide all of the functionality described, but you do not need to implement all of the functionality now. For example, if the user chooses to search, you could return a web page containing the text "Search Results" in lieu of the actual results. Moreover, you do not need to make all of the data available; you can simply add a few books by hand. However, please use real titles/authors from the eBook content. Points will be deducted from sites that have books with titles such as "Test Book" and authors such as "Test Author".

Please do not use a WYSIWYG tool to develop your site. I recommend that you keep your design as simple as possible, though you may choose to add additional functionality.

If you are particularly enthusiastic about this assignment, you might consider the following additions:

  1. Use Cascading Style Sheets (CSS) to help separate the content from presentation in your site.
  2. Implement a program (I recommend using Java, but that's not required) that will automatically generate the HTML for your site. Your program will automatically extract the titles, authors, and any other relevant information from the eBook content provided and generate the pages containing real content. Note, for a future assignment you will generate XML using this method and will likely be able to reuse much of this code.

Here are a few HTML resources:

W3Schools

HTML Goodies

HTML Code Tutorial

Due 5:30PM - Tuesday, January 29, 2008

  1. To submit this assignment, email me a link to your site.
Note: No portion of your code may be copied from any other source including another text book, a web page, or another student (current or former). You must provide citations for any sources you have used in designing and implementing your program.
Sami Rollins