IT350 - Web and Internet Programming

Final Project

Introduction

In this final project you will work as a team, employing all the HTML, CSS, JavaScript, and CGI skills you have learned this semester, to design and build an online poll/quiz system.  Your goal is to produce an attractive, functional, maintainable, and innovative system.  The best system may be deployed for use in IT350 next year (and likely many other courses).

This course has taught you the basics of web programming and how to refer to documentation when necessary. Some features of the project will require you to access additional information to complete the requirements.

Definitions

Overall Requirements

When finished, your system will need to have at least five publicly viewable scripts:

·        survey.pl – Generates a poll/quiz HTML form that is filled out by the student.

·        submit.pl – This script is called when the student hits “Submit”.  It records the student’s responses in a file for later use, along with a timestamp.  For a quiz, it will also grade the quiz.  The script may then inform the student of his/her score and/or correct answers, depending upon the quiz settings.

·        summary.pl – A password-protected script (intended for instructor use only) that displays a summary of the poll/quiz responses.  This should summarize:

o       Which students (and how many) have taken the poll/quiz.  For each student, there should be a link to the detail page for that student’s response (see detail.pl below).

o       For multiple choice questions, the percentage of students choosing each response.

o       For free text questions, a list of all the responses that were provided.

o       There should be an appropriate link to grades.pl (see below).

·        detail.pl – A password-protected script that displays the responses of one particular student.  It’s up to you how to present this information.  One nice approach might be to re-display the poll/quiz form and somehow indicate the answers given by that student.  Note that detail.pl must still be able to work, even for an anonymous survey.

·        grades.pl – A password-protected script that displays a list of all students, one per line, sorted by alpha number. Each line should contain the student's alpha, lastname, then their grade for the quiz.  This should be output as a plain text file (plain text, not HTML), one student per line.

Other requirements:

What You Start With

We are giving you a few things to help you get started.

NOTE: you can download all of these files here (unzip to the TOP of your W: drive). You can also individually save these files but if so you’ll have to rename each Perl file from a .txt extension to a .pl extension.

Getting Started – Required Startup Tasks

Everyone on the team needs to understand how the basics of the code work.  On your first actual in-lab day, do some team planning and then do the following.  You must do this individually, but get help from your team as needed:

  1. Download all of the starter code and unzip it into your root W:\ directory (not in a subdirectory).   
  2. Did I mention NOT to use a subdirectory like “Lab09” or “project”.  You want all this in your top-level W:\ directory.
  3. From the command line run “perl –w helpers_test.pl”.  Take a look at the output, then read carefully through helpers.pl and helpers_test.pl to see how it works.
  4. helpers_test.pl has comments describing 3 warm-up tasks.  Do each one. Demonstrate to the instructor when finished.  Team leaders should help ensure everyone completes this. 
  5. Once all the above is working, make sure it still works when using the web-server.  Fetch http://www.mXXXXXX.it350.cs.usna.edu/helpers_test.pl . You should see reasonable results in HTML.
  6. You now know the basics. Proceed with your assigned part of the project.  Be sure to keep an eye on the required deliverables/milestone dates.

General Approach

Getting the site to work will involve getting several perl files and some text files to work effectively together.  Here is an example of how this should all work:

Notice a few things about the above steps:

Project Roles

Each of you will have leadership responsibility for some part of the project.  This doesn’t mean you must do all the work for that part; it just means you are responsible for making sure it is done right.  Part of your individual grade will depend on how well you led your team in this regard.  The roles are:

Tips

Extra Credit

Your project must meet the basic requirements.  Then do any of the following for additional credit.  You may also propose other ideas; talk to your instructor.

  1. Create an online quiz/poll generator – e.g. a tool to help produce text files like quiz1.txt.  This script should allow the instructor to dynamically create a quiz/poll by adding one question at a time.  It should also support modifying existing questions and should be able to load existing quizzes/polls for modification. 
  2. Add the ability for a quiz to refer to another file, say “it350-4001-students.txt” that lists the alphas and last names of all students in the course.  Then modify the summary results to also show those that have not submitted, and modify the grade results to show an incomplete for students that have yet to submit something.
  3. Add the ability to require students to login with some password before they can take a quiz.
  4. Add the ability to send mail to students with their grade after submitting a quiz.  Email may be tough with our server; talk to your instructor if you are interested.
  5. Make a new version of grades.pl to creates a summary text output, one line per student, but where each line contains the grades for a whole set of quizzes (e.g., so one page would be the grades for all students, all quizzes).  Be sure to handle missing quizzes appropriately.
  6. Add support for showing separate results/grades based on which section a student is in.

Grading

Your individual grade be calculated from:

 

1.      Functionality and correctness – The site should operate as advertised without error.

2.      Visual Appearance & Consistency – including good use of CSS.

3.      Maintenance – Ensure the site is well organized, requires minimal maintenance, and can be expanded by someone else who doesn’t know your code.

4.      Documentation – Ensure all pages are documented. General documentation covering the system’s layout and design is also required.

5.      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. 

1.      Your assessment of your peers shall be based on effort, knowledge, team work, and professionalism.

2.      You will assign two grades to each member of your group – one based on their overall contribution, one based on their leadership in their assigned role.

 

Milestones/Deliverables

For interim milestones, the milestone is late if not delivered promptly by the deadline (COB – by midnight, or promptly at the start of lab). The penalty for a late milestone is 25% per day.

 

 

 

Additional Hints/Clarifications (updated as the project progresses)