User Guide to Interactive WWW Ceilidh

[Provisional version 23 Sept 1996.]

The WWW access mechanism to Ceilidh was implemented jointly by the Computer Science Department at the University of Nottingham and the Maths and Science Centre at Ngee Ann Polytechnic.

Using "Netscape", first select the Ceilidh home page on the WWW. The page at your site may have a different URL. This page displays the current Ceilidh system general "message of the day" (set by the Ceilidh system manager) and offers various facilities.

It offers hyper-links ("hot spots") to several general Ceilidh text files. These include user guides to Ceilidh for students and teachers, and an overview of its design. [The current versions are mostly in crude preformatted ASCII, but HTML versions will be installed as soon as possible.] All of these files are relevant to Ceilidh generally, not just to a particular course within Ceilidh. The "Student Guide" and "Overview 1996" files will be of most general interest.

It offers access to a selection of the courses currently available. Through these you can see course and unit notes, and details of the exercises.

The course level screen

You are now in a specific Ceilidh course. The screen will display the course "message of the day" (set by the course leader) and will offer the following facilities.

The unit level screen

The next ("unit level") screen offers the following facilities.

The exercise level screen

The new ("exercise level") screen offers the following facilities.

The submission screen

Submission of your program causes Ceilidh to perform various operations. It keeps a copy of your program, compiles and marks it (see the Student's Guide for details of how it is marked), and keeps a copy of the marks awarded. It then brings a new ("submission") screen showing the following.

1. The dates and times of your most recent submission to this exercise.

2. The dates, times and marks awarded of your previous submissions to this exercise.

3. The results of Ceilidh's marking of your program. See the Student's Guide for more details of what the marking output means.

If the results indicate a perfect submission (for example "Overall mark awarded" over 90, or "Overall grade awarded" of A or B or C) you may leave Netscape now. Otherwise you should return to the previous screen, and correct (edit) the program to submit it again. Alternatively you could leave Netscape completely while you plan the corrections you will make, and return to Netscape and choose the same exercise at a later time.

Implementation of Interactive WWW Ceilidh

The initial screen is in the HTML file "~ceilidh/index.html" (by "~ceilidh" we mean the Ceilidh username's home directory) referred to by the CBT WWW server as "cbt.np.ac.sg/ceilidh".

Note: Most of the screens you see are generated by CGI scripts. They are not in ordinary static HTML files. You will have to search carefully through the CGI scripts to find items of text which need amendment. You may need to understand the operation of CGI shell scripts.

The list of available courses must be set up by editing this file "~ceilidh/index.html". It is not automatic.

The "Go to course" button on "~ceilidh/index.html" uses an HTML form to activate the CGI shell script in file "course.cgi" in an appropriate CGI permitted directory (using "method=post" and passing details of the student's name [identified by "Name="], ID ["Student="], password ["Password="] and requested course ["Course="] on standard input). For the present crude implementation, a file "~ceilidh/course./password" is used to store the passwords. Each line in this file is of the form

    ID:password:full name:date of first access:your IP address
A new line is added if the given ID has not been encountered before. This is a temporary arrangement; a more formal system will have too be inserted later.

The "course.cgi" shell script generates an HTML page (the course level page) which includes a form which activates the unit level "~ceilidh/bin-cgi/unit.cgi" shell script. Within the "course.cgi" script, the student's full name is stored in the shell variable NAME, the ID in STUDENT, the password in PASSWORD, and the course name in C_COURSE. Following Ceilidh conventions, the variable C_COURSED is set to point at the directory for the current course. The list of unit numbers and titles is generated by "course.cgi" during execution. It searches for "unit.*" directories, and shows their number and title. If it finds no units at all, a "course under development" message is displayed. The number of the chosen unit is passed to the script [identified by "Unit="], together with the previously entered ID and chosen course.

The "unit.cgi" script again generates an HTML page (the unit level page), which in turn includes a form activating the exercise level "~ceilidh/bin-cgi/ex.cgi" shell script. The unit number is stored in the shell variable C_UNIT, and the unit directory pathname in C_UNITD. The exercise names and titles are generated by "unit.cgi" during execution. [Perhaps if it finds no exercises, we should display a "unit under development" message.] The hyper-links to the unit notes are arranged so that HTML notes in "notes.html" are used if available (viewed using the script "vn.cgi"). Otherwise the plain pre-formatted ASCII notes in "index.cat" are accessed with a simple hyper-link. The HTML notes can include hyperlinks to exercise solution if required (see below). This time the input data and the number of the chosen exercise ["Exercise="] are passed over to "ex.cgi".

The "ex.cgi" shell script in turn generates an HTML page including a form activating the "~ceilidh/bin-cgi/solve.cgi" shell script. The exercise name is stored in C_EX, the the directory pathname in C_EXD. The form includes the program skeleton (or a retrieved copy of the most recent submission if the student has already submitted). The program is an HTML object of type "text area", and is passed over using the identifier "Program="; all such data is subject to many text conversions, all special characters are converted to hexadecimal in the form "%2B" for the character "+". "ex.cgi" looks for interesting files which may be of interest to set as hyper-links, including the program skeleton, the test data, etc. It should be possible later to read details from the exercise "setup.act" file (the setting up actions in the student menu of Unix Ceilidh) to decide which files to view.

If the "ex.cgi" script finds a "model.cgi" file in the exercise directory, it executes that instead of completing the "ex.cgi" execution. This means that exercise menus can be personalised to that particular exercise. The "model.cgi" should consist of the code from the point in "ex.cgi" at which it searches for the existence of "model.cgi" onwards. There is an example in course "c" unit "2" exercise "ccl", i.e. in the file "~ceilidh/course.c/unit.2/ex.ccl/model.cgi". [Perhaps we should have a similar system for personalised unit pages.]

The "solve.cgi" shell script converts the program to the proper characters (using the stream editor "sed"), and stores it in the exercise solutions directory ("~ceilidh/course.?/unit.?/ex.?/solns") under the name ".c". This is the standard Ceilidh convention. It then calls the Ceilidh marking command, currently stored in the file "~ceilidh/bin.www/mark" to mark the program; this command takes as arguments the student's ID, the course, the unit, and the exercise; it stores the mark, and displays the marking results in plain ASCII; later we should format them more nicely in HTML. The HTML page produced by "solve.cgi" and "mark" has no further forms or actions.

The "vn.cgi" script is for viewing the HTML notes for a unit. It replaces the string "$STUDENT" in the notes by the current student ID, so that the exercise knows who is executing it. For examples of how to refer to exercises from within the notes, see the file "~ceilidh/course.c/unit.2/notes.html".

Each CGI script starts with extensive code to set the environment and pick up the arguments passed to it. The code is the same for all scripts, and differs only in the identification of the arguments. They are so written that they work with both "method=get" and "method=post" techniques. The particular code for a particular script should be looked at following the line

    case $KEYWORD
and then the line with the
    AtEnd )
case itself. This determines the actions to take after all the arguments have been read.

Copyright Eric Foxley.