COMS4111, Spring 2013

Project 1, Part 1

(worth 25% of overall Project 1 grade)


Overview of Project 1  |  Project 1.1  |  Things to do and Deadlines  |  CVN Students  |  Grading  |  FAQs


Summary of Deadlines

Please check the Project Lateness Policy carefully. For Part 1 of Project 1, you can only use project grace days for the final hard-copy submission (i.e., you cannot use grace days to delay your meeting with a TA).

Teams

You will carry out this project in teams of two. If you can't find a team-mate, please follow these steps:

  1. Post a message in the class discussion board on CourseWorks asking for a team mate - the best way. In the message, you may want to provide a one-line description of what you may want to do (or, simply that you are open to ideas), the option you want to follow for Part 3 of this project (see below "Overview of Project 1"), or any other information you may find useful for your potential future teammate to know. 
  2. Send email to Abhas (ab3599@columbia.edu) right away (and definitely before Wednesday Feb 6, 9:00pm) asking him to pair you up with another student without a team-mate. Abhas will do his best to find you a team-mate.

You do not need to notify us of your team composition. Instead, when you submit the first part of your project you should indicate in your submission your team composition.

Important notes:

Computer accounts

You will need a CS account to do the final parts of Project 1 (not for Part 1, though) but only if you decide to do the project on Unix. (You will not need a CS account if you do your project fully on your laptop.) Consequently, if you use Unix, then at least one of the team members should have a CS account. If neither of you have a CS account, please open one from https://www.cs.columbia.edu/~crf/accounts/cs.html. Choose the appropriate "student" category as the "account type." There is a $50 charge to open a CS account. Please refer to CRF's homepage for details on infrastructure and policies of the CS department.

Overview of Project 1

In Project 1, you will build a substantial real-world database application of your choice. You will do the conceptual design of the database on paper in Part 1, and then you will create an actual database on Oracle in Part 2Part 3 requires some explanation, because you will have two options on how to complete it: (3.a) Web Front-End Option or (3.b) Expanded-Design Option:

Overall, Parts 2 and 3 will be based on your description and design of Part 1.

Pick an application that you will enjoy working with, since you will be stuck with it for a substantial part of the semester! A suggestion is that you build a database about something that you are interested in --a hobby, a favorite web site, material from another course, a research project, etc. It's especially nice if you pick an application where you can populate your database using real, as opposed to fabricated, data. As the project progresses, you'll end up creating a database of at least dozens of entities/relationships. If you have an application where you can get a large amount of real data to populate your database, all the better, but it's not necessary.

We have instituted a project contest, and that the best projects (as decided by the class staff) will get a 10% boost in the Project 1 grade.

Overview of Part 1 of Project 1

For Part 1 of this project, which you should submit in hard copy, you should include 3 items:

  1. (Required) Detailed description of your application: You will describe the general "domain" of your application, construct an Entity-Relationship diagram for the database, and map it to a relational schema using the mapping technique that we will cover in class.

    Try to pick an application with a schema that is relatively substantial, but not too large. As general guidelines:
     

    Try to make your application interesting, including a variety of different kinds of attribute domains (e.g., strings, integers, etc.) and relationships (i.e., with different key and participation constraints). It is important that you include as many relevant constraints for your application from the real world as possible in your E/R diagram.
     

  2. (Required) Your choice for Part 3 of the project: As part of your Part 1 submission, you need to specify whether you will follow the Web Front-End Option (Option 3.a) or the Expanded-Design Option (Option 3.b) for Part 3 of the project (see above).
     

    If you state in Part 1 that you will follow the Expanded-Design Option, it is OK for you to change your mind and decide to follow the Web Front-End Option later, when we announce Part 3 of the project; however, if you do not submit a plan for the Expanded-Design Option when you submit Part 1 of the project, then you will have no choice and you will have to follow the Web Front-End Option; we will make no exceptions to this rule.
     

  3. (Optional but strongly recommended) Contingency plan for two-person teams: Since students do occasionally drop classes, and to prevent last-minute surprises, we suggest that you also include in your submission a "contingency plan" for the unfortunate case in which one of the team-mates drops the class later in the semester. This contingency plan should indicate how you will "downgrade" the project to a simpler one in such a case --including in Part 3, if you follow the Expanded-Design Option--, so that it is appropriate for a single person to complete. (See guidelines for single-person projects above.) If your team-mate drops the class, rather than finding a new team-mate to complete the project, which is problematic for a number of reasons, you will complete the "downgraded" version of your original project. Including such a contingency plan is optional, but if you choose not to submit it when you submit Part 1 and your team-mate drops the class later, you will have to complete the original project as planned, and no exceptions will be made at that point.

What you need to do for Part 1

  1. Find a team-mate. There's no need to notify us of this; you will simply indicate who your team-mate is when you submit Part 1.
  2. If you will do the project on Unix machines, get a CS account if neither you nor your team-mate has one.
  3. Decide on an application for your project and:
     
  4. Meet with a TA during the week of Monday Feb 11 through Friday Feb 15 to discuss your design and make sure that it is appropriate (i.e., challenging enough, but not unrealistically so). This meeting is required and should last about five minutes. Your grade for Part 1 will be decreased substantially if you don't meet with any of the class staff. We will have expanded office hours during that week that you will be able to see on the class website. Please show up early in the week to minimize delays. We will not be taking appointments, so please show up directly during office hours. Both team members should attend the meeting, at the same time. For this meeting, bring the written materials described in the previous point (i.e., in item (3)).
  5. After a TA has OKed your general application, your plans for Part 3, and your contingency plan, modify your description based on the feedback that you were given, and write an E/R diagram (following the syntax that we saw in class) of your database, specifying as many of the real-world constraints for your application as possible.

    Important note if you follow the Expanded-Design Option for Part 3:
    in Part 1, you do not need to write or submit an E/R diagram for your Part 3 expanded design; instead, you should just submit the one-paragraph description of your expansion plans for Part 3, which you should have brought to the meeting with a TA and gotten approved during the meeting. You will do the E/R diagram, etc. for Part 3, later in the semester.
     
  6. Using the methods that we will have covered in class, map your E/R diagram into a relational schema in SQL, capturing as many of the E/R constraints (e.g., key and participation constraints) as possible.
  7. Submit a hard copy of (a) your one-paragraph description of the application (which you should have revised based on the feedback from your meeting with one of the class staff), (b) your E/R diagram, (c) your resulting SQL schema, (d) your one-paragraph description of your expansion plans for Part 3, if you are following the Expanded-Design Option (which you should have revised based on the feedback from your meeting with one of the class staff), and (e) your contingency plan (again, revised as appropriate based on your meeting with one of the class staff). You should submit all these materials at the beginning of class (1:10pm for Section 1, 4:10pm for Section 2) on Wednesday February 20.
  8. Keep a copy of all these materials for yourselves, since you will need them for Parts 2 and 3 of the project.

Important note: Try to meet with a TA early in the week of Monday Feb 11 through Friday Feb 15. If you wait until the last day of this period to do so, you will only have a little more than a few days to complete Part 1 of the project. If you meet with us early, you will still have the chance to attend any of our office hours later to discuss further and get answers to any questions that you might have.

CVN Students

Grading for Part 1

Your grade for Part 1 of Project 1 will be split as follows:

  1. Meeting with class staff: 7 points.
    If you come to the meeting prepared with your written description as specified in items (3) and (4) above, you can expect to get all points, even if you are asked to make changes or revisions to your proposal.
  2. Quality of final one-paragraph description of your application: 6 points.
    We will evaluate the overall quality of your final hard-copy one-paragraph description of your application, especially in terms of how thoroughly you incorporated any revisions suggested during your meeting with the class staff.
  3. Quality of E/R diagram: 6 points.
    We will evaluate how well your E/R diagram models your proposed application, including how well you modeled any relevant real-world constraints.
  4. Quality of your SQL schema: 6 points.
    We will evaluate how well you mapped your E/R diagram, including constraints, into a SQL schema using the technique that we covered in class.

Frequently-asked questions