From 5ebcd8d78fda531f6fc551225db5efa2c3f79efe Mon Sep 17 00:00:00 2001 From: Charlotte Van Petegem Date: Thu, 1 Feb 2024 13:46:30 +0100 Subject: [PATCH] Give every section a custom ID --- book.org | 41 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/book.org b/book.org index ddcb011..d1e7984 100644 --- a/book.org +++ b/book.org @@ -63,6 +63,7 @@ * To-dos :PROPERTIES: :CREATED: [2023-11-20 Mon 17:14] +:CUSTOM_ID: chap:todos :UNNUMBERED: t :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 :PROPERTIES: :CREATED: [2024-02-01 Thu 10:46] +:CUSTOM_ID: sec:introhistory :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]. @@ -139,11 +141,13 @@ Increasing interactivity in learning has long been considered important, and fur ** Learning analytics and educational data mining :PROPERTIES: :CREATED: [2024-02-01 Thu 10:47] +:CUSTOM_ID: sec:introlaedm :END: ** Structure of this dissertation :PROPERTIES: :CREATED: [2024-02-01 Thu 10:18] +:CUSTOM_ID: sec:introstructure :END: 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 :PROPERTIES: :CREATED: [2024-01-22 Mon 18:15] +:CUSTOM_ID: sec:usefacts :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. @@ -422,6 +427,7 @@ In total, {{{num_users}}} students have submitted more than {{{num_submissions}} ** User study :PROPERTIES: :CREATED: [2024-01-22 Mon 18:16] +:CUSTOM_ID: sec:usestudy :END: 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 :PROPERTIES: :CREATED: [2023-10-23 Mon 08:48] -:CUSTOM_ID: subsec:usefwe +:CUSTOM_ID: subsec:usecasestudy :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. @@ -760,6 +766,7 @@ In this section, we will highlight a few of these components. *** The Dodona web application :PROPERTIES: :CREATED: [2023-11-23 Thu 17:12] +:CUSTOM_ID: subsec:techdodonaweb :END: 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 :PROPERTIES: :CREATED: [2024-01-10 Wed 14:23] +:CUSTOM_ID: subsubsec:techdodonawebsecurity :END: 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 :PROPERTIES: :CREATED: [2023-11-23 Thu 17:13] +:CUSTOM_ID: subsec:techdodonadevelopment :END: 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 :PROPERTIES: :CREATED: [2023-11-23 Thu 17:13] +:CUSTOM_ID: subsec:techdodonadeployment :END: 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 :PROPERTIES: :CREATED: [2023-11-27 Mon 17:28] +:CUSTOM_ID: subsec:papyrosexecution :END: 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 :PROPERTIES: :CREATED: [2023-11-27 Mon 17:28] +:CUSTOM_ID: subsec:papyrosimplementation :END: 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 :PROPERTIES: :CREATED: [2023-11-29 Wed 14:48] +:CUSTOM_ID: subsubsec:papyrosui :END: 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 :PROPERTIES: :CREATED: [2023-11-29 Wed 14:48] +:CUSTOM_ID: subsubsec:papyrosinner :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. @@ -1077,6 +1091,7 @@ This work was done in collaboration with Alex Hall. **** Extensions :PROPERTIES: :CREATED: [2023-12-07 Thu 15:19] +:CUSTOM_ID: subsubsec:papyrosextensions :END: 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 :PROPERTIES: :CREATED: [2024-01-05 Fri 14:06] +:CUSTOM_ID: subsec:techrapi :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]]. @@ -1162,6 +1178,7 @@ context({ *** Security :PROPERTIES: :CREATED: [2024-01-05 Fri 14:06] +:CUSTOM_ID: subsec:techrsecurity :END: 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 :PROPERTIES: :CREATED: [2024-01-05 Fri 14:03] +:CUSTOM_ID: subsec:techtestedoverview :END: 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 :PROPERTIES: :CREATED: [2024-01-03 Wed 17:09] +:CUSTOM_ID: subsec:techtestedstatements :END: 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 :PROPERTIES: :CREATED: [2024-01-04 Thu 09:16] +:CUSTOM_ID: subsec:techtestedsupport :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. @@ -1377,6 +1397,7 @@ Our example exercise will not work in C for this reason. *** Execution :PROPERTIES: :CREATED: [2024-01-04 Thu 09:43] +:CUSTOM_ID: subsec:techtestedexecution :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. @@ -1394,6 +1415,7 @@ Subsequently, the test code is executed and its results collected. *** Evaluation :PROPERTIES: :CREATED: [2024-01-04 Thu 10:45] +:CUSTOM_ID: subsec:techtestedevaluation :END: 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 :PROPERTIES: :CREATED: [2024-01-04 Thu 10:47] +:CUSTOM_ID: subsec:techtestedlinting :END: 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 :PROPERTIES: :CREATED: [2024-01-22 Mon 17:17] +:CUSTOM_ID: subsec:passfailmaterialspredictions :END: 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 :PROPERTIES: :CREATED: [2023-11-20 Mon 13:04] +:CUSTOM_ID: sec:feedbackpaper :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. @@ -2100,6 +2125,7 @@ Code that was too complex or plain wrong usually received little more than a str ** Adding comments via Dodona :PROPERTIES: :CREATED: [2023-11-20 Mon 13:32] +:CUSTOM_ID: sec:feedbackcomments :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. @@ -2128,6 +2154,7 @@ In the first trial of this system, the feedback was viewed by over 80% of studen ** Evaluations :PROPERTIES: :CREATED: [2023-11-20 Mon 13:32] +:CUSTOM_ID: sec:feedbackevaluations :END: 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 :PROPERTIES: :CREATED: [2023-11-20 Mon 17:39] +:CUSTOM_ID: sec:feedbackreuse :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. @@ -2179,6 +2207,7 @@ This is exactly what we will explore in this section, which is based on an artic *** Introduction :PROPERTIES: :CREATED: [2024-01-19 Fri 15:47] +:CUSTOM_ID: subsec:feedbackpredictionintro :END: 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 :PROPERTIES: :CREATED: [2024-01-08 Mon 13:18] +:CUSTOM_ID: subsec:feedbackpredictionmethodology :END: 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 :PROPERTIES: :CREATED: [2024-01-19 Fri 15:44] +:CUSTOM_ID: subsubsec:feedbackpredictionsubtree :END: 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= :PROPERTIES: :CREATED: [2023-11-20 Mon 13:33] +:CUSTOM_ID: subsubsec:feedbackpredictiontreeminer :END: **** Assigning weights to patterns :PROPERTIES: :CREATED: [2023-11-22 Wed 14:39] +:CUSTOM_ID: subsubsec:feedbackpredictionweights :END: **** Determining similarity :PROPERTIES: :CREATED: [2023-11-22 Wed 14:47] +:CUSTOM_ID: subsubsec:feedbackpredictionsimilarity :END: *** Results and discussion :PROPERTIES: :CREATED: [2024-01-08 Mon 13:18] +:CUSTOM_ID: subsec:feedbackpredictionresults :END: + **** PyLint messages :PROPERTIES: +:CUSTOM_ID: subsubsec:feedbackpredictionresultspylint :CREATED: [2023-11-20 Mon 13:33] :END: **** Real-world data :PROPERTIES: :CREATED: [2023-11-20 Mon 13:33] +:CUSTOM_ID: subsubsec:feedbackpredictionresultsrealworld :END: *** Conclusions and future work :PROPERTIES: :CREATED: [2023-11-20 Mon 13:33] +:CUSTOM_ID: subsec:feedbackpredictionconclusion :END: * Discussion and future work