[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

QZB aka Example project specifications. Welcome!



Hi!            

As I promised, I prepared  some  more  specifications  for  the
QuiZ-Browser  I  plan  to  write  (with  the  help   of   other
co-developers). (In fact, its quiz server/client...)

What you find below I started formally, but  then  it  was  too
complex  to  write  formally,  so  I  used  examples   wherever
possible.

(By the nature I am an idea-generator, so it is sometimes  hard
to me concentrate on some other type of activity ;-)  But  I'll
try hard.)

I wish interested people could look into it and tell  me  where
things could be made better.

I  even  thought  about  new  protocol.  Something  like   DDTP
(didactic data transfer protocol),  which  could  add  security
features to the scene. (You known, test contents are to  remain
CLOSED otherwise they will not be tests any more!)

I  easily   agree,   that   the   project   I   code-named   QZB
(quiz-browser), seem banal and the easiest thing to do!

However, its a most widely used  type  of  software!  And  most
needed too. (I know, there are lots of ways to it on Mac/Win. I
even imagine some software already exists for  the  purpose  on
Unix. But we are making example open source project and  nobody
knows if it just fails in 4 weeks or will be a De-facto standard
two years from now!!! And  also  this  is  not  usual  for  OSS
project to start from ground zero.)

After I specified some examples on .qzb  file  (with  data),  I
thought I must add some editor to help those teachers who don't
think (like myself) that writing text files is great idea.

The syntax of the .qzb file  is  far  from  final.  Probably  I
should made it  XML  or  SGML  and  use  some  editor  for  its
creation. However, I am not closely familiar with these  and  I
think it will not be a problem  to  add  this  feature  in  the
future.

I plan all coding to be done with, as I think, best language in
this case - Perl, and Perl/Tk for the graphical interface.

As an initiator, I will be in charge of development process and
make final decisions. (this way we avoid unnecessary disputes.)

I do not give any release dates this early, but later  we  will
probably add some synchronization.

Please, also keep in mind that most (if not  all)  of  us  have
other  duties  and  hobbies,  so  our  pace  will  be  not   so
predictable.

ANY IDEAS AND HELP-OFFERS (WITH  EXPLICIT  MENTIONING  OF  WHAT
PART YOU CAN HELP TO IMPLEMENT) ARE WELCOME!

I myself will try server-side and Perl/Tk interface  first.  (I
need to learn Tk in the process, BTW)

Now I will wait for your  response  and  think  it  over  again
before actual code appear.

(Some parts can be done already. For example, I  will  be  glad
for the example how to insert different widgets into  text-flow
in Perl/Tk... I have seen the  'widget'  progie  examples,  but
can't figure out how to receive values  back  when  user  fills
them).

Another problem is where to keep the code online. I don't  have
any Unix ox on the net, so I can't orginize CVS (even if I  new
how I can do it ;-) - I am familiar only with rcs).

So, ./configure is something I am not great at... (if st all).

I am familiar with RPM-packaging, so, it will be no problem for
me to create one.

Please, look if I something is missing from  my  specification.
(I am too old to be ruthless hacker. Only 5 years ago  I  could
just do it myself, but now its a lot more fun to do it together
and put GPL on it.)

(If you write to me privately on the  topic,  add  QZB  to  the
Subject - this way I will not miss. If you have something worth
public to hear, I ask Douglas if we can use seul-edu. QZB  sign
will help too.)

Hope to hear from you! Thank you for your attention!


Sincerely yours,
Roman A. Suzi


 -- Petrozavodsk -- Karelia -- Russia --
    -- powered by Linux RedHat 5.1 --


------------- Specification / README /TODO ---------------------

<NAME>    (code name = qzb)

Description

The  program   <NAME>   is   intended   to   be   used   as   a
trainer/quiz/exam program, specializing on languages. It can be
used as a browser of the didactic material, containing  set  of
problems students are expected to solve or  train  on.  Program
can be run in different modes and with different front-ends.  To
facilitate usage of the program on  client  computers,  CGI  is
provided as well.

Platform

Server-side: 
    UNIX/Linux/Perl/web-server
Client-side: 
    UNIX/Linux/Perl/Tk,  ncurses,  or  anything  with  decent   WWW
    browser via CGI.

Copying

<GPL>

Author

Roman A.Suzi (the initiator)
<AUTHORS>

Where to get?

<URL>

Extended description (for co-developers)

( <NAME> == qzb == QuizBrowser )

The basic idea of the program <NAME> is quite simple:  it  must
be able to read problem set file specified and provide students
with  exercises  from  the  file  via  one  of  the  front-ends:
ncurses-based, Perk/Tk (X)-based and web-based.

Accordingly, we have different parts (*  -  not  in  the  first
release):

  qzb
  qzb.text
  qzb.X
  qzb.cgi
* qzb.ed
* qzb2ps
* qzb2latex

The three client parts run core part  --  qzb  --  to  get  the
individual problem from the specified problem set file:

sample_problems/*.qzb

In this respect, qzb acts  like  well-known  'fortune'  program
with the exception that qzb is provided  with  some  additional
keys to arrange exercises in desirable manner and some  special
markup is used for additional information.

As I see, these command-line switches of qzb are:

-s #, --seed #     -- random seed to be used (it is needed
                      so different instances of training
                      processes will be consistent)

-t #, --req #      -- task request number

-r, --rnd          -- retrieve random task which have not
                      occurred in the instance (requires
                      --seed)

-f <qzb-file>      -- file with problem set

-o <output-file>   -- output file (or standard if missing)

Client-side have no switches, only qzb file specified.


What it looks like?

As this program is not very complicated, it is  appropriate  to
provide some informal description (a scenario)  of  what  users
will see.

First of all, a teacher prepares his own problem  set  file  or
chooses one of sample files. The teacher must have rw access to
appropriate qzb directory or  make  his  directory  visible  to
special qzb user. (It is needed for task set security reasons).

Students run a qzb (in one of the front-end variants) and choose
which course they want to work, or the tutor prestarts programs
for the exam.

In case of www-frontend,  it  will  look  like  going  to  some
web-page   with   optional   password.   Web-interface   course
consistence is controlled by hidden values in the <from> tag.

All other information is provided in .qzb file.

Now what each student will see at the  screen.  First  of  all,
there will be some a (customized  by  a  teacher)  instruction,
which is telling how to work with the qzb. Then student  starts
to work with the material.

According to the data in .qzb file, the student will  be  faced
with a series of 'cards'. Each card  will  contain  a  problem,
which a student will be able to solve, inserting some  text  in
the places of special icons with  question  marks  OR  choosing
some  values  from  multiple-choice  widgets.  There  could  be
several places on one card, where student choice must be done.

A student make through all the cards and gets a  screen,  which
prints his scoring and/or exam results.

Now, lets look into more details of the process.

First of all, there could be several modes in which  cards  are
presented:

TM. Training mode. In this mode we tell our student he had
    some errors on the card, so

TM.1. he must correct wrong places by continuing on
      the same card
TM.2. right answers are presented to him and he proceeds
      to the next card


CM. Control mode. In this mode we don't show a student
    his errors after each card, but give him detailed
    report later, so he can analyze his errors.

*AM. Adaptive mode. It is like TM or CM mode, but the sequence
    of cards depends on the answers, given by the student.

EM. Exam mode. It is like CM, but we aren't obliged to give out
    detailed error information

EM.1. We show him the topics and number of errors he did in
      each topic
EM.2. We just tell the student his score/exam result


The adaptive behavior will not be  implemented  in  the  first
release of the program. However, we must have  its  possibility
in       mind       by       allowing       more       flexible
task-acquisition/classification scheme in the qzb server-end.

N.B.   Client-end of qzb is not processing rightness/wrongness  of
  student answers.  It  is  essentially  a  "browser",  which  is
  controlled by the "packets" it acquires from qzb  server.  This
  makes server-end more complicated, and  clients  more  easy  to
  implement. Client side is identified by the unique seed, which
  is also an ID of the client-instance.

Now, to the types of quiz-widgets:

- multiple (closed) choice list
- placeholder to type-in correct answer.
- checkbox
* order-me widget: the student must sort entries in it by
  dragging
* build-correspondence: the student is expected to make
  correspondence between entries of two lists. The correspondence
  doesn't need to be 1:1, it could be 1:M, M:1 or M:M.

(* - these will not be present in release 1.0,  just  something
we must have in mind, designing the qzb)

(*)The qzb client must be able to show text (letters)  as  well
as pictures. This will enable to make tests with  some  unusual
characters.

However, this is not the goal of release 1.0. As we plan to use
full Unicode, many  characters  (math  or  transcription  signs
among them) will be possible to draw without any problems.

Now, about how a teacher will prepare his own material.

First of all, the material must be plain full Unicode text file
with special convenient to humans mark-up in it.

The possible example of sample file is given below. (It is  not
final and needs some polishing and critique! The  final  format
must be easily extensible and have intuitive structure.)

(Do  we  need  a  visual  editor  to  it  or   internationalise
"command=" things or both???)

--- sample.qzb --------------------------------------------------------

[global]
mode=CM           # control mode
timer=20m,"You have $timer to complete this test"
select=5          # only 5 questions from
random=y          # shuffle

[1] 
title=Instruction
body=
This is sample quiz file. And this is it's start card.
Please read carefully the instructions below to
answer correctly to the questions...
==

[2] 
title=Question 1
topic=anatomy
body=
Healthy human being has _1_ legs and _2_ head_3_.
==
[.1]
choice="2","4","6"
right="2"
score=2
[.2]
fill=7 letters
right="1","one"
score=1
[.3]
fill=1 letter
right=""
score=1

[3]
title=Question 2
topic=zoology
timer=3m,"You have $timer to answer this question"
body=
Who lives in the sea (mark checkboxes)?

_1_ salmon

_2_ elephant

_3_ whale

_4_ dolphin
==
[.1]
right=n
score=1
[.2]
right=y,n
score=0
[.3]
right=y
score=1
[.4]
right=y
score=1

...............

[12]
title=Results
body=
Thank you for your answers!
You have earned $score points.
It means, that $result
==
criteria=0,7,"you failed. Sorry..."
criteria=8,10,"you passed! Congratulations!"
# criteria=0%,69%,"you failed. Sorry..."
# criteria=70%,100%,"you passed! Congratulations!"

----------------------------------------------------------------------

This format is raw  yet.  For  example,  how  to  provide  more
interactive diagnostics for a student's step/error?

Computer replies must be smart, they  are  to  give  additional
information, so the student could think again and fill the form
right  way.  Probably,  the  may  be  specified  as  additional
property to the "command=" lines of the questions.

* Not to forget:

- Font size and family/type must be in the  preferences  for  the
qzb-clients somehow... I don't want people complain  that  font
is too large or too small...

- The same with bg/fg colors...

- Have i18n in mind. Anything user meets must be language
  independent. Even the last error dialog! (I don't yet know
  how to do it right: locales seem to change too fast in Linux...)



<to be continued>