Grüße! Mein Name ist Colin Fredericks. Ich arbeite bei HarvardX als Senior Project Lead, was bedeutet, dass ich hauptsächlich Harvard-Professoren dabei helfe, qualitativ hochwertige Kurse zu erstellen. In den letzten Monaten habe ich mich jedoch, hauptsächlich in meiner Freizeit, mit dem Hinzufügen beschäftigt Teilgutschrift für die Open edX-Plattform.
Ich mag die Open edX-Plattform sehr, aber ich war immer überrascht, dass es keine Möglichkeit gab, Teilpunkte zu vergeben. Nachdem ich College und High School unterrichtet hatte, schien es ein so offensichtliches Versehen zu sein, dass ich immer wieder erwartete, es auf der Liste der „bevorstehenden Funktionen“ zu sehen. Nach drei Jahren des Wartens beschloss ich, die Sache endlich selbst in die Hand zu nehmen.
Nun, ich bin kein professioneller Programmierer. (Möglicherweise hören Sie finstere Musik im Hintergrund spielen. Wir nennen das „Vorahnung“.) Ich lernte Applesoft BASIC in der 4. Klasse, TI-82-Programmierung in der High School, C++ im College, Python, während ich am MIT arbeitete, und Javascript, während ich dort war arbeitslos, aber ich hatte noch nie zuvor zu einer Open-Source-Bemühung beigetragen. Ich hatte noch nie Testcode geschrieben. Verdammt, ich wusste kaum, dass Testcode existiert. (Ein Schatten fällt über die Kamera. Noch mehr Vorahnungen.) Ich beschloss, dass ich nur einer Art von Problem eine Art Teilgutschrift hinzufügen würde, einfach die Dinge einfach halten, damit ich es in ein oder zwei Wochen bewältigen könnte. (Auch dies ist eine Vorahnung.)
Das war Anfang April. Ich habe mein ursprüngliches Ziel in zwei Tagen erreicht, und dann ist das Projekt schnell in seinen aktuellen Zustand übergegangen. Ich war überzeugt, von einem einzelnen Problemtyp auf so viele zu erweitern, wie ich vernünftigerweise bewältigen konnte, und eine zu schreiben vollwertiger Vorschlag das war am Ende 16 Seiten lang.
Während ich diese Funktion implementierte, fand ich etwas über diesen „Testcode“-Zeug und „Code-Qualitätsprüfer“ und andere Dinge heraus, über die sie (klugerweise) den Leuten in Computer Science II nicht erzählen. Ich begann mit der edX-Entwicklerhandbuch, so wie ich es am besten verstanden habe, mit seinen hübsches Flussdiagramm. Ich öffnete a Angebotsticket auf JIRA, erstellte ein Github-Repo für meinen eigenen Code, öffnete meine zuerst Pull-Anforderung, habe etwas mehr entwickelt, viel gutes Feedback bekommen (von dem ich das meiste eingearbeitet habe), gelernt, wie man richtig rebasiert, eine geöffnet neuer und besserer Pull-Request, und habe noch etwas mehr codiert. Endlich, nach etwa 15 Wochen Entwicklung, kann ich stolz sagen, dass das Feature in den Master-Branch der edx-Plattform integriert wurde!
Teilkredit: Feature-Details
Hier ist ein kurzer Überblick darüber, wie diese Funktion derzeit aussieht. Beachten Sie, dass Autoren derzeit nur Teilgutschriften aktivieren können, indem sie die OLX-Definition eines Problems direkt bearbeiten.
Multiple Choice und Dropdown Probleme haben eine Art von Teilpunktzahl zur Verfügung: die Bewertung im „Punkte“-Stil. Der Kursautor listet bestimmte Auswahlmöglichkeiten auf, die eine teilweise Anerkennung wert sind, und legt optional fest, wie viel Anerkennung sie wert sind (der Standardwert ist 50 %). Als Nebeneffekt wurden Dropdown-Probleme aktualisiert, sodass mehr als eine Auswahl als richtig markiert werden kann.
Checkbox Bei Problemen gibt es zwei (sich gegenseitig ausschließende) Arten der teilweisen Wertung: „Halves“-Stil, bei dem eine perfekte Antwort 100 % Anerkennung gibt und jeder Fehler die Punktzahl halbiert, und „Every Decision Counts“-Stil, bei dem sich jedes Kontrollkästchen effektiv dreht in eine eigene Wahr/Falsch-Frage.
Hier ist ein Beispiel dafür, wie ein Kursautor die Teilpunkte im Stil „Every Decision Counts“ (oder „EDC“) in einem Studio-Problem aktivieren würde:

So wird das Problem den Schülern angezeigt:

numerisch Bei Problemen stehen auch zwei Arten zur Verfügung: „Listen“-Stil, bei dem der Autor Antworten auflistet, die für eine Teilpunktzahl zählen (z. B. bei einer mathematischen Aufgabe können Teilpunkt-Antworten solche sein, die aus dem Fehlen eines negativen Vorzeichens oder der Umkehrung eines Bruchs resultieren), und "Close"-Stil, der die gegebene Toleranz erweitert, um einen "Hufeisen und Handgranaten"-Ansatz zu ermöglichen. Da die beiden Stile kompatibel sind, können Sie beide für dasselbe Problem verwenden, wenn Sie möchten.
So kann ein Kursautor ein numerisches Problem mit Teilpunkten im „Listenstil“ definieren:

So wird das Problem den Schülern angezeigt:

Schließlich haben Benutzerdefiniertes Python Probleme können jetzt nicht nur einen Punktwert zurückgeben, sondern einen Indikator dafür, ob das Problem als vollständig oder nur teilweise richtig angesehen wird.
Weitere Einzelheiten darüber, wie Sie Ihren Problemen teilweise Punkte hinzufügen, finden Sie unter die Teilkreditdokumentation.
Ich bin sehr zufrieden damit, wie das alles herausgekommen ist. Das Projekt hat länger gedauert als ich dachte, aber es ist auch viel mächtiger. Es bietet einen Rahmen, der es einfacher macht, in Zukunft andere Problemtypen teilweise zu würdigen, etwas, von dem ich wirklich hoffe, dass die Leute davon profitieren werden.
Was kommt in v2?
Nun, zuerst habe ich eine v1.5 geplant, die einiges bereinigt Umgebung Code, damit zukünftige Mitwirkende am Capa-Modul nicht so viel Ärger haben wie ich. Danach natürlich noch mehr Problemtypen! Ich beabsichtige auch, diese Funktion für allgemeine Probleme ohne die Verwendung von XML verfügbar zu machen – das heißt, den Kursleitern die Möglichkeit zu geben, diese Funktion vom Studio-Markdown-Editor aus zu verwenden. Es gibt einige zusätzliche Codeverallgemeinerungen, die durchgeführt werden könnten. Irgendwann in der Zukunft gibt es auch die Möglichkeit, eine versuchsbasierte Benotung hinzuzufügen … aber gehen wir einen Schritt nach dem anderen vor.
Ich kann gar nicht genug betonen, wie wunderbar und hilfsbereit alle Leute bei edX während dieses Prozesses waren. Ich kam mit ein paar Brocken Python- und Javascript-Kenntnissen herein und kam mit viel solideren Fähigkeiten und einem Verständnis dafür, wie es ist, zu einem Open-Source-Projekt beizutragen. Sarina Canelake, Leslie Gerhat, Piotr Mitros, Mark Sadecki, Marco Morales, Ben Patterson, Diana Huang, Mark Hoeber und andere haben sich die Zeit genommen, um mir in ihren arbeitsreichen Tagen dabei zu helfen, meinen Code besser zu verstehen und zu verfeinern. Ich kann es kaum erwarten, es in freier Wildbahn zu sehen.
Ich sehe mich immer noch nicht als professionellen Programmierer, aber dank dieser Arbeit komme ich näher.
Colin Fredericks ist Senior Project Lead bei HarvardX. In seiner restlichen Freizeit kocht er gerne, Rollenspiele schreiben, und mit allen Tieren befreundet zu sein.
![]()