The Final Project assignment for this class is to build a simple database-enabled website.
Specifically, build a simple website that interacts with a database. You will come up with the idea (for example, a Lost and Found site), plan the layout, design and build the database tables, write the HTML, and glue it all together. You'll demo your site in the last class meeting. You can use any tools you want, and the site can be anything you want; it just has to work by our last class meeting so you can show it off.
The phrase that will help you throughout the project is "keep it simple." Don't be afraid or ashamed of simple, and don't dismiss any of your ideas because you think they are too simple. A simple website that works is much better than one that's beautifully complex but doesn't work. The specific requirements for the site are easy to meet, and all you have to do to get an A on the project is meet those requirements. So be nice to yourself: keep your idea simple, and fight the urge to keep adding features to it, unless you're absolutely sure you have time.
You can use any tools you want to implement the site. In other words, the choice of web server, database, and language are up to you... whatever you feel most comfortable with.
You must be able to demonstrate the site in class on the last day of class. (See Developing and Hosting below for more details).
You must turn in your files to me, including any documentation (see homework), and the database, on a PC-compatible floppy disk (preferred), 100 MB zip disk, or CD-ROM, by the end of the last class.
The project must demonstrate the following:
The ability to insert data into the database, and acknowledge that the insertion was successful.
The ability to select data from the database, with the results sorted in some meaningful order.
The ability to update data in the database, and acknowledge that the update was successful.
The ability to delete data from the database, and acknowledge that the deletion was successful.
The database must contain at least 1 table with a minimum of 4 columns, one of which should be a Primary Key. If you use more than one database table, each table should have a Primary Key.
Optional for Extra Credit: Any of the following will get you extra credit:
Required Fields: If you have any required fields, test for data in them and notify the user if data is missing.
Error handling: Trap as many error conditions as you can, and print out a helpful message. "Helpful" in this case means something that will help you debug the problem, not necessarily a message that a user would consider friendly. For example: "An error occurred trying to execute this SQL statement: ", then print out the SQL statement that caused the problem.
Wildcard: Make use of a wildcard search somewhere in the site. A wildcard search uses the LIKE operator and the wildcard character (*) to perform an inexact match. For example, use a wildcard to find all products starting with the letter A.
Dynamic SELECT list: Use a SELECT whose contents are generated from a database table (for example, a list of U.S. states).
Part of the last class session is Show And Tell, where you will have about 5 minutes to show off your site to everyone. Regardless of whether your project is running on your class PC or on a remote site, we will access it from the instructor's computer at the front of the class, and project it on the wall, so everyone can see it.
You can build your site anywhere: on your computer in class, or at home, or at the office, or at a 3rd party ISP that provide database services. Examples of 3rd party hosts that provide these services will be given in class.
WARNING: If you use the classroom computers, be aware that their hard disks get zapped nightly, so it's up to you to use floppies or otherwise preserve your files. This is good practice anyway, no matter where your files are. The rule to remember about disk failures and lost files: it's not if, it's when it's gonna happen.
The requirement to keep in mind is that you must demonstrate your site at the Show And Tell during the last class.
Here are some ideas to get you started. Feel free to use one of these, a variation, or think up your own. (Remember the "s" word).
We will devote some class time to working on projects, but be prepared to work on it outside of class as well, since you may need more time.
| What | When Due | Description |
| Project Ideas | By Class 4 | Come up with 3 possible ideas for you project, and write 2 or 3 sentences about each one, just like in the Sample Project Descriptions above. You can change your mind later, but get 3 ideas down at this point. |
| Choose Idea | Class 5 | Choose one project idea, and make a picture sketch of the home page, to hand in at Class 5. The sketch doesn't have to be fancy, but it should show the following: (a) the boilerplate text, for example, My Guestbook, and field names like First Name, Last Name, and so forth, (b) form fields, (c) buttons. |
| Project Description Part 1: Functional Description |
Class 6
|
Choose one idea, and describe in more detail what it does. Include the following:
This is a hardcopy delivery. Treat it as if it were a real project you were doing for your boss or client. I am expecting at least 2 pages (1 of which is the sketch), but not more than 4. Turn in a copy, and keep a copy to which you will add Part 2 for the next homework (see below). Once you have done this homework, you should start working on your project, if you haven't already, even if it's just to tinker and experiment. Start thinking about what the major building blocks will be. |
| Project Description Part 2: Architecture and Design Description |
Class 7
|
The Architecture and Design Description describes the major components, and how they work together to perform the functions you outlined in your Functional Description. Include the following information: Technology Identification
An Architecture Diagram
A Data Dictionary
Add this as Part 2 of your existing Project Description, and turn in the hardcopy of both Part 1 and Part 2, as a single document. Include a cover page with your project name, your name, and the date. You are free to make revisions and updates to Part 1 before turning it in again this time. For Part 2, I am expecting at least 2 pages, but not more than 4. Thus, your total Project Description will be somewhere between 5 and 9 pages, including 1 title page and the 2 drawings (the User Interface Diagram, and the Architecture Diagram). Once you have done this homework, you should definitely start building something. If you don't know where to start, begin with the Guestbook, and modify it (for example, make it into an Address Book by changing the interface, and adding an Address and Zip Code field to the database table). |
| Prototype | Class 8
|
Show me a working prototype of your project, even if it is only bare bones. You should at least have your database created with a table in it, be able to connect to the database from a script, and get something simple in or out. It doesn't have to be fancy or pretty at all... just show that the major wires are hooked up right. This means bringing your files to class and getting them up and running on your class PC, or being able to demo your prototype from a remote site. |
| Final Project | At Class 10 | Show and Tell time! |
Work and build in small increments. Start with the most basic, simple thing you can think of in your project, like a home page with the word "Hello" on it. Get that working. Then add something simple to it, like a form with one single field, but no database behind it yet. Get that working. Then write the code that connects to the database, but doesn't do anything with it yet; just print out a message saying that you successfully connected to the database. Get that working. Then write code that inserts the single form field into the database. Get that working. And so on... you get the idea.
This way, you have a string of successes, instead of one big failure. Fight the urge to build too much at each step... take baby steps each time.
As you continue to build, occasionally save off a working copy that you can go back to. Just copy all your files off into a folder named Version1, Version2, etc. This has two advantages: (1) you can always demonstrate something that works, and (2) it can help you figure out what you just changed that made it break.
Finally, when Demo Day comes, don't make any last minute changes, no matter how strong the urge. Murphy's Law is especially prevalent at software demos. The most innocent, simple change ("oh, I think I'll just capitalize the word hello on my home page") will almost certainly break something, no matter how confident you are. Just leave it alone! I can't tell you how many students (and professionals alike!) have said, about 5 minutes before demo-time, "Well, I had it working, and then I decided to add just one more thing..." It's a trap!
So here are some things to remember: