CS144 Project

Project Overview

Your project is to build a Web service and a Web site that allow users to search and navigate eBay bidding data. Your system manages all of its data at the back-end in the MySQL database and supports browsing and searching interfaces over the Internet. These functionalities will be provided by integrating MySQL, Apache Tomcat, Lucene and Axis2 packages. We will also give you a considerable amount of real data from the eBay Web site in XML format to populate your system.

All parts of the project should be done either individually or by a team of two students.

System and Programming Issues

In order to minimize the installation and configuration hassle, we will be provide a "virtual machine" image based on Ubuntu Linux that has all necessary software packages preinstalled. In order to run our virtual machine image, you will need a fairly-equipped machine, with at least 1GB of main memory and 7GB of free hard disk space.

The vast majority of the project development will be done in Java. While there are many other ways to develop Web applications, Java is one of the most popular methods used in the enterprise setting for server-side projects, so we want our students to get familiar with the language. Students will also have to do a fair amount of Javascript programming to develop "Web 2.0"-style user interfaces for a later part of the project.

We will assume that students are either proficient with Java already or able to learn it quickly. For those of you who haven't done much Java programming before, please note that the syntax and the programming model of Java is very similar to C++. As long as you are a proficient C++ programmer, even without much prior Java experience, we expect that that you can finish the project in a reasonable amount of time. We will provide the tutorials and links to relavant materials as the project progresses.

Project Parts

Tentatively, we plan to break the project in five parts:

Part 1: System setup and warm-up (10%)

In this part, you will have to set up a provided virtual machine on your computer, which will be the main development and testing platform. Once your virtual machine is setup and running, you will have to interact with MySQL to populate data and query them. You will also have to implement a simple Java program to brush up on Java programming.

Part 2: Data transformation and loading (25%)

You will be given a large volume of real data from the eBay web site in XML files. You will examine the data and design a good relational schema for it. You will then write a Java program to transform the data from its XML form into MySQL's load file format, conforming to your relational schema. You will create your schema in the MySQL database in the virtual machine, load your transformed data, and test it by running some SQL queries over it.

Part 3: Building auction search Web service (25%)

You will need to provide a SOAP-based Web service interface that allows users to search and retrieve auction items in the eBay data. Your Web service will support queries both on numeric attributes (like price) and textual attributes (like product description) and allow simple keyword-based searches on textual attributes. To support keyword searches, you will need to build inverted indexes using Apache Lucene. You will also use Apache Tomcat together with Apache Axis2 to make your search interface available as a Web service.

Part 4: Building auction search Web site (25%)

You will build a Web site that allows users to browse and search items within the eBay data. The Web site will be constructed by integrating three Web services, the eBay Web service that you built in Part 3, Google Map service to display the location of auction items and Google suggest service to help users formulate queries. You will have to learn Java servlet programming for Apache Tomcat and have a chance to learn AJAX-style programming to build dynamic Web user interfaces.

Part 5: Enabling secure access (15%)

You will update your Web site such that the site is secure to use even when you transmit sensitive information.

Late Submission Policy

To accommodate the emergencies that a student may encounter, each student (or team) has a 4-day grace period for late submission to use throughout the quarter. The grace period can be used for any part of the project in the unit of one day. For example, a student may use 1-day grace period for part 1 and 2-day grace period for part 3. Any single project part may not be more than 2 days late. Note that the grace period can be used in the unit of one day. even if a student submits a project 12 hours late, he/she needs to use a full day grace period to avoid late penalty.

Once you run out of your four day grace period, you have to contact course staff in advance to get an approval for having a "special-case" grace period. Otherwise, you will get a ZERO score for the delayed submission. For fairness, after getting the approval, you will still get an (accumulative) additional 20% off per day for using the "special-case" grace period, i.e. 20% off if using 5th day grace period, 40% off if using 6th day, etc. Again, any single project part may not be more than 2 days late.

Partners

Students may implement the project individually or in teams of two. The choice is up to each student, but please keep the following rules in mind when you select your project partner:

An identical amount of work is expected and the same grading scale is used for individual and team projects. Faculty experience indicates that in general it is not necessarily easier or more productive to work in teams of two - it's largely a matter of personal preference and working style. If you choose to work as a team, you are encouraged to make use of collaborative authoring tools for synchronizing your work and ideas, such as version control software (e.g. CVS, SVN, Perforce) and online document tools (e.g. Adobe Share, Buzzword, Google Docs).

If you work in a team, choose your partner carefully. Teams are permitted to "divorce" at any time during the course (due to incompatibility, one partner dropping the course, or any other reason), and individual students may choose to team up as the project progresses, however students from divorced teams may not form new teams or join other teams. Put another way, if a student turns in any part of the project as part of a team, every later part of the project must be turned in individually or as part of the same team.

Both partners in a team will receive exactly the same grade for each project part turned in jointly. We will not entertain any complaints of the form "I did all the work and my partner did nothing." Choose your partner carefully! Also, if both students already submited their Project X separately, they cannot form a team in the Project X. In other words, they are considered as two individual submissions in the Project X. Thus, any type of collaboration is still prohibited. If you might (or plan to) form a team in a project, do NOT submit your work to our system unless you made your mind.

If you work in a team, your work must be turned in jointly, as ONE submission. If we receive submissions from students in a team separatedly, they would get 10% off as a penalty. In addition, if the above separated submissions are different, the submission with a lower score prevails. Teamwork turned in as individual work will be considered as plagiarism and handled through official University channels.

Academic Honesty

Each of you is expected to submit your own original work, or the original work of your two-student team in the project. On many occasions it is useful to ask others (the instructor, the TA, or other students) for hints or debugging help, or to talk generally about programming strategies. Such activity is both acceptable and encouraged, but you must indicate any assistance (human or otherwise) that you received. Any assistance received that is not given proper citation will be considered plagiarism. In any event, you are responsible for coding, understanding, and being able to explain on your own or as a team all project work that you submit.

We will pursue aggressively all suspected cases of plagiarism, and they will be handled through official University channels.

If you have any questions about this policy or about the degree to which we will pursue academic honesty violations, please discuss your concerns with the course staff immediately.