Course Project

Database-Driven Web-based Information System 

Team Work

Students in teams of 3 to 4 are required to select an application domain that requires a back-end database and build the application from start to finish. There is no restriction on who can team up with who.

Goals

You will first identify an application domain to work on, for which database systems would be required. You will then design the underlying database and define the application functionalities you will provide with the database. Lastly you will implement this application, build and populate the underlying database systems, and write the code needed to embed the database in the application. You will demo your application and possibly showcase it to the whole class.

Schedule

Each project stage is due at midnight (ET) on the specified due date.

Your group is expected to submit the required materials of each stage to their own Project homepage. The details are found under each stage. Forgetting to update your project page with a link to the new documents will result in not receiving grade for that part. Do not trust the child pages created automatically for you. If you add something to your project page, put a link within the test or in your project information table so that we can find and grade it.

Stage 0: Group Formation

Due: 11:59pm, Friday September 8, 2023

You must form a group and each group must create its project page:

  1. Pick a team captain. The team captain will create a top level comment by copying Prof Weninger’s example post. Then change/fill-out with the following:
    1. Project name where ProjectName is a single-word and fun name for your project. This will be the homepage identifier for your project, e.g., http://db8.cse.nd.edu/cse30246/projectname/
    2. Members (and their Notre Dame email).

Note: If you have difficulties forming a team, here are the solutions: 1) Go to class and talk to people in the class; 2) Use the forum; and 3) Ask TAs for help.

Stage 1: Functional Description and ER Design

Due: 11:59pm, Monday, September 18, 2023

Each group must make the following edits to their Piazza post:

  1. Check if you have access to the database on the course server machines and appropriate permission to use the webspace on db8.cse.nd.edu.
  2. Fill in Project Title on the Canvas post.
  3. Fill in Project Summary. It should be a short description of what your project is.
  4. Create an folder within /var/www/html/cse30246/ with your team name. This name must not contains spaces, be relevant to your project idea and be all lower case.
  5. Edit your comment from Stage 0 to create a link to your project details homepage e.g., http://db8.cse.nd.edu/cse30246/projectname/
  6. Within the projectname folder create a file called index.html as the frontpage of your project (this can be blank for now) and a file called project.html to describe your project. Project.html needs to include the following:
    1. Description of the application of your choice. State as clearly as possible what you want to do.
    2. Usefulness. State as clearly as possible why your chosen application is useful. Make sure to answer the following questions: Are there any similar or equivalent web sites/applications out here? If so, what are they and how is yours different?
    3. Realness. Describe what your data is and where you will get it.
    4. Description of the functionality that you plan to offer. This is where you talk about how to meet the functionality requirements. There are two types of functions you need to offer:
      1. Basic Functions: see Stage 4 for what of basic functions you need to offer.
      2. Advanced Functions:
        1. Remember to include at least two creative things (advanced functions), i.e., something that doesn’t exist in equivalent web sites/applications. The advanced functions should go beyond the basic functions listed above; in addition, an advanced function should also be something that is technically challenging, meaning you would need to spend some significant time (at least a few days work) to implement it. Of course, such functions should be relevant and therefore useful for your application. Remember that you have to define a challenging problem at the time of your final demo and show that how you solved it. To have an idea about our expectations, a team of 4 with average programming skill will spend 3-4 days programming each of the advanced functions. It has to have programming involved. this is 3-4 days of useful work so it doesn’t include the time spent on learning the material or debugging the code. Please have a look at previous semester’s projects to have an idea about expectations.
        2. Make clear what the features are, and explain why you think it is cool to have them. If you are unclear, please check the project overview lecture or talk to TA.
  7. Create a link to an ER diagram of your application domain, plus English descriptions on the assumptions you make. This can be computer-aided diagram or a scan of a pen and paper diagram.

Stage 2: Development Plan

Due: 11:59pm, Friday, September 29, 2023

Each group must create an HTML page called devplan.html within their project directory on db8.cse.nd.edu showing their development plan and link to it from the project.html page. The development plan includes the following:

  1. The relational schema of your database. Remember to include all keys and dependencies (e.g., functional dependencies) as appropriate.
  2. Describe the final choice of databases and software platforms/languages that you will be using, especially if there are different from the default tools on db8.cse.nd.edu.
  3. Describe where and how you will get data for your application. Do you get it from the Web, some other application, or do you make it up?
  4. Describe the labor division among group members.
  5. A project timeline with milestones.
  6. Fill in Project Demo URL in your index.html page. In most cases this will simply be db8.cse.nd.edu/cse30246/projectname, but you are allowed to use another hosting environment if you want. The page content from the URL can be empty, but the URL must be live.

In addition to the development plan, each group must comment on another group’s project description.

  1. Find your project post in the followup discussions below. These are listed in order of oldest to newest. Your group must comment on the post directly beneath, i.e., newer, than your project’s post. The last post must comment on first post (not the instructor example)
  2. The goal of this exercise is to improve and expand each others’ ideas. Read the description of the other project, think about their ideas.
  3. Provide constructive feedback as a reply-comment from your whole group. Comments that start with: “Have you thought about trying…” or “It would be cool if you could also…” or “To get data, you could also… ” are encouraged. Destructive or insulting comments are not welcome.

Note: There is no Approve/Not Approve with these stages. we try to give you comments so that you can learn about our concerns. But remember that your idea is in early stages and we cannot evaluate it at this stage. If you are in doubt or have any question about project, come and see us. We are always there to help you with the project. If you know your programming skill is not very good, you need to spend additional time on this project. Please plan to start early. Expectations from course project is the same for the whole class. Being from departments other than CS or not having programming skill is not an acceptable excuse. We are there to help you, so plan to start early.

Another Note: If you receive comments on your project from us, please think about them and try to address them. Of course, our comments are just suggestions as project is in early stages and we cannot evaluate it. If in doubt, come and talk to us. 

Stage 3: Initial Demo

Due: 11:59pm, Wednesday, November 1, 2023

Each group must demo its application in its initial working status. The demonstration takes 15 minutes (we use the other 10 minutes for administrative purposes).

Demonstration timeslots: each group will sign up for a timeslot. The signup sheet will be posted soon. First come, first serve. Not all members are required to be present. Of course, at least one member has to be present and he/she must know every aspect of the project.

Location:

  • Your demonstration will be held at 380 Fitzpatrick Hall unless other arrangements are made;

Each group needs to demonstrate all of the following:

  • There is *real data* in the database. Upwards 10,000 or more items of data across 5 or more different relations. More is better.
  • Functionalities. Write php/python/project-code to:
    • Show how to insert records to the database
    • Show at least one query that searches the database and list or print the returned records
    • Show how to update records
    • Show how to delete records
  • Talk about your plan for the next stage of the project, including what advanced functions do you plan to support. Having clear idea about advanced functions is very important.

Stage 4: Final Demo and Report

Due: 10am, Dec 12th, 2023 (End of the Scheduled Final Exam)

Each group must demonstrate its application via a 2 minute YouTube video that will be placed during class on Dec 6th and 8th at random. Your YouTube link must be placed on your groups project details page

Each group needs to demonstrate all of the following:

  • Basic Functions:
    1. Show how to insert/update/delete records to the database
    2. Show how to search the database and list or print returned results. You need to show a few different interesting queries over your database. *One of the queries must involve join of multiple tables.*
  • Demo Two Advanced Functions: the advanced functions should go beyond the basic functions listed above; in addition, an advanced function should also be something that is technically challenging, meaning you would need to spend some significant time (at least 3-4 days of work per advanced function by whole team) to implement it. Of course, such functions should be relevant and therefore useful for your application. You Advanced function must solve a technically challenging problem and must include programming. You have to be able to define the technically challenging problem and outline your solution. To have an idea about our expectations, a team of 4 with average programming skill will spend 3-4 days programming each of the advanced functions. It has to have programming involved. This is 3-4 days of useful work so it doesn’t include the time spent on learning the material or debugging the code. Please have a look at previous semester’s projects to have an idea about expectations.
  • You need to send a PDF of your final report and a a link to a zip file (hosted on db8.cse.nd.edu, for example) containing all your project files to Adnan Hoq (ahoq@nd.edu) and myself (tweninge@nd.edu) before the final deadline. Please put “CSE30246-Project Files: TeamName” in the subject. Also name the zip file as TeamName.zip. you will lose up to 5 points for not submitting your files.

Remember your final report is due Dec 13th, 2023 at 10am

Clarifications on advanced functions: (VERY IMPORTANT)

An advanced function should be

  1. Useful for your users
  2. Technically more challenging than the basic functions (much more!)
  3. Creative or novel with respect to other similar applications in your domain

Examples/reminders:

  • There was a pokemon project (in Fall 2010) where the group rendered the pokemon world with google map, then overlayed pokemon objects on the rendered pokemon world. Why is it an advanced feature? Overlaying objects on to google is pretty straightforward, but to render google map into a different “world”, then overlay objects based on that world’s coordinates is nontrivial. Also, no one’s done that for the pokemon domain yet (Pokemon Go was a thing).
  • Notice that just using any 3rd party API (such as Google Map API, Google Graph, …) will get you no points. Although having such a functionality on your site will make it look cool, It is just one line of code and it is not technically challenging. However, you can get up to full credit for this part depending on how you prepare the data to be passed to the API or how you process the returned values from the API. Remember that you need to solve a technically challenging problem by programming to get full credit on advanced functions.
  • There was a project that archived all the weather forecasts from several major weather sites. One of its advanced function predicted which weather site is the most accurate, given the current weather state. Here, the challenging part was the algorithm they had developed to evaluate accuracy. Remember that you have to be able to define the technically challenging problem and your solution.
  • Many students develop an Android/iOS app for their project so that the users can also access their system through a dedicated application on their cellphones. Remember that your cellphone app should be more than just accessing your website through your phone browser and it has to have some challenging implementations.
  • Another advanced function can be parsing data from existing websites automatically into your system. You can use a 3rd party parser library but again you need to do some challenging work on your own. As an example, you have to parse in a general way so that if the current format of the webpage you are parsing changed, your code can easily or automatically be updated.
  • There was a project that does recipe search. One of its advanced function is to recommend recipes based on the user’s dietary constraints. Users enter their constraints, such as calorie intake, ingredient preferences, etc, and the function returns a list of recipes that meet the constraints. The novelty comes from their search implementation. The search is an exhaustive search over 1000+ recipes, involving multiple table joins and pair comparisons, and they optimized this search with indexes and views. notice that just calling a basic SQL search will not get you a good grade for this part.
  • Remember that you need to have real data in your system. This data can be collected from internet resources or any other resources. We want you to think about how you can get real data for your system. In case, you are relying on your users to enter data into your system (e.g. if you are having a campus game result recording website), you must have your system up and running (completely finished) at least one week before your presentation. In this case, please send TAs an email saying that you are having your website up and running for users to test it. You can then ask your friends or other students in the class to use your system and collect real data in it. Remember that you are responsible to get real data in your system. Just finishing the project the night before and entering a few data into the system will not get you full points on this part.

Essentially, advanced functions are opportunities for your group to be creative and fun. At demo time, your group needs to make a case why your functions are advanced. You have to define the challenging problem that you tried to solve and explain your solution in details.

Tool Resources

As a general principle, students can explore various tools available to help building their projects. 

However, since this is a DB course, our focus is on databases. Hence, learning how to do hands-on SQL programming is very important. While we do not restrict what tools students can use, the tools must not mask interactions with databases. In other words, students need to know hands-on SQL programming and show actual SQL calls (ie. codes) in demos. For example, PHP does not mask the interactions with databases as students still need to construct actual SQL commands. On the other hand, tools such as Hibernate and Linq are not allowed. With these tools, students do not need to write actual SQL commands to query the database.

If you have any doubts about what tools to use, please discuss with the TAs.

Computing Resources

We have provided mysql as database for your project development needs. Web space is also provided for hosting your project.

Both the database and web space are hosted at the CRC. More information will be posted soon.

Tutorial Materials

There are tutorial sessions for students. These tutorial sessions are about using PHP and MySQL to build webapps. As these sessions are quite hands-on, you should bring your laptop to the sessions. 

Project Grading

Here is the breakdown of the course project grade. We will be looking at how your project satisfies the requirements below.

Project Grading (100%):

  1. In time and complete submission for Stage 1: Functional Description and ER design (2%)
  2. In time and complete submission for Stage 2: Development Plan (3%)
  3. Demonstrate the following in Stage 3: Initial demo (10%):
    1. Having real data in the database (>10,000 items) (Pass=10%/Marginal=5%/Fail=0%)
    2. Show how to insert records to the database (Pass=3%/Fail=0%)
    3. Show how to update/delete records (Pass=2%/Fail=0%)
    1. Show at least one query that searches the database and list or print the returned records (Pass=2%/Fail=0%)
    2. Having specific plan for the rest of the project and the two advanced functions (Pass=3%/Marginal=1%/Fail=0%)
  4. Stage 4: 
    Final Project (65%):
    1. Deadline: Demo days in December, final project grade not evaluated until after the final exam date.
    2. Design:
      1. User Interface is clean and intuitive. (Pass=15%/Marginal=7%/Fail=0%)
    3. Basic Functions:
      1. Show how to insert/delete/update records to the database (Pass=3%/Fail=0%)
      2. Having real data in the system (Pass=10%/Marginal=7%/Fail=0%)
      3. Show how to search the database and list or print returned results. You need to show a few different interesting queries over your database. *One of the queries must involve join of multiple tables.* (Pass=7%/Marginal=3%/Fail=0%)
    4. Advanced Functions:
      1. Function 1: (Pass=20%/Marginal=10%/Fail=0%)
      2. Function 2: (Pass=20%/Marginal=10%/Fail=0%)
  5. Final Report (10%)
    1. Deadline: Finals day and time
    2. Your final report should be a PDF document. It should be as short as possible, while describing the following:
      1. Briefly describe what the project accomplished.
      2. Discuss the usefulness of your project, i.e. why is your project useful
      3. Discuss the data in your database
        1. Include your ER Diagram and Schema
        2. Briefly discuss where you collected the data and how you collected them
      4. Clearly list the functionalities in your project
      5. Explain one basic function
        1. Show the actual SQL call
        2. List and briefly explain the dataflow, i.e. the steps that occur between a user entering the data on the screen and the output that occurs
      6. Explain your two advanced functions and why they are considered advanced
      7. Describe one technical challenge that the team encountered. This should be sufficiently detailed such that another future team could use this as helpful advice if they were to start a similar project or were to maintain your project
      8. States if everything goes according to the plan and the designed specifications, if not, then why
      9. Describe the final division of labor.
  6. In class Video Demonstration (10%)
    1. Deadline: Dec 6th and 8th at random
    2. You need to prepare a 2 minute Youtube presentation introducing your project and walking through its goals, features, etc.
    3. Youtube link must be placed on your team’s details page.