Web and Internet Programming IT350


IT350 Project

In this course there is a single project, of your choosing. This is a group project where teams of 2 or 3 will work on a project and it will be due at the presentation. Your teams are expected to properly propose, plan, and execute the project while adequately breaking up the work between the team members.

Accessing Project Files (new)

The team shares are available on midn.cs.usna.edu (you need to ssh there)
Unix path: /var/www/html/IT350-teamX (X is your team number)
URL: http://midn.cs.usna.edu/IT350-teamX

Honor

No collaboration between teams is allowed. All work for the project must be done by the team members. All sources outside of the textbook, assigned readings, course notes, and instructor need to be cited in the code, wherever that source is used.


Overall Requirements


The project needs to be of sufficient scope, which is why your proposal will need to be approved. A number of the requirements might involve features and techniques that will be presented and discussed later in the course (ex. JavaScript, Bootstrap).

You have to propose a project. Your project must have:

  1. Some sort of welcome page (an area that does not require being logged on). This page should make clear what the site's purpose is and provide appropriate links to the main sections of your site.
  2. A contact or about-us page informing the world of who the developers are
  3. Some sort of search functionality
  4. User profile page (some public information about the users who sign-up on your site)
  5. A page with the list of all users, with links to their public profile pages
  6. Some way to identify the user (a login page) and then a way for user to logout (a logout page)
  7. A sign-up page to allow for new members to your site
  8. Some pages that are accessible only to the users logged in: these pages should provide the main functionality for your site. At a minimum,
    1. it should allow users to submit some information (e.g. post status updates, or take a quiz, or ...)
    2. it should allow users to grow their "network" on your site - this can mean that they add "friends" in a social media site, or add a class in a quiz taking site, or some other way to have multiple "things" for one user
    3. each user should have some personalized page, containing information gathered from their "network" - e.g. all the posts from their friend on a social media site, all the quiz answers/grades from the quiz taking site, etc. Implementing this should involve reading one or more files and selecting some information from them, sorting that information, and displaying it.
  9. Some admin-only area - that allows you to see who the users are, change the passwords, or lock them out
  10. Also for admin-only area, have some page that displays some statistics about the site, such as number of users, number of submissions, or whatever makes sense for your site
  11. You must add at least one innovative feature to your system that was not specifically required.
  12. Server side scripting via PHP
  13. Client side scripting via JavaScript

Additional requirements:

  • Your site must be well-documented!
  • You should define functions and share code appropriately. Don't have the same code in multiple files!
  • You must make use of CSS to make your pages attractive and consistent looking.
  • You must use JavaScript to provide useful checking of forms before they are submitted to the server. The PHP script should replicate those checks, to ensure users did not by-pass HTML and JavaScript checks.
  • All your HTML pages have to be valid HTML5, and all CSS needs to validate as CSS3. You should strive to generate valid HTML from PHP and JavaScript.
  • Design and human-computer interaction: keep in mind that this is a real website. A part of your grade will be based on how well you implemented the design and HCI principles we'll discuss in class.


Project Proposal Due: October 15th, 2021 NLT start of class


Milestone zero is submitting a project proposal. The proposal must include:

  • Team number and list of members
  • A title for the project and a short description of what the project will do
  • A detailed description of your project including how your project meets the minimum requirements described above; bullet points listing the page/script name, its functionality, and which requirement(s) given above it satisfies are highly encouraged
  • A detailed plan for your project deciding how you will divide up the work between your team members (who works on what), and what you will accomplish for each of the next three milestones. Note that there will be a milestone approximattely every other week
Only the team lead needs to submit the proposal, in a file called teamX_projectProposal.pdf (replace X with your team number) using the submit system (projectProposal).


Milestone 1 Due: October 26th, 2021 NLT start of class


Complete items: 1, 2, and 7. Polished design is not required at this point, though some elements of the design should be present. Your instructor should be able to see that you are considering the design effort. Your not required to keep this design if you find a better one later.


Milestone 2 Due: Novermber 16th, 2021 NLT start of class


In addition to the items completed in Milestone 1, complete items: 4, 5, 6, 8, and 9. All of the user functionality should be complete by this point, you can add more later. You must have at least 1 admin account, 1 account for each team member, and 1 for your instuctor.


Milestone 3: Project Report and Final Parts Due: December 6th, 2021 NLT 2359


Complete all remaining parts of the requirements. Along with the files for your project, you will submit a written project report, which includes:

  1. Your team number, team members, and URL to the main page of your team project.
  2. Usernames and passwords for one admin user and one other non-admin user on your site. We may use these accounts when we test and grade your site.
  3. A listing of the description of what each person did – who created each file, who tested?
  4. A detailed description of what your project does. This should serve as a user manual. Bullet lists are encouraged.
  5. Describe your innovative feature, any extra credit, and any requirements that you did not meet.
  6. All of your files should also be documented, also described in the requirements above.


Project Submission Due: December 6th, 2021 NLT 2359


Only one submission per team is required.

  1. All files for the project should be stored on midn.cs.usna.edu under /var/www/html/IT350-teamX (where X is your team number). Do not modify the files after the due date
  2. Submit all files (including the project report) to the online submissions system (submit.cs.usna.edu) on or before the due date, this is finalproject. Use the command line submit script and capture the entire contents of the directory. The easiest way to do this would be to cut and paste the following while logged onto the web server:

    
          ssh midn.cs.usna.edu
          cd /var/www/html
          ~/bin/submit -c=IT350 -p=finalproject IT350-teamX
    (where X is your team number)
    This assumes that the submit script is located in ~/bin/ and is executable.

Project Presentation Due: December 7th, 2021, Start of class

Each team will demonstrate their system to the class. Be sure to mention your required innovative feature and any extra credit. You're not expected to prepare PowerPoint slides but if you wish place them in your team web directory for easy access. Each member in the team should present some part of the project. Each team's presentation must be 10-15 minutes. The goal is to showcase your project, but also explain the technical details of how it works.


Project Grading


A portion of your individual grade will be a group grade based on the following:

  1. Meeting projecting milestone and status reports
  2. Functionality and correctness – The site should operate as advertised without error.
  3. Visual Appearance & Consistency – including good use of CSS.
  4. Maintenance – Ensure the site is well organized, requires minimal maintenance, and can be expanded by someone else who doesn't know your code.
  5. Documentation – Ensure all pages are documented . Each file should start with a description of that file, creation date, and author name. If multiple team members modify the file, each should document the date and author of sub-sequent modifications. Each PHP function should be preceded by a short description. General documentation covering the system's layout and design is also required.
  6. Creativity – The requirements above require at least one system innovation not specified in the project writeup. This and any other innovations will count towards your creativity grade.

The other portion of your individual grade will be administered by your teammates. Your assessment of your peers shall be based on effort, knowledge, team work, and professionalism.