Jump to content

How to create an Exam application (hundreds of questions)


Sergio
 Share

Recommended Posts

Hello there folks,

I'm having trouble visualising how can I create an exam app that will have many exams with 20-200 questions (multiple choice) each. The questions will be organised by 3 categories (knowledge area, process group and level of proficiency).

The students will take several tests as a preparation for a real certification exam. I'll have to create reports with the total of correct questions, stats from each category (showing where they need to improve), how long they took etc. The real exam is 4-hour long (200 long questions).

The exams will be created by the admin and are the same for all users. There will exames with different levels of difficulty on each category and exams comprising all categories and all levels. We will have something like 1,000 questions on the database to choose. 

See the screenshot from a desktop system (not my own). 

post-367-0-65209700-1440170317_thumb.png

My problem is: how can I approach this? 

When the user take and exam, should I create an instance of the exam page? Will form builder help me on that (I think not)?

How can I save the user answers from each question to show the statistics at the end and have a history of exams taken along a year? I need to show how the student is improving along the way. Should I create a page that will work like a pivot table? 

It will good to now also what questions are most incorrectly answered by all students, so we can improve them if needed. And also be able to receive student's feedback on each question.

I know that is a lot to ask, so feel free to ignore. :)

---

I know I can create this app on other frameworks easily enough, but PW will be a handy tool for other features I'm planning but I cannot see how to best approach this. Thanks!

Link to comment
Share on other sites

This is what I've in mind.
The purple tables are the pivot ones. To see the relationships you have to click on the double arrow button.
 
You can comment/fork it here: http://www.laravelsd.com/share/hEYbzi
 
Screenshot:
 
Planned Features
  • Storing of quiz results under each user
  • Previous quiz scores can be viewed on category (Knowledge Area) page
  • Success rate for each category (there will be more can be monitored on a progress page
  • Multiple choice question type
  • Display an optional image alongside the question

I think I'll use Laravel for this. 

Link to comment
Share on other sites

I have made a similar site in joomla with a paid extension. I had to mess around a bit making it work together with a subscription and a CCK components. But if you do not need those, it is quite fast to get started and import quizes. Not sure if that it is a path you are ready to consider though, and surelly not a "proper" way for a PW or a Laravel skilled developer :).

I am sure it is quite possible to do it with PW, but it will demand some effort (as with Laravel).

Link to comment
Share on other sites

I would probably organize it this way:

- /categories/ - category

  - /categories/questions/

    - question1 - question template with repeater for answers - answer is just a text and checkbox 'correct'

    - question2 

    - ...

  - /categories/tests/

    - test1 - test template - just a page reference field to ../questions/*

    - test2

    - ...

I am not 100% sure, but I think you can add children to users, since it's basically just a page? If you can't, it shouldn't be hard create a page for each user automatically, somewhere else in the tree.

 - /users/userId/

    - ./attempts/

       - /md5(pageId)/ - 'test-attempt' template. has a page field for a test, has a text input for a serialized form data.

The workflow would be:

1. load test (build it from the questions)

2. take it

3. on submit, create new page under /attempts/, add answers, calculate results

4. show results.

Bam. Done. :)

  • Like 1
Link to comment
Share on other sites

I would probably use PW instead of Laravel because of its admin.

Question is that do you need a full-featured admin or a simpler one, but even in the latter case I think you would make your life easier with PW on the long run.

Link to comment
Share on other sites

Thank you all for the suggestions, I'll do some more research and create a prototype in the next days and I'll come back here. 

@mr-fan, I've found another script that seems good (but I rather develop my own because this will be a LTS product)-> http://codecanyon.net/item/digi-online-examination-system-does/8610180

Best regards,

Sergio

  • Like 1
Link to comment
Share on other sites

If you wanna keep us informed about this topic would be nice.

Since i've a old website that until now run with my former CMS - and at the day i will setup all new with PW i will need a kind of multiple choice module or application, too.

Best wishes for your project,

mr-fan

  • Like 1
Link to comment
Share on other sites

[news from the trenches]

I created a page called "Question Bank" and populated it with 3 questions. I'm showing one per page and storing the answers in the session, along with the user id. I'm using the session values to mark the choice made (if the user goes back to a previous question) and I'll save it in the DB on the end of each quiz attempt. 

The code is on github (along with a db dump) -> https://github.com/sjardim/ProcessWire-Quiz-App

post-367-0-27191300-1440654725_thumb.png
 

This is the admin so far.

post-367-0-27482500-1440654721_thumb.png
  • Like 4
Link to comment
Share on other sites

  • 5 months later...

@ Sergio

Curious, did you ever develop this further? I've been building a Moodle training site at work, came across your post as I wondered how I might implement a simple question bank/student quiz outcome tracker in ProcessWire.

Link to comment
Share on other sites

Hi @WinnieB,

No I didn't. I decided to use Laravel instead. PW's admin capabilities would've being great, but the main thing that drove my decision is that I couldn't find an easy way to store some of the info needed to generate reports, although I know it's possible with PW. Is just my lack with advanced experience with it yet. :) There are other reasons, most business related, and I'm also waiting for Laravel Spark to be released, as it will reduce a lot the code I'll need to write to handle payments and user management.

Maybe in the future I'll decided to try again and create this kind of advanced quiz/exam application in PW. Maybe turn it into a module. :)

Link to comment
Share on other sites

  • 2 weeks later...

[news from the trenches]

I created a page called "Question Bank" and populated it with 3 questions. I'm showing one per page and storing the answers in the session, along with the user id. I'm using the session values to mark the choice made (if the user goes back to a previous question) and I'll save it in the DB on the end of each quiz attempt. 

The code is on github (along with a db dump) -> https://github.com/sjardim/ProcessWire-Quiz-App

 

This is the admin so far.

what is the pw's backend admin id and password of the sample quiz?

Link to comment
Share on other sites

  • 4 weeks later...

Were you ever able to create this ? I am trying to achieve same thing and was looking for help too.

This is what I've in mind.
The purple tables are the pivot ones. To see the relationships you have to click on the double arrow button.
 
You can comment/fork it here: http://www.laravelsd.com/share/hEYbzi
 
Screenshot:
 
Planned Features
  • Storing of quiz results under each user
  • Previous quiz scores can be viewed on category (Knowledge Area) page
  • Success rate for each category (there will be more can be monitored on a progress page
  • Multiple choice question type
  • Display an optional image alongside the question

I think I'll use Laravel for this. 

Link to comment
Share on other sites

Were you ever able to create this ? I am trying to achieve same thing and was looking for help too.

Hi Manshu! 

It's on hold as I'm waiting for the release of Laravel's Spark and as I finish other jobs as well. Sorry for not be able to help!

Link to comment
Share on other sites

 Share

×
×
  • Create New...