Over the course of the semester, you will develop a database and web application to interact with that database. The resulting system should be usable by others – i.e., it is fully functional, supporting the expected set of operations for its users with a comprehensive user interface, and contains representative, real-world data to demonstrate its functionality. The project should be non-trivial but not so complex that it requires more than 5 weeks of work (approximately 30 hours total outside of class).

The project deliverables are organized as a series of assignments:

  1. Proposal
  2. ER diagram
  3. Schema design
  4. Website
  5. Application
  6. Peer evaluation

You may complete the project individually, but working with a team of 1–2 other students (2–3 team members total) is strongly encouraged. Teams will be expected to do more than individuals, but in practice, the total amount of work rarely grows linearly (e.g., writing a project proposal as a team might require 50% more time than writing the proposal individually).

Placing your name on a deliverable signifies that you have contributed significantly to its intellectual content and to its completion. Including your name when you have not satisfied these criteria will be considered to be a violation of the assignment’s Help Policy. It is expected that each student can provide documentation regarding their contribution(s) to each assignment if requested to do so. In addition, team members will complete a peer evaluation at the end of the project to provide feedback on individuals’ contributions and how well individuals work together as a team.

Requirements

All projects must satisfy the following requirements:

  • Database
    • At least 6 entities, not including support for users (see below)
    • Tables in Third Normal Form (3NF)
    • Representative data – sufficient to demonstrate functionality
  • Application
    • User registration
    • User authentication (i.e., login and logout)
    • Create, read, update, and delete (CRUD) support for at least one database table
      • Note: A subset of these operations should be supported for most database tables, but all these operations must be supported for at least one database table.

Deviations may be approved on a case-by-case basis with permission of the instructor. Be prepared to provide the reason for any deviations (e.g., conflicting requirements from an external client) and to explain how any deviations provide a commensurate level of functionality.

Ideas

You are strongly encouraged to pursue a project that is related to your capstone topic (if known) or your personal interests. You may propose a project that is related to another course’s project or assignments, but if you do so, you must 1) clearly identify what is unique to each course as part of the proposal and 2) notify and receive approval from the courses’ instructors prior to submitting the project proposal. Working on a project that is related to another one lessens the “start-up time” that is spent learning about the project.

Projects related to a capstone or that require interaction with an external client (including a course instructor) will receive up to 25 points of extra credit. Please note that you should discuss such projects with the instructor and client prior to submitting the project proposal. If you have an external client, you must document your interactions with that client, and your documentation will determine how much extra credit you receive. For example, a quick meeting at the start of the semester without any follow-up is poor software development practice and will earn minimal, if any, extra credit.

The following projects have external clients who have expressed interest in working with cadets:

Developer Pairing
Develop a tool that assigns work from an issue tracker and pairs developers based on team preferences, such as junior and senior developers, individuals who are least often paired, etc.
USAFA Transportation Office
Develop a web application to replace Microsoft Access for coordinating transportation requests and schedules for drivers
Falcon Telescope Network
Develop a web portal for the Falcon Telescope Network

Please contact the instructor for more details regarding these projects. Obviously the prior projects are not the only ones with potential external clients; for example, non-profit organizations appreciate web applications that enable them to serve others more effectively.

Listed below are a number of additional ideas for consideration (please note that this list is not comprehensive):

Test question bank
Organize questions and answers, allowing unique versions of tests to be created automatically from the question bank while ensuring appropriate coverage of material
Fitness tracker
Record workout information and provide summary reports to improve personal fitness
Textbook swap
Collect textbook information and create listing for students to sell them “offline” the next time that a course is offered
Squadron / team feedback system
Track comments and ratings for inspections, etc.
Stock portfolio (or personal finance) tracker
Record transactions and stock positions (gains or losses) or difference from budget allocations
Competition “ladder”
Organize sports games (tennis, racquetball, Mario Kart, etc.) based on skill level with participants moving up or down the ladder based on the results
Database for non-profit
Track members, donations, specialized needs, etc. for a specific non-profit organization
Tutoring
Volunteer expertise in particular subjects (or courses) so that those struggling know where to find help
Auctions
Create a private version of eBay or Amazon Marketplace
Student / alumni database
Maintain information about students (courses completed, GPA, graduation year, job(s), etc.)
Multimedia database
Store photographs, songs, movies, etc. along with metadata so that the content is searchable and sharable