CO32037 Resit Coursework

For the coursework you are asked to build an on-line search engine for the module descriptors on the School of Computing Website.


You should write a script that parses the page at
and extracts the moduleid for each module. Your script should then read each module descriptor via the web and store its content in some format in your cgi-bin directory. This only needs to be done once.

The On-line Search

Your search engine should provide a Google-like search screen with a single textbox for the user input. The user can type in as many terms as desired. A plus sign (+) in front of a term indicates a required term (i.e., Boolean AND). A minus sign (-) indicates a term that must not occur (i.e., Boolean NOT). All other terms are connected via Boolean OR. A phrase is indicated by enclosing terms in double quotes ("").

The Results Page

The results page for the searches should provide a link to the module descriptor in which the term(s) was/were found. It should also print the sentence in which term(s) was/were found on that module. The search terms should be highlighted in a different color.


Your script should set a cookie. The cookie limits each user to 2 searches per minute. If a user attempts to perform more than 2 searches per minute, the results page should display "System busy. Wait a minute and then try again."


You must provide a resources page that lists any materials other than the materials from the lecture notes and exercises in the practicals which you may have used for your application. This must include any HTML, Javascript or Perl code which you may have downloaded from the web.

Documents to be handed in

At the final deadline you will be submitting the URL of your application and a printout of the source code of your application (only the Perl/CGI code, not the HTML pages). On this printout you should highlight with a pen the security subroutine of your application and any other pieces of the code that implement security measures.

Safeguarding your work

It is your responsibility to ensure that your files are read-protected from others. You should not leave any printouts of your code on Campus, not even in the rubbish bins. You should make regular backup copies of your code, for example, by storing the files on a floppy via your I-drive.