Professor Ted Markowitz
233 Buckman Hall
Tagliatela College of Engineering


Winter 2010 - CS441/CS655: Web-Database Application Development - Term Project Details





Term Project

The most important part of the course is your development of a fully working web application by the end of the term. It needn't be overly complex or pretty from a UI perspective, but it must show at least a minimum amount of functionality and use of enough of the technologies we cover during the semester (see below for more details) to prove that you absorbed the course material.

Please start to think about what sort of application you'd like to try to construct as early as possible in the semester. Hopefully it would be something interesting, fun, and/or actually useful to you, but it need not have a fancy interface or be overly sophisticated to still be successful and earn a good grade. At a minimum however it needs to combine multiple client-side and server-side technologies into a fully working system, e.g., using JSP pages as a front-end to a Java Servlet which uses database connection pooling to talk with back-end DBMS, or an Ajax-based application showing asynchronous updates on the client, or perhaps even a simple Web Service of your own design which provides some interesting capabilities to other WS clients. The minimum success criteria for undergraduates and graduate students can be found in the 'Grading' section below.

By Session #6 you should have a pretty good idea of what you're thinking of working on. You'll be writing this up as a 2-page, single-spaced Vision Statement.

What's expected from you and by when: Besides the Vision Statement due by Session #6, a copy of the working code for your Web application should be delivered as a NetBeans project directory (a ZIP file of the whole directory structure is suggested) along with any other files needed to make the application run (e.g., MySQL table definition files, test data, etc.) to the teacher (i.e., uploaded to your 'termproject' FTP directory) by the next-to-last session (Session #12). In addition, you'll be delivering an in-class slide presentation (in Powerpoint, OpenOffice impress, or PDF format) which lasts no more than 10 minutes to the class. The presentation's talking points should outline the application's goals, its design, what technologies were chosen and how they were used, what issues arose during development and how they were addressed. As part of it, this presentation must demonstrate your working application to everyone, who will be critiquing it during the final class.


Vision Statement


This is what needs to be in your Vision Statement:

  1. Application Goals: what it's trying to accomplish from a user's point of view
  2. Application Architecture: how it might be put together (a high-level, "block diagram" functionality perspective) from an architect's point of view
  3. Application Design: how it will be implemented (the major pieces of Java code and other files that are required and what tools/techniques will be used to build them) from a designer's point of view

I will need to sign off on your Vision Statement before you invest a lot of effort in actually implementing it.


End-of-term Deliverables


And these are the deliverables due at the end of the semester by Session #12 which is the next-to-last class session:

  1. A fully functioning and deployable (meaning that it must be installable into a working Apache Tomcat Servlet Container) web application which will be demonstrated live to the class. The code must not only work but it also must be well documented internally to be acceptable. Note: Elegance and cleverness in architecture or implementation details will definitely boost a student's grade.
  2. A 5-10 minute set of presentation slides that outline the application's goals, its design, what technologies were chosen and how they were used, what issues arose during development, and how they were addressed.

Project Details


Coding

The coding part of the project should include both a client and a server-side component. It should try to involve most, if not all, of the following elements:

  • Java web application that supports remote client interaction
  • MySQL database containing data which is accessed and modified on the server and interacted with on the client
  • JSP pages or Servlets for generating dynamic content
  • XHTML and HTML Forms along with CSS formatting
  • Use of Javascript in the client code
  • Some use of XML processing
  • Ajax-style interaction
  • Some kind of Web Service interaction
  • It must be deployable as a Tomcat WAR file and demonstratable as a live application

Presentations

  1. Your application must be deployed on a server before class
  2. Your slides should be in my hands during the presentation
  3. You should spend about two minutes explaining what you were trying to do and how it was built. Then spend about five to seven minutes showing how your application works. Spend another few minutes explaining what was difficult or challenging, and how you solved any problems you ran into.
  4. A project done by two students should be longer, up to about 20 minutes to present.

After each presentation, the other class members will fill out an evaluation form while the next presenter gets ready. These will be turned in at the conclusion of the session to the teacher.

Grading

Minimum scope for a C grade (graduate or undergraduate):

  • 3 to 5 different page views, at least two of them dynamically generated, containing data relating to the user’s input
  • Use of both HTTP GET and PUT
  • Use of at least four different HTML Form elements
  • Use of color and some kind of HTML formatting (lists, tables, and fonts)
  • Use of CSS as an external style file
  • Access to a MySQL database for querying the DB and displaying data to client
  • Use of Javascript on the client
  • Use of JSP and/or Servlets on the server
  • At least two kinds of things a user can do with the system, not including logging in and out

For a B grade: The project must include more complexity and more code in addition to what is required for a C.

It should also contain at least three of the following elements:

  • More than 5 views; more extensive functionality
  • Non-trivial application logic. Something more than querying the database and showing the results. Calculate something or print a report, or make some intelligent decisions about what to display
  • Use of MySQL database for creating, updating and deleting client data (not just display)
  • User authentication using the MySQL database as a backend to hold Tomcat user information
  • Other Java classes in addition to the JSP pages and the DB class
  • A database connection pool
  • Show the server manipulating client cookies
  • More sophisticated page layout and rendering, e.g., common headers and footers for the views, frames, multi-column CSS layout, etc.
  • Active use of the session state for more than just the userid authentication

For an undergraduate A grade: Implement all of the features listed above for a B plus one of the features below.
For a graduate A grade: The project must include still more complexity and more code. Implement all of the features listed above for a B plus two of the features below.

  • More difficult/interesting logic or algorithms
  • Use of Ajax
  • Use of XML to import and/or export data from the database
  • Use of HTTPS and a security certificate
  • Use of a Web Service (either create one of your own or integrate with an existing Web Service)
  • Use of any feature (covered in class or not) that is not included on these lists. (Teach me something! Note: ask me first what you have in mind before coding it so we agree on what is 'interesting'.)

For a Masters student special project-out-of-a-course: The project must seem more complete and functional, and be about 25% longer or more complex than an A-level project. If you have done a joint project with another student, each one must do part of the design and part of the implementation, and you must make clear who did what.