Incubating ::: mod_exam
Maintained by Jai Gupta, Pinky Sharma
Built of people who want to conduct large scale MCQ Quizzes.
Latest release:
98 sites
26 fans
Current versions available: 1

Warning  - Technically it is possible for students to manipulate their exam grades if they know right parameters or they could see correct answers if they could read javascript objets being transmitted in their browser. Use with Caution.

This is an activity module for Moodle. It allows the teacher to build quizzes with multiple choice question based on Quiz module. Main purpose of Exam module is to improve performance of quiz and to reduce database overhead, so that a large number of users can attempt quiz simultaneously.

Built of people who want to conduct large scale MCQ Quizzes.


  • High performance and less database overhead
  • No need to create quiz again, use already created quiz.
  • Simple and essay


  • Reduce a large number of database query, especially write quires to database.
  • Use of Moodle MUC


  • Only multiple choice question supported
  • Allow only defferedfeedback questions behavior.
  • Partial marking is not supported.
  • Question with option 'one answer only' give points only if answer set to 100% will be selected.
  • Multiple answers allowed question will give points only if all the correct answer will be selected.


Screenshot #0
Screenshot #1
Screenshot #2


Jai Gupta (Lead maintainer)
Please login to view contributors details and/or to contact them

Comments RSS

Show comments
  • Mon, Dec 8, 2014, 6:51 PM
    Hello David. Plugin has been updated.
  • Fri, Dec 12, 2014, 5:32 AM
    Hi Jai,

    I'm reviewing version from https://moodle.org/plugins/download.php/7463/mod_exam_moodle28_2014120800.zip ( Release date: Monday, December 8, 2014, 10:43 AM).

    The whole logic of grading is done in the browser, client-side. Then result is passed to result.php, which is saved to DB - is that correct?
    You are aware that it's fairly simple to submit POST request to result.php & set any grade for yourself?

    I see how handling it all client-side will greatly help to decrease the load on the server but since it makes cheating easy, I think you should at least put a hefty warning in the description of the plugin about that.

    Related to security as well;
    you should really not use $_POST directly but Moodle optional_param or required_param functions

    This version did not work for me when I set one single multiple choice question with answers set to 100%, 90%, 60% the quiz always gave me 0 points. Is it working OK for you (am I doing something wrong you think)?

    Btw. you may want to fix 2 typos in lang string:
    $string['modulename_help'] = 'The exam module allows users to take exam of -> mutiple <- choice question based on -> slected <- quiz.';

    Thanks for submitting your work!
  • Fri, Dec 12, 2014, 2:47 PM
    I agree with Tomek. Evaluating client-side is something that users must be aware of (or it must be reimplemented). There are situations where this is acceptable - such as funny motivation quizes. But I would strongly discourage anybody from using such system for real examinations.
  • Sat, Dec 13, 2014, 2:54 PM
    Thank for your review.

    Yes, only result is passed to result.php and then saved to DB, if users know parameters then they can set their own grade which is a security flaw. If users computers are monitored or if they are in secure environment then this is no problem, however we do understand that over Internet or network where users have complete unmonitored access to computer they could manipulate their grades.

    One of our goals was also to build a quiz that would work even if network or server access is interpreted so it was important to minimize dependency with server.

    Technically, it is possible to not pass "answers" client side and rather keep it with Moodle MUC at server, then selected options from students can be sent to server (php) and grades can be calculated at server side. This would also not increase any db write operation but will add little processing. While all this is possible but at present not in our priority list. We might do it in future release or someone might build upon our work. We will accept any pull request ;)

    We have added the warning on description and module help content.

    Code has been updated and used Moodle function for parameter instead of $_POST.

    Quiz always give 0 points was a bug. We have fixed it. Answer set to 100% will only give points rest option will give 0 marking (users should also be aware about it).

    Typo error has been fixed.

    Once again, I thank you for your reviews and honest opinions. All this is very important to us and helpful for our team.
  • Wed, Dec 17, 2014, 5:10 AM
    Hi Pinky,

    Thanks for the quick update! I've tested the latest versino against Moodle 2.8 and it's functionaly.

    In your result.php, instead of:
    $examid = required_param('examid', 0, PARAM_INT);

    it should be:
    $examid = required_param('examid', PARAM_INT);

    Maybe we should also mention that the answers are sent & stored on the client-side (in the user's browser), so anyone can see the right answers by looking at the page code?

    Besides that, the below are just points for your information, up to you to address them (or ignore):
    1. version.php is missing @copright tag.
    2. Moodle code checker complains a lot - but all the warnings/errors are the picky ones - usually whitespaces. You may consider getting that inline with Moodle coding style.
    3. In mod_form.php in function definition(), you use $CFG but don't declare it as global (so it will be undefined).
  • Thu, Dec 18, 2014, 5:04 PM
    Hi Tomasz,

    We have updated the code with modification. Warning updated and all your comments are already present for anyone to see.

    We use Moodle NEWMODULE code for any new mod plugin development and most of the warnings/errors inherited from this module, including point (3). I would recommend you to ping maintainer of NEWMODULE so that we could all benefit. For now, I have improved what all I could in limited time that I have for this plugin.
  • Fri, Dec 19, 2014, 6:36 AM
    Hi again. Thanks a lot to Tomek for the time he spent on the peer-review of this, and to you guys for providing fixes of raised issues. The overall concept of the module looks attractive from the plugin description, but I personally think the potential risks of abuse is very high here. For example, you do not check for sesskey at all in the module. There is zero authentication and authorization performed in the result.php so effectively anybody can set any grade for their exams. Grades must be taken seriously in any learning management system (similarly to how money transfers must be in e-banking).

    For this reason, I am going to approve this module to be available in our staging "Others" category. This should allow you to gather feedback from the community of users and eventually improve the module for the future.

    Thanks for your suggestion to check the current state of the NEWMODULE template. I shall put it into my todo list.
  • Fri, Dec 19, 2014, 1:00 PM
    Hi David, Tomasz

    Thanks for your inputs.

    Please see https://github.com/vidyamantra/moodle-mod_exam/issues/1 and suggest.
  • Thu, Mar 3, 2016, 2:36 AM
    Hello Dear friends ,

    how could i upload many students at once and make exam for 40 students as example and all result for their exam will save with result where ( every student have different result ). Thank you
  • Thu, Mar 3, 2016, 1:27 PM
    Hi Ibrahhim,

    User upload is not part of exam module. You can upload students through Moodle interface (Site admininstration -> Users -> Accounts -> upload users) .
    For detail see : - https://docs.moodle.org/30/en/Upload_users

    Exam module supports a large numbers of user attempt simultaneously without degrading quiz performance. So you can use this module for as many students as you want and a consolidated grade for whole exam will be saved in grade-book for every student.
  • Sat, Sep 3, 2016, 6:27 PM
    Works Great on Moodle 3.1+ (Build: 20160526). Great plugin for reducing server load. Speed of the quiz navigation has improved a lot too, if we dont care about security. I have two queries.

    1. Is it possible to add section headings in quiz navigation block too, like new Moodle shows.

    2. How can we relocate top quiz navigation block to original position. This will be very useful for questions with long text/image. May Save lot of scrolling.

  • Mon, Sep 5, 2016, 1:56 PM
    Hello Manish,

    These features are not available in this module. Section headings can not be added in navigation.
    Exam navigation is not a block , so it can not be relocated like other blocks.
  • Mon, Dec 4, 2017, 4:00 PM
    Hi Pinky,
    Thank you, for this module.
    It is definitely of interest to us.
    I gave it a try.
    And what I find is it is not echoing the Right Answer, if answer is wrong.

    In normal QUIZ module, I get a feedback - Your Answer is Wrong. Correct Answer is "blah blah"
    But in EXAM module, the feedback is - Your Answer is Wrong

    Have I done some wrong settings? How can we make the feedback exactly like QUIZ Module.

    Thank you!
  • Tue, Dec 5, 2017, 2:54 PM
    Hi Arabinda,

    Exam module display the "combined feedback" of quiz module. If combined feedback is missing then it will display default feedback "Your answer is correct" for correct answer and "Your answer is wrong" for each wrong answer.

    If you want to show "blah blah" for correct answer then you have to set this value in "For any correct response" under "combined feedback" which will be displayed for all correct answer. There is no way to show different feedback for each questions in exam module.
1 2
Please login to post comments