Work is the curse of the drinking classes -- Oscar Wilde

CSE3WE Web Engineering - Assignment 1

The Task

Your task is to write a (Perl) CGI and HTML form-based request system, as per the following description.

A number of organisations (both business and government based) give away "freebies" to those who ask. Some more recent examples have included free energy saving lightbulbs, free water saving showerheads and free public interest (eg. road safety) CDs/DVDs. In order to receive your free item, one often has to fill out a web-based form which captures your particulars.

Your task in this assignment is to do two things:

  1. Create an HTML page containing a <form ... to collect the data (you decide what's appropriate), and a Perl/CGI program (which runs on the redgum server) to receive the data and write it to a text file (eg. log your request). You should probably invent some kind of context for the page -- a make-believe business, for example. Be creative!
  2. Write a second Perl/CGI program on redgum which has some form of user authentication (eg: username/password, "magic string", ".htaccess" protection), and which will allow "staff" to view the requests. If you prefer, this can be the same CGI program as for part (1) -- it can decide how it should behave depending on what data it receives.

Other considerations:

  • You will obtain a good mark for the assignment if your system correctly operates as described above. If you only implement part of the assignment (eg. the first CGI) you will still pass but with a lower mark.
  • Your system does not have to provide facilities to do any more than is specified here. For example, it doesn't have to provide a facility to mark a request as having been handled.
  • There are many implementation issues in this system, such as untainting data, getting permissions (and wrappers) correct, and managing concurrency, all of which you must address. These issues will contribute significantly to your mark for the assignment.

Submission Requirements

You are required to design and code this system yourself. It's obvious that you can derive inspiration (and even code snippets) from many web sources, but the majority of the system should be your own work. Code which you have not written yourself should be acknowledged (either inline, in a Perl comment, or elsewhere) using the standard referencing guidelines from the La Trobe University, Bendigo Assignment Guide, or equivalent. Your submission must include a "Statement of Authorship" (note: link is to a proprietory MS-Word document) to certify that any code not otherwise acknowledged/referenced is your own work. Be aware that Perl is a language which, more than others, reflects the programmer's "style". If there are slabs of non-referenced third-party code in your program, they tend to be very obvious to the astute reader. We will be able to tell if you didn't write it, so best not to try. You are reminded to familiarise yourself with the University's policy on academic misconduct (caution: large PDF file). This policy will be applied in this and all other assignments in Web Engineering.

Your submission (which must be in "hard copy" form -- electronic submissions will not be accepted) should include brief documentation of the overall design and operation of your system, all Perl code (properly indented, with sufficient and appropriate internal documentation), evidence of operational testing and (obviously) the URLs of your system's entry pages on redgum so that the assessor can test it.

Please refer to the subject outline for other submission requirements.

Note

Be aware that this assignment forms a major part of your assessment for this subject. You are expected to submit a piece of work which reflects your own learning in the subject. You should therefore not expect that valuable classroom time (especially laboratory time) will be made available by your lecturer/tutor to assist you in debugging your program. Perl/CGI programming is not difficult, but it has quite complex contextual and practical issues, mostly to do with integrating your system into the redgum server environment correctly and securely. You are expected to address these issues yourself. We will be assessing you on your performance.

Due Date

Wednesday, 13th May 2008 at 5pm. This assignment is worth 20% of your total mark for CSE3WE Web Engineering. Note that this submission date will overlap with the second assignment becoming available, so you may wish to submit this (considerably easier) assignment early in order to allow more time for you to work on the next one.