Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Work on grading service for Textbook/Learning platform #25

Open
vabarbosa opened this issue Aug 16, 2022 · 13 comments
Open

Work on grading service for Textbook/Learning platform #25

vabarbosa opened this issue Aug 16, 2022 · 13 comments

Comments

@vabarbosa
Copy link

vabarbosa commented Aug 16, 2022

Description

The Qiskit Textbook/Learning platform is a resource for learning and teaching about quantum computing. To further enhance the learning experience the platform provides multiple choice questions and coding exercises as a means to evaluate the reader's grasp of the content.

The goal of this project is to build up and further improve the current grading service to make it easier for content creators, university professors, etc. to create questions and exercises and automate the validation of the answers. This is one of the most highly anticipated features for the platform!

Deliverables

The output of this project will be

  • an updated Qiskit Textbook/Learning platform grading service
  • an improved workflow for submitting and evaluating exercises and questions

Mentors details

  • Mentor 1
    • Name: va barbosa
    • GitHub ID: @vabarbosa
    • What they do: Developer on the Qiskit Digital education team

Number of mentees

1

Type of mentees

  • Mentee 1
    • Required:
      • Interested in web and API application development
      • Interested in quantum education and learning
      • Knowledge of Python 3
    • Nice to have:
      • Experience in web and API application development
      • Experience with GitHub & open source contributions
@vabarbosa
Copy link
Author

FYI @pandasa123

@pandasa123
Copy link

Content creators also include university professors etc. This is one of the most highly anticipated features for the platform

@AshwinKul28
Copy link

This sounds very interesting to me, as a full-time developer for IBM Cloud I have great experience developing APIs, and large-scale applications. Would like to contribute to this. let's connect.

@GemmaDawson GemmaDawson moved this to Mentor Proposed Projects in QAMP Fall '22 Sep 2, 2022
@GemmaDawson GemmaDawson moved this from Mentor Proposed Projects to Mentee Proposed Projects in QAMP Fall '22 Sep 2, 2022
@GemmaDawson GemmaDawson moved this from Mentee Proposed Projects to Mentor Proposed Projects in QAMP Fall '22 Sep 2, 2022
@HuangJunye HuangJunye removed the status in QAMP Fall '22 Sep 2, 2022
@AshwinKul28
Copy link

HI @vabarbosa Do you want to connect sometime? Project sounds interesting.

@vabarbosa
Copy link
Author

@AshwinKul28 thank you for your interest! i will be sending you an invite to discuss further.

@AshwinKul28
Copy link

HI @GemmaDawson I have got assigned to this issue. Will be working with @vabarbosa and the team. :)

@GemmaDawson
Copy link
Contributor

Please add your Checkpoint 1 presentation materials.

@AshwinKul28
Copy link

HI @GemmaDawson, sorry I really missed your mail in the sea of emails.

@AshwinKul28
Copy link

AshwinKul28 commented Oct 11, 2022

Here's Presentation material for the checkpoint 1: cc - @vabarbosa

QAMP_Checkpoint1.pdf
QAMP_Checkpoint1.pptx

@GemmaDawson GemmaDawson moved this to Checkpoint 1 Submitted in QAMP Fall '22 Oct 11, 2022
@AshwinKul28
Copy link

Checkpoint 2 Update

  • We have finalized the scope for our APIs, the core functionalities, and requirements as well.

  • The behavior of our APIs should be simpler and it should focus on the basic tasks regarding the questions lifecycle.

  • Every question in an assignment can be one of the following two types

     1. MCQ based
    

Screenshot 2022-11-03 at 12 39 42 AM

  2. Code snippet based

Screenshot 2022-11-03 at 12 40 38 AM

The current approach is to take input in the form of the python textbook and then render it on the UI. But ofcourse that's not scalable.

Hence we've come up with a more scalable approach where questions can be added/removed/updated dynamically, basically we have introduced CRUD operations on the question as an entity.

  • Add a question
POST /questions

1. MCQ based
{
  "text": "Answer the following",
  "type": "mcq",
  "mcq": {
    "option_1": "chicken came first?",
    "option_2": "egg came first",
    "option_3": "Quantum physics came first",
    "answer": 3
  }
}

2.  Code based
{
  "text": "Complete the following snippet?",
  "type": "code",
  "code": {
    "metadata":{
      "id": "ps1-quiz-2",
      "grader_answer": "qc",
      "grader_id": "textbook_practice_exam/problem2a"
    },
    "source": "from qiskit import *\n# Start your work here.\n# We've provided the circuit that is shown above\n# Your circuit MUST be named qc\nqc = QuantumCircuit(2)\nqc.draw()"
  }
}

  • Get a Question
GET /questions/{id}

{
"id": "65aa343c-1d8f-42cc-8e2f-b1268584a03a",
"text": "Answer the following",
"type": "mcq",
      "mcq": {
          "option_1": "chicken came first?",
          "option_2": "egg came first",
          "option_3": "Quantum physics came first",
          "answer": 3
       },
}

  • Get all Questions
GET /questions

{[
{
"id": "65aa343c-1d8f-42cc-8e2f-b1268584a03a",
"text": "Answer the following",
"type": "mcq",
      "mcq": {
          "option_1": "chicken came first?",
          "option_2": "egg came first",
          "option_3": "Quantum physics came first",
          "answer": 3
       },
},
{
  "id": "364fac1c-0ec5-45ef-aea9-cf64ac05b4e9",
  "text": "Complete the following snippet?",
  "type": "code",
  "code": {
    "metadata":{
      "id": "ps1-quiz-2",
      "grader_answer": "qc",
      "grader_id": "textbook_practice_exam/problem2a"
    },
    "source": "from qiskit import *\n# Start your work here.\n# We've provided the circuit that is shown above\n# Your circuit MUST be named qc\nqc = QuantumCircuit(2)\nqc.draw()"
  }
}
]}

  • Delete a question
DELETE /questions/{id}

204 No content

  • Update a question
PUT /questions/{id}

{
  "text": "Answer the following",
  "mcq": {
    "option_1": "chicken came first?",
    "option_2": "egg came first",
    "option_3": "Quantum physics came first",
    "option_4": "Egg and chicken were in the superposition states"
    "answer": 4
  }
}

All the above operations are completed with the implementations, And we have started work on the UI as well.

FYI - @vabarbosa @GemmaDawson

@GemmaDawson GemmaDawson moved this from Checkpoint 1 Submitted to Checkpoint 2 Submitted in QAMP Fall '22 Nov 3, 2022
@GemmaDawson GemmaDawson moved this from Checkpoint 2 Submitted to Final Showcase Submitted in QAMP Fall '22 Dec 19, 2022
@GemmaDawson
Copy link
Contributor

@AshwinKul28 - please upload your Final Showcase presentation materials, and if needed, update the project Title and/or description.

@AshwinKul28
Copy link

QAMP_Final.pptx
QAMP_Final.pdf

HI, @GemmaDawson Here's the final presentation material, and I cannot attach the video here as its too big. I have sent final video on the slack. Thanks

@GemmaDawson
Copy link
Contributor

Congratulations on completing all the requirements for QAMP Fall 2022!! 🌟🌟🌟

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Final Showcase Submitted
Development

No branches or pull requests

5 participants