CircuitVerse Practice Section

This blog post is the final report for the CircuitVerse Practice Section , which is a part of Google Summer of Code 2024. The project aimed to create a practice section where user can practice circuit related problems.

final_report

Table of Contents


Implemented features

  • šŸ‘„ Moderator Role Administration: Allowing admins to add and remove question moderators.

  • šŸ”§ Question Category Management: Allowing admins and moderators to create and delete question categories.

  • šŸ” Question Listing: Features including search, filtering capabilities, pagination, and view options.

  • šŸ“ Question Management with Simulator Integration: Allowing admins and moderators to add, edit, and delete questions. Users can attempt a question with circuit boilerplate.

  • āœ… Auto Verification and Submission: Auto-verify and submit circuits, storing users’ progress.

  • šŸ“Š User Dashboard: A dashboard to track submission history and progress, with the ability to toggle visibility.

  • šŸš¦ Feature Access Control: A Flipper feature flag to control access/block this entire feature.


šŸ‘„ Moderator Role Administration šŸ‘„

From the admin dashboard, admins can add new moderator email IDs or remove existing ones.

image

šŸ”§ Question Category Management šŸ”§

Similar to the moderator management feature, in the dashboard there will be an option for Add categories. But unlike Add modertaors , Add Categories will be visible to both question bank moderators and the admins. Clicking this button will open a modal where user can add a new category or delete and existing one.

image

The below screenshot shows the placement of the above two feature buttons:

image image

šŸ” Question Listing šŸ”

This is the page where users will be able to browse and view questions. The features implemented on this page include:

  • Search filer to search for any questions based on its title or description.
  • Filter by question category, difficulty level and status (attempted, unattempted or solved).
  • Change the view to list or grid mode. By default, all the questions are displayed in grid view.
  • Pagination is implemented to display a maximum of 6 questions per page.

image

šŸ“ Question Management with Simulator Integration šŸ“

Moderators will be able to create/delete/edit a question.

Create question
  • Moderators will be given a form where they click on Add Question menu in the dropdown. In that form they can add question heading, statement (markdown supported), question category and difficulty level.

image

  • On clicking Create Circuit boilerplate and Test Data, simulator page will be opened to add circuit boilerplate, which will contain input/output probes and a pre-configured testbench. Moderator needs to click on save on the top right after adding boilerplate and testbench data. This gives users a ready-made setup to start solving digital logic problems.

image image

Edit and delete question
  • Moderators and admins will be able to edit and delete a questions. On the questions page, two additional buttons, Edit and Delete will be available for modifying or removing a question. When the Edit button is clicked, a form similar to the one used for creating a question will appear, pre-populated with the existing question’s data.
  • On clicking the delete button an alert will be shown to confirm the action, and on clicking yes, questions will be deleted.

image

Simulator Integration
  • When the user clicks on a question, then the question is displayed alongside the circuit boilerplate which the moderator has configured while creating the question.
  • TestBench is removed from the UI , so that user can’t see hidden test cases while attempting a question.

image

āœ… Auto Verification and Submission āœ…

  • When the user clicks on Submit and Test button, then the number of test case passed out of total number test cases (provided in the testBench while creating question) is shown as an alert. If all the test cases are passed, then it goes under solved category else it goes under attempted category.
  • Progress of the user is also saved. When the user clicks the Submit and Test button, their progress is saved, allowing them to resume later from the same point where they left off.

šŸ“Š User Dashboard šŸ“Š

  • In the dashboard a separate tab named My Questions is added beside Collaborated Circuits tab. In this tab an user can see all the questions which he/she has attempted or solved. On clicking the View button, he/she will be able to attempt the question again and circuit will be restored from where he/she left off.

image

  • User has also have an option to make the My Questions tab public or private. If a particular user makes his/her questions dashboard public, then other users will be able to see his/her submissions of a particular question in his My Question Tab on the url users/:user_id . If he/she modifies that submission, then it will be reflected on his/her dashboard for the same question and not on other user dashboard.

image image

šŸš¦ Feature Access Control šŸš¦

A feature flag named question_bank has been added in flipper dashboard to enable or disable this feature. When enabled, all project features are accessible to members of the respective roles. When disabled, none of the features including administrative functions can be accessed.

šŸ“… Future work šŸ“…

  • As of now user can see the latest submission of a partcular question and make changes on that. In future, they will be shown all list of submission of a particular question and can navigate to that submission.
  • Analysis of submission in the dashboard using more parameters like percentage of questions solved/attempted, highest streak etc. and on the basis of that rating can be introduced.
  • Currently teachers add assignments and those are checked manually, but this feature can be integrated with that to allow auto verification and assign marks.

šŸ“„ Pull Requests šŸ“„

Pull request for the entire feature can be found here

šŸ“ Blogs šŸ“

Phase 1 blog GSoC@24 Jaydip Dey

šŸ“Œ Conclusion šŸ“Œ

The project has been successfully completed, achieving all its objectives. This new CircuitVerse Practise Section feature is ready for integration into the main CircuitVerse repository. The past 12 weeks have been an incredible experience working on this project and collaborating with the team. Iā€™m deeply grateful to the mentors for their unwavering support and willingness to address any doubts I had. I look forward to continuing to contribute to CircuitVerse and am always happy to assist fellow contributors in the future.

comments powered by Disqus