CS145 - Spring 2002
Introduction to Databases
The project for CS145 this spring is brand new. Although you will be using the Oracle database system and building a database application as in past offerings of CS145, just about all the details have changed. While we expect the new project to be more fun and rewarding for the students, on the first time out the road is bound to have a few bumps - please bear with us.

Support Materials

AuctionBase Overview
Your project is to build an online auction system called AuctionBase. At the back-end, AuctionBase manages all of its data in the Oracle database management system. At the front-end, AuctionBase provides a friendly Web interface to its users. AuctionBase is modeled roughly after the eBay online auction system. In fact, we will give you a considerable amount of real data downloaded from eBay (courtesy of the University of Wisconsin) to initially populate your AuctionBase system.

We will expect certain minimal functionality in each AuctionBase system - beyond that, the sky's the limit. Minimal functionality includes a variety of queries and browsing capabilities over the current items up for auction, the bids on those items, and the sellers and bidders. AuctionBase also must provide a means for entering bids, and for concluding auctions on individual items. Various integrity constraints must be monitored. Although AuctionBase uses the Oracle DBMS and therefore has transaction support, multi-user issues are not a focus of the project, at least this time.

At the end of the course, there will be a "contest" in which we select a few of the best AuctionBase systems to be demonstrated in class and linked to the course home page. Winners also will be invited to enjoy lunch at the Stanford Faculty Club with Prof. Widom, the TA's, and the other contest winners.

Programming and System Issues

To develop the project all students will use the Oracle relational database management system (Oracle 9.01 server, 8.1.7 clients) and the Unix operating system. You will try out Oracle's sqlplus interactive interface, its PL/SQL proprietary programming language, and several other features. For the Web front-end and interacting with Oracle, students may choose between two options. One option uses the Java programming language, Java Servlets, and JDBC. The other option uses the C and (optionally) C++ programming languages, CGI scripts, and Oracle's Pro*C. (Prior experience with Web-based programming is not necessary for the course - we will provide help sessions, handouts, and sample code.)

There are many other ways to develop Web applications, and even to interact with Oracle. Students are welcome to use alternative languages and tools if they wish, however only the languages and tools discussed above will be supported by the course staff, and the specifications for the project must be met regardless of the languages or tools used. The project also includes processing of XML files. We will provide XML parsers in C++ and Java, but again students are welcome to use other tools or languages if they prefer. Important note: Students using alternative languages and tools must be able to submit all of their code using the standard submission procedure, and their code needs to be able to be run and checked by the TA's with no additional effort over those projects implemented using the supported languages and tools.

Oracle, C, C++, and Java are available on the Sun Solaris workstations on the second floor of Sweet Hall, e.g., the saga, elaine, and myth machines. To open an account on these machines, type open at the login: prompt and follow the instructions. SCPD students can access the Sun workstations remotely. If you have access to an equivalent Oracle system (version 8 or higher, including PL/SQL and Pro*C or JDBC), you may use it instead of the Stanford system. However, we do expect you to use Oracle and not some other DBMS - not because we love Oracle, but because we can support only one DBMS, and we will be exploring some specific capabilities of this system. If you choose to use your own workstation and/or your own Oracle system, please be aware that we cannot make any exceptions for problems incurred by using your own computing facilities rather than those provided by Stanford.

We will assume that students are proficient already with Unix, and with either the C and C++ programming languages or the Java programming language.

Project Parts and Due Dates
The AuctionBase project proceeds in six parts, which are assigned and detailed as part of the relevant weekly assignments.

The project may be completed individually or in teams of two, the choice is up to each student. A number of important issues and ground rules apply:

Honor Code: Programming Work
Note that a similar discussion of the Honor Code as it pertains to written work is provided in the Assignments page.

Under the Honor Code at Stanford, each of you is expected to submit your own original work, or the original work of your two-student team in the AuctionBase project. On many occasions it is useful to ask others (the instructor, the TA's, 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 a violation of the Honor Code. 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.

The course staff will be using plagiarism detection software to ensure that students are working individually or within their teams. We will pursue aggressively all suspected cases of Honor Code violations, 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 Honor Code violations, please discuss your concerns with the course staff immediately.