!read tabletheme
The central piece of a WIMS server is a cgi program, usually in the name of
wims.cgi. It takes all the http calls to the server, then does the following
work:
<ol>
<li>Call the module asked by the user, and process parameters and variables
according to what is defined in the module.
</li><li>Session management.
</li><li>Send the result of the process to the user.
</li><li>Write to different log files.
</li></ol>

<h4> Modules of WIMS</h4>
<p>
A WIMS server is a modular system, with different applications as modules.
At each new call to WIMS, the user has to specify which module he wants to
access.
</p><p>
A WIMS module may be an interactive course or interactive exercise (of any
level), a computational tool, a dictionary, a mathematical game, a database,
or a mixture of the above.
</p><p>
WIMS modules are independent from each other. Each module has its own
directory, which serves as its address, and contains all the files of this
module. Different modules have different authors and different maintainers,
and may follow different copyright policies.
</p><p>
There is no relation between modules in a same WIMS site, except hypertext
links which allows one module to access another in various ways.
</p>
<h4>How to access a WIMS server</h4>

WIMS is accessed by a request to the main cgi program, for example
<pre>
https://wims.univ-cotedazur.fr/wims/wims.cgi
</pre>
<p>
which usually should be followed by parameters. A call to the main wims.cgi
program without parameter will bring up the WIMS homepage of the site.
</p><p>
Parameters of wims.cgi is a usual http $emph name=value$emphend pair, where the
$emph name$emphend field may be one of the following:
</p>
<ul>
<li><span class="wims_emph">cmd</span>: the value is the command of the call.
Valid commands:
$table_header
$table_tr<th>Parameter string</th><th>Meaning</th></tr>
$table_tr<td>cmd=intro</td><td>get introduction page of the module</td></tr>
$table_tr<td>cmd=new</td><td>open new working session</td></tr>
$table_tr<td>cmd=renew</td><td>restart working session</td></tr>
$table_tr<td>cmd=reply</td><td>send reply to the module</td></tr>
$table_tr<td>cmd=next</td><td>get next exercise (in a working session)</td></tr>
$table_tr<td>cmd=config</td><td>set preferences</td></tr>
$table_tr<td>cmd=help</td><td>get contextual help</td></tr>
$table_tr<td>cmd=hint</td><td>get contextual hint</td></tr>
$table_tr<td>cmd=resume</td><td>resume work (e.g. after help)</td></tr>
$table_tr<td>cmd=getins</td><td>get dynamic insertions: internal use
by the server. Not to be used by modules.</td></tr>
$table_end
</li><li><span class="wims_emph">module</span>. the value is the name of the module
which the user wants to access.
</li><li><span class="wims_emph">session</span>: the value is the number of the current
session of the user. <br>
The session number is automatically generated by wims.cgi, and is usually
automatically contained in the pages sent by the server. Tampering with this
parameter by the user (e.g. in order to spy into others' work) is not
allowed and has practically no chance to get through.
</li><li><span class="wims_emph">lang</span>: the value defines the prefered language
of the user.
</li><li><span class="wims_emph">user</span>: the value is the user name (for
registered users; reserved for internal use).
</li><li><span class="wims_emph">useropts</span>: the value contains user options for the
server. The format is coded and may vary from version to version.
</li><li><span class="wims_emph">worksheet</span>: reserved for internal use, for
determining user works assigned by worksheets.
</li><li><span class="wims_emph">special_parm</span>: this parameter is reserved for
special requests (help, etc).
</li><li>Any variables accepted by the module the user is working on (or
wants to work on).
</li></ul>

Example:
<pre>
https://wims.univ-cotedazur.fr/~wims/wims.cgi?cmd=new&+module=tool/algebra/factor.en
</pre>
calls the WIMS server at wims.univ-cotedazur.fr, with `new' as the value of `cmd',
`tool/algebra/factor.en' as the module name.


<h4>How to use the supervisor-side interface</h4>

Supervisors of registered classes can maintain their classes and consult
results of students via the same web address (the main cgi program), just
by logging in as supervisor. All the options are then available via html
links and buttons.
