-
Notifications
You must be signed in to change notification settings - Fork 1
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
Bewertungsanpassung bei Decide
#178
Comments
fmidue/output-blocks@5619823 ermöglicht jetzt den Aufruf von |
|
Versuchen wir das einfach und schauen, wie es sich in der Praxis auswirkt. Aus Klausureinsichten weiß ich, dass Studierende durchaus gut darin sind, sich konkret zu beschweren, wenn bei teilweise falsch gelösten Aufgaben die erhaltenen Teilpunkte ihnen nicht angemessen erscheinen. 😄 Wenn da nachvollziehbare Einwände kommen, können wir noch nachsteuern. |
Beim Austesten ist mir gerade aufgefallen, dass das, was wir hier (bzw. an anderer Stelle) besprechen, gar nicht funktioniert.
Diese Aussage (#175 (comment)) stimmt nicht. Wenn ich die derzeitige Implementierung nutze und Das Problem liegt darin, dass man nur für falsche / zu viele Eingaben Punkte abziehen und nur für richtige Eingaben Punkte addieren kann. Ich kann also z. B. nicht sagen, dass man am Anfang mit voller Punktzahl startet und dann pro fehlender / falscher Antwort Teilpunkte abgezogen bekommt. Ich denke aber, dass eventuell die Idee, diese Aufgabe mit
Ich sehe hier eine Analogie zu Ich denke daher, dass es eher Sinn ergeben würde, eine weitere Abstraktion für solche Aufgaben zu implementieren und Ich habe dennoch bei
Die Bewertung sieht dann z.B. so aus (4 von 16 Zeilen wurden geändert):
|
Also erstmal, das:
finde ich eigentlich ganz gut. Eventuell würde ich dann dennoch noch einen Threshhold von 1/2 setzen, das heißt der zweite, drittletzte und letzte Fall würden auf 0 Punkte runtergedrückt. Aber das ist eine separate Betrachtung. Es könnte zum Beispiel auch 1/3 sein, so dass der drittletzte Fall "überlebt". Ist dieses Verhalten denn nun mittels |
Dies:
würde ich lieber vermeiden. Wir wollen die Bewertungsfunktionen möglichst wiederverwendbar über viele Aufgabentypen (auch in Vor allem aber sehe ich nicht, inwiefern |
Und in diesem Kontext irritiert mich auch dies hier:
Das müsste eigentlich stimmen, wenn die "normale" Daher kann ich nicht so recht einordnen, was Sie oben beobachtet haben, das der Aussage widerspricht. |
Ich kann das irgendwie nicht reproduzieren. Mit completeGrade :: (OutputCapable m,Alternative m, Monad m) => DecideInst -> [Int] -> Rated m
completeGrade DecideInst{..} sol = reRefuse
(extendedMultipleChoice
(MinimumThreshold 0) -- nur fürs debugging
(Punishment 0) -- wie bei `multipleChoice`
(TargetedCorrect (length solution)) -- wie bei `multipleChoice`
DefiniteArticle
what
solutionDisplay
solution
nubSol)
$ when (diff /= 0) $ translate $ do
german $ "In der Menge der unterschiedlichen Indizes " ++ ger ++ " falsch."
english $ "The set of unique indices contains " ++ eng
where
nubSol = nubOrd sol
diff = length $ filter (`notElem` changed) nubSol
(ger, eng) = if diff == 1
then ("ist 1 Index", "1 wrong index")
else ("sind " ++ show diff ++ " Indizes", show diff ++ " wrong indices") -- no-spell-check
what = translations $ do
german "Indizes"
english "indices"
solutionDisplay | showSolution = Just $ show changed
| otherwise = Nothing
tableLen = length $ readEntries $ getTable formula
solution = Map.fromAscList $ map (\i -> (i, i `elem` changed)) [1..tableLen] erhalte ich:
|
Das ist mit |
@nimec01 Besteht dieses Problem hier noch #178 (comment). Die neueste Version von |
Nein. Es verhält sich nun wie zuvor beschrieben. Also 75 % erreichte Punkte bei Abgabe von |
@marcellussiegburg Ist es auch richtig so, dass sich das |
Die einzige Möglichkeit, die hier weiterhelfen würde, wäre dieses "default punishment" anpassen zu können. |
Ja, in diesem Sinne ist es eigentlich eine zusätzliche Bestrafung. So hatte ich die Anforderung von Bestrafungen von falschen Antworten verstanden. Wenn keine zusätzliche Bestrafung gewünscht wird, kann der Wert aber einfach auf 0 gesetzt werden. |
Das ließe sich implizit anpassen, wie in meinem vorherigen Kommentar. Oder braucht es noch ein zusätzliches Punishment? (Wofür wäre das die einzige Möglichkeit?)
Achtung! |
|
Wenn es darum geht, das hier #178 (comment) umzusetzen, so kann das mit ghci> runLangMReport (return ()) (>>) (extendedMultipleChoice (MinimumThreshold 0) (Punishment $ 1 % 16) (TargetedCorrect 4) IndefiniteArticle (Blocks.translations $ do {Blocks.english "test"; Blocks.german "test"}) Nothing (M.fromList [(1 :: Int, True), (2, True), (4, True), (5, True)]) (M.fromList [])) >>= \(r, x) -> (x English :: IO ()) >> return r
All given test are correct?
>>>> <Yes.> <<<<
The given test are exhaustive?
>>>> <No.> <<<<
Just (0 % 1)
ghci> runLangMReport (return ()) (>>) (extendedMultipleChoice (MinimumThreshold 0) (Punishment $ 1 % 16) (TargetedCorrect 4) IndefiniteArticle (Blocks.translations $ do {Blocks.english "test"; Blocks.german "test"}) Nothing (M.fromList [(1 :: Int, True), (2, True), (4, True), (5, True)]) (M.fromList [(1, True)])) >>= \(r, x) -> (x English :: IO ()) >> return r
All given test are correct?
>>>> <Yes.> <<<<
The given test are exhaustive?
>>>> <No.> <<<<
Just (1 % 4)
ghci> runLangMReport (return ()) (>>) (extendedMultipleChoice (MinimumThreshold 0) (Punishment $ 1 % 16) (TargetedCorrect 4) IndefiniteArticle (Blocks.translations $ do {Blocks.english "test"; Blocks.german "test"}) Nothing (M.fromList [(1 :: Int, True), (2, True), (4, True), (5, True)]) (M.fromList [(3, True)])) >>= \(r, x) -> (x English :: IO ()) >> return r
All given test are correct?
>>>> <No.> <<<<
Just (0 % 1)
ghci> runLangMReport (return ()) (>>) (extendedMultipleChoice (MinimumThreshold 0) (Punishment $ 1 % 16) (TargetedCorrect 4) IndefiniteArticle (Blocks.translations $ do {Blocks.english "test"; Blocks.german "test"}) Nothing (M.fromList [(1 :: Int, True), (2, True), (4, True), (5, True)]) (M.fromList [(1, True), (2, True)])) >>= \(r, x) -> (x English :: IO ()) >> return r
All given test are correct?
>>>> <Yes.> <<<<
The given test are exhaustive?
>>>> <No.> <<<<
Just (1 % 2)
ghci> runLangMReport (return ()) (>>) (extendedMultipleChoice (MinimumThreshold 0) (Punishment $ 1 % 16) (TargetedCorrect 4) IndefiniteArticle (Blocks.translations $ do {Blocks.english "test"; Blocks.german "test"}) Nothing (M.fromList [(1 :: Int, True), (2, True), (4, True), (5, True)]) (M.fromList [(1, True), (2, True), (3, True)])) >>= \(r, x) -> (x English :: IO ()) >> return r
All given test are correct?
>>>> <No.> <<<<
Just (7 % 16)
ghci> runLangMReport (return ()) (>>) (extendedMultipleChoice (MinimumThreshold 0) (Punishment $ 1 % 16) (TargetedCorrect 4) IndefiniteArticle (Blocks.translations $ do {Blocks.english "test"; Blocks.german "test"}) Nothing (M.fromList [(1 :: Int, True), (2, True), (4, True), (5, True)]) (M.fromList [(1, True), (2, True), (4, True), (5, True)])) >>= \(r, x) -> (x English :: IO ()) >> return r
All given test are correct?
>>>> <Yes.> <<<<
The given test are exhaustive?
>>>> <Yes.> <<<<
Just (1 % 1)
ghci> runLangMReport (return ()) (>>) (extendedMultipleChoice (MinimumThreshold 0) (Punishment $ 1 % 16) (TargetedCorrect 4) IndefiniteArticle (Blocks.translations $ do {Blocks.english "test"; Blocks.german "test"}) Nothing (M.fromList [(1 :: Int, True), (2, True), (4, True), (5, True)]) (M.fromList [(1, True), (2, True), (3, True), (4, True), (5, True), (6, True), (7, True), (8, True), (9, True), (10, True), (11, True), (12, True), (13, True), (14, True), (15, True), (16, True)])) >>= \(r, x) -> (x English :: IO ()) >> return r
All given test are correct?
>>>> <No.> <<<<
Just (1 % 4) ( Update: Link to correct comment; shorten to relevant ghci-Output |
Das reicht mir erstmal aus. Wenn sonst bei #187 noch Fragen aufkommen, melde ich mich. |
Siehe #175 (comment).
Direkt
Config.percentageOfChanged %
als Threshold zu nehmen, ist vielleicht auch nicht ganz richtig. Es muss ja sowohl an Fälle, wo zu viele angebliche Fehler eingegeben werden, als auch an Fälle, wo zu wenige Fehler eingegeben werden, gedacht werden.Außerdem scheint mir, dass diverse aktuelle (bzw. nach 0583969 noch) durchgeführte Extra-Tests in
Decide.completeGrade
nicht wirklich sein müsste. Also vielleicht lässt sich das auf einen direkten Aufruf vonmultiplechoice
reduzieren.The text was updated successfully, but these errors were encountered: