Skip to content

Conversation

@diego-guerrero
Copy link
Collaborator

This pull request introduces all the new features and maintenance improvements done in VSCode4Teaching 2.2.

Main changes in this version:

  • New functionality: teachers can upload their own solution proposals to their exercises from now on.
    • Through this new feature, teachers can prepare exercises. If their exercises' directories contain both a "template" and a "solution" directory, solution will be processed and saved. Any other structure than this will result in an exercise without a built-in solution. This mechanism is used both for uploading a single exercise and in the multiple simultaneous upload function.
    • With this, when the solution is published by the teachers, students will have a button in the Status Bar to download the solution proposal, being able to use the "refresh" button of the extension to check if there is already a solution available. This proposal will be placed in a directory called "solution" created just inside the root directory of the exercise.
    • Once the solution proposal is downloaded, students can use another button in the Status Bar that allows them to visualize the differences between their submitted proposal and the solution published by the teacher.
    • Teachers have two new checkboxes on the Dashboard of each exercise to determine if the solution is published and if editing of the exercise is allowed once the solution is downloaded.
      • By default the solution is not visible to students and, once it has been published by the teacher, it cannot be removed again (since a student might have downloaded it).
      • On the other hand, the checkbox to allow editing of the exercise is editable as long as the solution is not public (and can be reverted if activated), but it can no longer be changed once the solution has been published.
  • The exercises are displayed with a new colored icon in the sidebar.
    • For students, this icon reflects the status of the exercise (not started, in progress or completed).
    • In the case of teachers, this icon reflects whether the exercise has a solution or not and, if it has a solution, whether it is published or not.
  • A complete redesign of the Dashboard has been introduced that improves and enhances its functionality, introducing now an integrated help in the Dashboard itself and, among other GUI improvements, a new pie chart to graphically visualize how many users have each exercise in a certain state.
  • In terms of code, all the necessary tests have been implemented on the server and in the extension to cover the new feature and some more are improved and added to cover older code. In addition, there are improvements in documentation and code organization to make this project more maintainable.

Several UI improvements are introduced:
- New icons for the different exercise statuses (not started, in progress and completed) are generated and introduced in the left sidebar. This allows students to quickly know at a glance the status of each of their exercises.
- These icons are also introduced in the teacher Dashboard, making it more visual and intuitive.
- Information about the status of exercises is added for students in the tooltip displayed when hovering with the mouse over each exercise.

In addition, a modification is introduced in the backend regarding the update of the status of the exercises and the tests are updated to support the new changes.
…to exercises.

This is the first commit of the new functionality for adding proposed solutions to exercises proposed by teachers. This commit introduces:
- Modification of the model entities in extension and server to add the information required to persist in database about the availability of the solution for each of the exercises.
- Update of the Dashboard GUI to add a checkbox to make public the proposed solution (pending to implement functionality).
- Cleaning and unification of the code that implements the functionality for the uploading of a single exercise and multiple exercises, whether or not they include a solution in a single algorithm.

This commit is added to the successive ones to complete the implemented functionality, being finalized for its incorporation in version 2.2.0 of VSCode4Teaching.
In the same line as commit af43b83, this commit introduces new icons and a tooltip with more information for the exercises in the teachers' sidebar, allowing them to obtain information about the publication status or availability of the solution they propose for the exercises they add.
As with templates, the information on the solution proposal files is stored in a database for later downloading.
… solutions

This third commit introduces the ability to download solutions previously uploaded by teachers. To do so, enter:

- A new button is implemented in the Dashboard to allow teachers to publish the solutions they have added to their exercises.
- A new button is added in the bottom bar that allows students to download the solutions of exercises that have a solution and that is displayed only when it has been published by the teacher. When prespressed, it is downloaded to a new folder called solution in the main exercise directory.
- Teachers can view the solution they have attached to the exercises when downloading it, as from now on it is downloaded together with the template.

In addition, some bugs detected during the implementation of this functionality are fixed.

This commit is added to the previous and successive ones to complete the implemented functionality, being finalized for its incorporation in VSCode4Teaching v2.2.0.
From now on, no user who includes the words "template", "solution" or "student" in their username will be allowed to register in the app.
A new enumerated type ExerciseStatus has been created in both extension and server to facilitate the understanding of the code and the semantics of the different possible Exercise statuses.
…ading solution

This fourth commit introduces the implementation of a new functionality to allow teachers to block or not the editing of exercises by students once the solution is downloaded.
To do so, it introduces:

- A new checkbox in the Dashboard that allows to enable or disable this feature to teachers. It can only be modified as long as the solution has not been made public.
- The fully implemented functionality of the button for downloading the solution by students is introduced in the exercises that allow it.

This commit is added to the previous and successive ones to complete the implemented functionality, being finalized for its incorporation in VSCode4Teaching v2.2.0.
Introduced a UX enhancement for teachers, incorporating a dropdown panel that explains to teachers the tools available on the dashboard for ease of use and comprehensibility.
…se proposal and the teacher's solution

This commit introduces a new functionality that allows students, once they have downloaded the solution proposed by the teacher, to compare their proposal for solving the exercise with the solution predefined by the teacher.

- An algorithm for the comparison of two directories has been fully implemented. It is based on the generation of two trees representing both directories and their contents and on the combination of both trees with source memory.
- The user is shown by means of the native Visual Studio Code Quick Pick system the possibility to choose the file from which they want to visualize the differences.
- A new button is shown in the lower toolbar that allows to activate the functionality for displaying differences between directories. It is automatically displayed when downloading the solution.

The version of Visual Studio Code required to run the extension has been updated to 1.64.0 for the compatibility of the Quick Picks used.

This commit is added to the previous and successive ones to complete the implemented functionality, being finalized for its incorporation in VSCode4Teaching v2.2.0.
A bug that allowed students to edit exercises once they were marked as completed by re-downloading them has been detected and corrected.
When a student refreshes the main sidebar, it will additionally check if the currently open exercise (if any) already has a publicly available teacher's solution attached and, if so, it will display a notification to the student.
…w tests

This commit introduces new unit tests in both the server and client components, testing all new functionalities related to the introduction of teacher solution proposals and introducing, in addition, new tests of previously existing features. Some corrections to bugs detected during the test generation work are also introduced.

This commit is added to the previous ones to complete the implemented functionality, being finalized for its incorporation in VSCode4Teaching v2.2.0.
Some dependencies have been updated to their latest versions. The most important ones are:

- Update of the Spring Boot version used in the server to 2.7.5 and necessary modifications in the ``application.properties`` file.
- Introduction of a higher version of a transitive dependency on the server due to the appearance of a cybersecurity vulnerability.
- Upgrade to TypeScript 4.8.4 in the webapp and extension.
- Updated ``axios`` in the extension to version 1.1.3.
- Upgrade of the webapp to Angular 14.2.6.
A complete redesign of the previously existing Dashboard has been executed to facilitate its use and generate a more user-friendly and pleasant GUI. To achieve this:

- The content is divided into clearly differentiated sections.
- Larger fonts have been introduced.
- Introduced a new pie chart that reflects student progress in real time, as well as new visible numerical metrics.
- Colors are used for the different states of the exercises.

In addition, the tests performed on the Dashboard have been adapted to cover the new functionality introduced.
A bug has been detected in which the templates and solutions of the new exercises are not added correctly, since all the promises for the upload were introduced "all at once" as simultaneous requests to the server, which was saturated.

As a consequence, this is solved by sending the requests sequentially (one at a time).
A new update of the student help page (webapp index component) is introduced to introduce support for the new student features in version 2.2.0.
The content of the READMEs for each component (and, therefore, the description of the project and the extension in the Visual Studio Code Marketplace) has been updated to include all the new features of version 2.2.0.
@diego-guerrero diego-guerrero merged commit c6b766d into master Oct 30, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants