Give every section a custom ID

This commit is contained in:
Charlotte Van Petegem 2024-02-01 13:46:30 +01:00
parent e85e91ce78
commit 5ebcd8d78f
No known key found for this signature in database
GPG key ID: 019E764B7184435A

View file

@ -63,6 +63,7 @@
* To-dos * To-dos
:PROPERTIES: :PROPERTIES:
:CREATED: [2023-11-20 Mon 17:14] :CREATED: [2023-11-20 Mon 17:14]
:CUSTOM_ID: chap:todos
:UNNUMBERED: t :UNNUMBERED: t
:END: :END:
@ -125,6 +126,7 @@ Finally, we will give a brief overview of the remaining chapters of this dissert
** A history of automated assessment in programming education ** A history of automated assessment in programming education
:PROPERTIES: :PROPERTIES:
:CREATED: [2024-02-01 Thu 10:46] :CREATED: [2024-02-01 Thu 10:46]
:CUSTOM_ID: sec:introhistory
:END: :END:
Learning how to solve problems with computer programs requires practice, and programming assignments are the main way in which such practice is generated\nbsp{}[cite:@gibbsConditionsWhichAssessment2005]. Learning how to solve problems with computer programs requires practice, and programming assignments are the main way in which such practice is generated\nbsp{}[cite:@gibbsConditionsWhichAssessment2005].
@ -139,11 +141,13 @@ Increasing interactivity in learning has long been considered important, and fur
** Learning analytics and educational data mining ** Learning analytics and educational data mining
:PROPERTIES: :PROPERTIES:
:CREATED: [2024-02-01 Thu 10:47] :CREATED: [2024-02-01 Thu 10:47]
:CUSTOM_ID: sec:introlaedm
:END: :END:
** Structure of this dissertation ** Structure of this dissertation
:PROPERTIES: :PROPERTIES:
:CREATED: [2024-02-01 Thu 10:18] :CREATED: [2024-02-01 Thu 10:18]
:CUSTOM_ID: sec:introstructure
:END: :END:
Chapters\nbsp{}[[#chap:what]],\nbsp{}[[#chap:use]]\nbsp{}and\nbsp{}[[#chap:technical]] focus on Dodona itself. Chapters\nbsp{}[[#chap:what]],\nbsp{}[[#chap:use]]\nbsp{}and\nbsp{}[[#chap:technical]] focus on Dodona itself.
@ -401,6 +405,7 @@ The chapter is partially based on\nbsp{}[cite/t:@vanpetegemDodonaLearnCode2023].
** Facts and figures ** Facts and figures
:PROPERTIES: :PROPERTIES:
:CREATED: [2024-01-22 Mon 18:15] :CREATED: [2024-01-22 Mon 18:15]
:CUSTOM_ID: sec:usefacts
:END: :END:
Dodona's design decisions have allowed it to spread to more than {{{num_schools}}} schools, colleges and universities, mainly in Flanders (Belgium) and the Netherlands. Dodona's design decisions have allowed it to spread to more than {{{num_schools}}} schools, colleges and universities, mainly in Flanders (Belgium) and the Netherlands.
@ -422,6 +427,7 @@ In total, {{{num_users}}} students have submitted more than {{{num_submissions}}
** User study ** User study
:PROPERTIES: :PROPERTIES:
:CREATED: [2024-01-22 Mon 18:16] :CREATED: [2024-01-22 Mon 18:16]
:CUSTOM_ID: sec:usestudy
:END: :END:
A qualitative user experience study of Dodona was performed in 2018. A qualitative user experience study of Dodona was performed in 2018.
@ -438,7 +444,7 @@ Other negative feedback was mostly related to individual courses the students we
** Case study ** Case study
:PROPERTIES: :PROPERTIES:
:CREATED: [2023-10-23 Mon 08:48] :CREATED: [2023-10-23 Mon 08:48]
:CUSTOM_ID: subsec:usefwe :CUSTOM_ID: subsec:usecasestudy
:END: :END:
Since the academic year 2011--2012 we have organized an introductory Python course at Ghent University (Belgium) with a strong focus on active and online learning. Since the academic year 2011--2012 we have organized an introductory Python course at Ghent University (Belgium) with a strong focus on active and online learning.
@ -760,6 +766,7 @@ In this section, we will highlight a few of these components.
*** The Dodona web application *** The Dodona web application
:PROPERTIES: :PROPERTIES:
:CREATED: [2023-11-23 Thu 17:12] :CREATED: [2023-11-23 Thu 17:12]
:CUSTOM_ID: subsec:techdodonaweb
:END: :END:
The user-facing part of Dodona runs on the main web server, which also called Dodona (see Figure\nbsp{}[[fig:technicaldodonaservers]]). The user-facing part of Dodona runs on the main web server, which also called Dodona (see Figure\nbsp{}[[fig:technicaldodonaservers]]).
@ -775,6 +782,7 @@ And lastly, all JavaScript was rewritten to TypeScript.
**** Security and performance **** Security and performance
:PROPERTIES: :PROPERTIES:
:CREATED: [2024-01-10 Wed 14:23] :CREATED: [2024-01-10 Wed 14:23]
:CUSTOM_ID: subsubsec:techdodonawebsecurity
:END: :END:
Another important aspect of running a public web application is its security. Another important aspect of running a public web application is its security.
@ -878,6 +886,7 @@ In practice, we got no questions or complaints about the Python Tutor's performa
*** Development process *** Development process
:PROPERTIES: :PROPERTIES:
:CREATED: [2023-11-23 Thu 17:13] :CREATED: [2023-11-23 Thu 17:13]
:CUSTOM_ID: subsec:techdodonadevelopment
:END: :END:
Development of Dodona is done on GitHub. Development of Dodona is done on GitHub.
@ -907,6 +916,7 @@ They are mostly autogenerated from the merged PRs, but bigger features are given
*** Deployment process *** Deployment process
:PROPERTIES: :PROPERTIES:
:CREATED: [2023-11-23 Thu 17:13] :CREATED: [2023-11-23 Thu 17:13]
:CUSTOM_ID: subsec:techdodonadeployment
:END: :END:
After a pull request is merged, it is automatically deployed by a GitHub action. After a pull request is merged, it is automatically deployed by a GitHub action.
@ -964,6 +974,7 @@ Given that the target audience for Papyros is secondary education students, we i
*** Execution *** Execution
:PROPERTIES: :PROPERTIES:
:CREATED: [2023-11-27 Mon 17:28] :CREATED: [2023-11-27 Mon 17:28]
:CUSTOM_ID: subsec:papyrosexecution
:END: :END:
Python can not be executed directly by a browser, since only JavaScript and WebAssembly are natively supported. Python can not be executed directly by a browser, since only JavaScript and WebAssembly are natively supported.
@ -991,6 +1002,7 @@ We chose to base Papyros on Pyodide given its active development, support for re
*** Implementation *** Implementation
:PROPERTIES: :PROPERTIES:
:CREATED: [2023-11-27 Mon 17:28] :CREATED: [2023-11-27 Mon 17:28]
:CUSTOM_ID: subsec:papyrosimplementation
:END: :END:
There are two aspects to the implementation: the user interface and the technical inner workings. There are two aspects to the implementation: the user interface and the technical inner workings.
@ -999,6 +1011,7 @@ Given that this work will primarily be used by secondary school students, the us
**** User interface **** User interface
:PROPERTIES: :PROPERTIES:
:CREATED: [2023-11-29 Wed 14:48] :CREATED: [2023-11-29 Wed 14:48]
:CUSTOM_ID: subsubsec:papyrosui
:END: :END:
The most important choice in the user interface was the choice of the editor. The most important choice in the user interface was the choice of the editor.
@ -1040,6 +1053,7 @@ The full user interface can be seen in Figure\nbsp{}[[fig:technicalpapyros]].
**** Inner workings **** Inner workings
:PROPERTIES: :PROPERTIES:
:CREATED: [2023-11-29 Wed 14:48] :CREATED: [2023-11-29 Wed 14:48]
:CUSTOM_ID: subsubsec:papyrosinner
:END: :END:
Since Pyodide does the heavy lifting of executing the actual Python code, most of the implementation work consisted of making Pyodide run in a web worker and hooking up the Python internals to our user interface. Since Pyodide does the heavy lifting of executing the actual Python code, most of the implementation work consisted of making Pyodide run in a web worker and hooking up the Python internals to our user interface.
@ -1077,6 +1091,7 @@ This work was done in collaboration with Alex Hall.
**** Extensions **** Extensions
:PROPERTIES: :PROPERTIES:
:CREATED: [2023-12-07 Thu 15:19] :CREATED: [2023-12-07 Thu 15:19]
:CUSTOM_ID: subsubsec:papyrosextensions
:END: :END:
CodeMirror already has a number of functionalities it supports out of the box such as linting and code completion. CodeMirror already has a number of functionalities it supports out of the box such as linting and code completion.
@ -1105,6 +1120,7 @@ Another feature that teachers wanted that we had not built into a judge previous
*** Exercise API *** Exercise API
:PROPERTIES: :PROPERTIES:
:CREATED: [2024-01-05 Fri 14:06] :CREATED: [2024-01-05 Fri 14:06]
:CUSTOM_ID: subsec:techrapi
:END: :END:
The API for the R judge was designed to follow the visual structure of the feedback table as closely as possible, as can be seen in the sample evaluation code in Listing\nbsp{}[[lst:technicalrsample]]. The API for the R judge was designed to follow the visual structure of the feedback table as closely as possible, as can be seen in the sample evaluation code in Listing\nbsp{}[[lst:technicalrsample]].
@ -1162,6 +1178,7 @@ context({
*** Security *** Security
:PROPERTIES: :PROPERTIES:
:CREATED: [2024-01-05 Fri 14:06] :CREATED: [2024-01-05 Fri 14:06]
:CUSTOM_ID: subsec:techrsecurity
:END: :END:
Other than the API for teachers creating exercises, encapsulation of student code is also an important part of a judge. Other than the API for teachers creating exercises, encapsulation of student code is also an important part of a judge.
@ -1205,6 +1222,7 @@ Further work then developed this proof of concept into the full judge we will pr
*** Overview *** Overview
:PROPERTIES: :PROPERTIES:
:CREATED: [2024-01-05 Fri 14:03] :CREATED: [2024-01-05 Fri 14:03]
:CUSTOM_ID: subsec:techtestedoverview
:END: :END:
TESTed generally works using the following steps: TESTed generally works using the following steps:
@ -1330,6 +1348,7 @@ The encoded expected return value of our example exercise can be seen in Listing
*** Statements *** Statements
:PROPERTIES: :PROPERTIES:
:CREATED: [2024-01-03 Wed 17:09] :CREATED: [2024-01-03 Wed 17:09]
:CUSTOM_ID: subsec:techtestedstatements
:END: :END:
There is more complexity hidden in the idea of creating a variable of a custom type. There is more complexity hidden in the idea of creating a variable of a custom type.
@ -1365,6 +1384,7 @@ Listing\nbsp{}[[lst:technicaltestedassignment]] shows what it would look like if
*** Checking programming language support *** Checking programming language support
:PROPERTIES: :PROPERTIES:
:CREATED: [2024-01-04 Thu 09:16] :CREATED: [2024-01-04 Thu 09:16]
:CUSTOM_ID: subsec:techtestedsupport
:END: :END:
We also need to make sure that the programming language of the submission under test is supported by the test plan of its exercise. We also need to make sure that the programming language of the submission under test is supported by the test plan of its exercise.
@ -1377,6 +1397,7 @@ Our example exercise will not work in C for this reason.
*** Execution *** Execution
:PROPERTIES: :PROPERTIES:
:CREATED: [2024-01-04 Thu 09:43] :CREATED: [2024-01-04 Thu 09:43]
:CUSTOM_ID: subsec:techtestedexecution
:END: :END:
To go from the generic test plan to something that can actually be executed in the given language, we need to generate test code. To go from the generic test plan to something that can actually be executed in the given language, we need to generate test code.
@ -1394,6 +1415,7 @@ Subsequently, the test code is executed and its results collected.
*** Evaluation *** Evaluation
:PROPERTIES: :PROPERTIES:
:CREATED: [2024-01-04 Thu 10:45] :CREATED: [2024-01-04 Thu 10:45]
:CUSTOM_ID: subsec:techtestedevaluation
:END: :END:
The generated output is usually evaluated by TESTed itself. The generated output is usually evaluated by TESTed itself.
@ -1408,6 +1430,7 @@ This can be used to evaluate programming-language specific concepts, for example
*** Linting *** Linting
:PROPERTIES: :PROPERTIES:
:CREATED: [2024-01-04 Thu 10:47] :CREATED: [2024-01-04 Thu 10:47]
:CUSTOM_ID: subsec:techtestedlinting
:END: :END:
Next to correctness, style is also an important aspect of source code. Next to correctness, style is also an important aspect of source code.
@ -1725,6 +1748,7 @@ Under the same circumstances, a pessimistic classifier that consistently predict
*** Pass/fail predictions *** Pass/fail predictions
:PROPERTIES: :PROPERTIES:
:CREATED: [2024-01-22 Mon 17:17] :CREATED: [2024-01-22 Mon 17:17]
:CUSTOM_ID: subsec:passfailmaterialspredictions
:END: :END:
In summary, Figure\nbsp{}[[fig:passfailmethodoverview]] outlines the entire flow of the proposed pass/fail prediction framework. In summary, Figure\nbsp{}[[fig:passfailmethodoverview]] outlines the entire flow of the proposed pass/fail prediction framework.
@ -2071,6 +2095,7 @@ We will then expand on what we did to further reduce the time spent adding manua
** Assessment on paper ** Assessment on paper
:PROPERTIES: :PROPERTIES:
:CREATED: [2023-11-20 Mon 13:04] :CREATED: [2023-11-20 Mon 13:04]
:CUSTOM_ID: sec:feedbackpaper
:END: :END:
Since the academic year 2015--2016 the programming course has started taking two open-book/open-internet evaluations in addition to the regular exam. Since the academic year 2015--2016 the programming course has started taking two open-book/open-internet evaluations in addition to the regular exam.
@ -2100,6 +2125,7 @@ Code that was too complex or plain wrong usually received little more than a str
** Adding comments via Dodona ** Adding comments via Dodona
:PROPERTIES: :PROPERTIES:
:CREATED: [2023-11-20 Mon 13:32] :CREATED: [2023-11-20 Mon 13:32]
:CUSTOM_ID: sec:feedbackcomments
:END: :END:
Seeing the amount of hassle that assessing these evaluations brought with them, we decided to build support for manual feedback and grading into Dodona. Seeing the amount of hassle that assessing these evaluations brought with them, we decided to build support for manual feedback and grading into Dodona.
@ -2128,6 +2154,7 @@ In the first trial of this system, the feedback was viewed by over 80% of studen
** Evaluations ** Evaluations
:PROPERTIES: :PROPERTIES:
:CREATED: [2023-11-20 Mon 13:32] :CREATED: [2023-11-20 Mon 13:32]
:CUSTOM_ID: sec:feedbackevaluations
:END: :END:
To streamline and automate the process of grading even more, the concept of an evaluation was added to Dodona. To streamline and automate the process of grading even more, the concept of an evaluation was added to Dodona.
@ -2151,6 +2178,7 @@ This means that students can view the scores they received for each rubric, and
** Feedback re-use ** Feedback re-use
:PROPERTIES: :PROPERTIES:
:CREATED: [2023-11-20 Mon 17:39] :CREATED: [2023-11-20 Mon 17:39]
:CUSTOM_ID: sec:feedbackreuse
:END: :END:
Grading and giving feedback has always been a time-consuming process, and the move to digital grading did not improve this compared to grading on paper. Grading and giving feedback has always been a time-consuming process, and the move to digital grading did not improve this compared to grading on paper.
@ -2179,6 +2207,7 @@ This is exactly what we will explore in this section, which is based on an artic
*** Introduction *** Introduction
:PROPERTIES: :PROPERTIES:
:CREATED: [2024-01-19 Fri 15:47] :CREATED: [2024-01-19 Fri 15:47]
:CUSTOM_ID: subsec:feedbackpredictionintro
:END: :END:
Feedback is a very important element in student learning\nbsp{}[cite:@hattiePowerFeedback2007; @blackAssessmentClassroomLearning1998]. Feedback is a very important element in student learning\nbsp{}[cite:@hattiePowerFeedback2007; @blackAssessmentClassroomLearning1998].
@ -2212,6 +2241,7 @@ We start with an in-depth explanation of the design of the method, and then pres
*** Methodology *** Methodology
:PROPERTIES: :PROPERTIES:
:CREATED: [2024-01-08 Mon 13:18] :CREATED: [2024-01-08 Mon 13:18]
:CUSTOM_ID: subsec:feedbackpredictionmethodology
:END: :END:
The general methodology used by our method is explained visually in Figure [[fig:feedbackmethodoverview]]. The general methodology used by our method is explained visually in Figure [[fig:feedbackmethodoverview]].
@ -2240,6 +2270,7 @@ Since the model will be used while grading (and the training data for the model
**** Extracting a subtree around a line **** Extracting a subtree around a line
:PROPERTIES: :PROPERTIES:
:CREATED: [2024-01-19 Fri 15:44] :CREATED: [2024-01-19 Fri 15:44]
:CUSTOM_ID: subsubsec:feedbackpredictionsubtree
:END: :END:
Currently, the context around a line is extracted by taking all the AST nodes that are solely on that line. Currently, the context around a line is extracted by taking all the AST nodes that are solely on that line.
@ -2264,35 +2295,43 @@ for digit in number:
**** =TreeminerD= **** =TreeminerD=
:PROPERTIES: :PROPERTIES:
:CREATED: [2023-11-20 Mon 13:33] :CREATED: [2023-11-20 Mon 13:33]
:CUSTOM_ID: subsubsec:feedbackpredictiontreeminer
:END: :END:
**** Assigning weights to patterns **** Assigning weights to patterns
:PROPERTIES: :PROPERTIES:
:CREATED: [2023-11-22 Wed 14:39] :CREATED: [2023-11-22 Wed 14:39]
:CUSTOM_ID: subsubsec:feedbackpredictionweights
:END: :END:
**** Determining similarity **** Determining similarity
:PROPERTIES: :PROPERTIES:
:CREATED: [2023-11-22 Wed 14:47] :CREATED: [2023-11-22 Wed 14:47]
:CUSTOM_ID: subsubsec:feedbackpredictionsimilarity
:END: :END:
*** Results and discussion *** Results and discussion
:PROPERTIES: :PROPERTIES:
:CREATED: [2024-01-08 Mon 13:18] :CREATED: [2024-01-08 Mon 13:18]
:CUSTOM_ID: subsec:feedbackpredictionresults
:END: :END:
**** PyLint messages **** PyLint messages
:PROPERTIES: :PROPERTIES:
:CUSTOM_ID: subsubsec:feedbackpredictionresultspylint
:CREATED: [2023-11-20 Mon 13:33] :CREATED: [2023-11-20 Mon 13:33]
:END: :END:
**** Real-world data **** Real-world data
:PROPERTIES: :PROPERTIES:
:CREATED: [2023-11-20 Mon 13:33] :CREATED: [2023-11-20 Mon 13:33]
:CUSTOM_ID: subsubsec:feedbackpredictionresultsrealworld
:END: :END:
*** Conclusions and future work *** Conclusions and future work
:PROPERTIES: :PROPERTIES:
:CREATED: [2023-11-20 Mon 13:33] :CREATED: [2023-11-20 Mon 13:33]
:CUSTOM_ID: subsec:feedbackpredictionconclusion
:END: :END:
* Discussion and future work * Discussion and future work