# CAS4Wiki

Mittels CAS4Wiki (Computer Algebra System, 4=fo(u)r=für ein Wiki) ist eine AppLSAC, die algebraische Ausdrücke lädt und verarbeitet. Es können damit interaktive Übungen direkt in eine Wikiversity-Lernressourcen integriert werden. Die AppLSAC ist in der Lage, die Daten in eine JSON-Datei zu speichern und zu laden, die die CAS-Befehle vordefiniert enthält, mit denen die Lernenden experimentieren können.
       Wikiversity-CAS-App: CAS4Wiki für Wikiversity-Lernrssourcen
       Start-Link - Plots von Funktionen: CAS4Wiki-Start-Link mit 4 vordefinierten Plot-Befehlen
       Start-Link - Ableitungen und Gradient: Ableitungen und Gradienten

## Ziel der Lernressource

Diese Lernressource wurde begleitend für eine Vorlesung erstellt, in der die Studierenden zu Wiki2Reveal-Vorlesungsfolien auch interaktive Übungen in Computer Algebra Systeme zu Wegen in topologischen Räumen durchführen sollten. Dabei sollte das CAS4Wiki mit einem Link aus einer Wikiversity-Lernresources gestartet werden, und mit einem bestimmten vorkonfigurierten Satz an Befehlen vorgeladen werden, mit denen die Studierenden experimentieren sollten. Z.B.
* (Gradient) in der Analysis mit der Berechnung von partiellen Ableitungen und des Gradienten, die für das Verständnis des Gradientenabstiegsverfahren notwendig ist.
* (Computer-Algebra-System - Starter für Interaktive Übungen) Diese Lernressource hilft Ihnen dabei, solche vordefinierten CAS4Wiki-Starter für bestimmte Wikiversity-Lernressourcen in der Mathematik zu erstellen.
* (CAS4Wiki und Wiki2Reveal) Die vordefinierten CAS4Wiki-Starter sollen dabei sowohl direkt aus der Lernressource als auch aus Wiki2Reveal-Folien mit einem Link zu starten sein. Weil Wiki2Reveal-Folien selbst direkt (on-the-fly) aus einer Wikiversity-Lernressource generiert wird, benötigt man nur eine Linkeinbettung in die Wikiversity-Lernressource selbst.
* (Erstellung von CAS4Wiki-Befehlssequenzen) Selbst erstellt CAS4Wiki-Befehlssequenzen als Ergebnis von Aufgaben an Studierende sollten von den Studierenden aus derCAS4Wiki-WebApp abgespeichert werden (Format: JSON) damit diese Resultate auch zwischen Studierende und Dozent als Arbeitsergebnis ausgetauscht werden können, bzw. an einem Zwischenresultat noch weiter gearbeitet werden kann.
* (Wikiversity Tools) Diese Lernressource kann als Vorlage für den Workflow zur Erstellung von Wikiversity-Tools als AppLSACs verwendet werden, die Autoren bei der Erstellung und Pflege von Lernressourcen mit dynamischen Daten unterstützen.
* (JSON als Speicherformat für CAS4Wiki) diese Lernressource ist ein vollständiger Anwendungsfall für die Anwendung von JSON2Schema und den entsprechenden Lernressource in Wikiversity] und für eine allein im Browser arbeitenden Web-Anwendung, die auch offline in einem Schulnetzwerk als AAppLSAC ohne Internetverbindung verwendet werden kann. Anwendungsfälle sind z.B.
** wenn in Schulen bei e-Klausuren Computer-Algebra genutzt werden darf, aber keine Internetverbindung erlaubt ist. Das generierte JSON ist dann Teil der Abgabe der Klausurleistung von Schüler:innen bzw. Studierenden,
** Ersatz von OpenSource-CAS auf mobilen Endanwendungen ohne Installationsbedarf. Start der Anwendung von einem lokalen Schulserver.
* (CAS4wiki - Anwendung in anderen Sprachen für Wikiversity) Es gibt 3 Hauptbezeichnungen im CAS4Wiki für vordefinierte
   * Befehle,
   * Funktionen und
   * Variablen
    Diese werden im CAS4Wiki standardmäßig mit
   * Commands,
   * Functions und
   * Variables bezeichnet.
    Die Bezeichnungen im JSON-Editor, die auch auf Schaltflächen zu finden sind, können je nach Sprache der Wikiversity-Lernressource geändert werden. Für eine deutsche Lernressource können diese Bezeichnungen und die Überschrift/Titel für die Befehlssätze in den CAS4Wiki-Einstellungen (Settings/Zahnrad) geändert werden. Befehlssätze für einen deutschen Wikiversity-Kurs können dann z.B. die folgenden Bezeichnungen besitzen, wenn Sie diese in den Einstellungen z.B. in
   * Befehle,
   * Funktionen und
   * Variablen ändern
    Diese Bezeichnungen sind in der JSON der Befehlslisten gespeichert. Wenn jemand ein JSON z.B. mit spanischen Bezeichnungen austauscht oder einen CAS4Wiki-Startlink verwendet, werden auch die übersetzten Bezeichnungen im CAS4Wiki-Editor geändert. Damit ist sichergestellt, dass das Wikiversity-Kursmaterial und der CAS4Wiki-Befehlssatz in der gleichen Sprache präsentiert werden können.

## Nutzen des Wikiversity-Tools CAS4Wiki

Sie können das CAS4Wiki einfach im Browser starten. Als AppLSAC können Sie den Satz an Befehlen ausfüren, verändern und anpassen. Danach können Sie:
* als Dozent:in/Lehrer:in diesen CAS4Wiki-Befehlssatz entweder als JSON-Datei abspeichern und mit Ihren Schüler:innen und Studierenden teilen. Ihre Veränderung werden dabei nicht auf einen Server geladen, sondern direkt im Browser verarbeitet. Sie können das testen, indem Sie das CAS4Wiki-Tool als ZIP-Datei von GitHub unter der URL https://github.com/niebert/WikiversityDoc/archive/master.zip herunterladen und dann die Datei cas4wiki.html in ihrem Browser laden. Sie können dann auch offline die Computer-Algebra-Befehle aus der JSON-Datei laden zu der zugehörigen Wikiversity-Lernressource ausführen.
* als Studierende/Schüler:in können Sie Aufgaben entsprechend der auf der zugehörigen Wikiveristy-Lernresource durchführen und auch die dann selbst erstellte JSON-Datei mit anderen Schülerinnen und Schülern teilen bzw. in der Gruppe der Studierenden teilen und die Ergebnisse diskutieren.

## Name der AppLSAC

Die in dieser Lernressource erstellte AppLSAC wird "CAS4Wiki" genannt werden, weil es als Webanwendung ein Computer-Algebra-System (CAS) ist, das für (4=fo(u)r=für) ein Wiki (Wikiversity-Lernressourcen) genutzt werden kann. In einer AppLSAC werden die Befehlssequenzen als JSON-Datei geladen und von Wikiversity aus der Lernresources heraus mit spezifischen vordefinierten Befehlen passend zur Lernumgebung genutzt.

## Beispiel für die CAS4Wiki-Ausgabe

Mit Konvexkombinationen kann man Kurven im $\mathbb {R} ^{n}$ darstellen. Als Visualisierung-Beispiel werden dazu Bernsteinpolynome mit Binomialkoeffizienten betrachtet, die als Konvexkombinationen mit Vektoren die Kurve $K(t)$ im $\mathbb {R} ^{n}$ darstellt. Das grundlegendes Beispiel dient dabei zum Umgang mit Funktionen, die dann als Spur der Funktion $f:[a,b]\to \mathbb {R} ^{3}$ für die Verwendung von Diagrammen in Lernressourcen und wie die Diagramme mit einer Vorlage (Template) in einer Wikiversity-Lernressource eingebettet werden können.
* Wenn Sie die AppLSAC in ihrem Browser gestartet haben, können Sie diese WebApp CAS4Wiki für die Aktualisierung von Funktionsplots und den experimentellen Umgang mit Funktionstermen in der Wikiversity-Lernressourcen verwenden, um die Konsequenzen eine Modifikation des Funktionsterms auf die Spur (Bild einer Kurve im $\mathbb {R} ^{n}$) bzw. auf den Graphen zu analysieren. Sie werden in der Lage sein, die aktualisierte JSON als Befehlssequenzen zu laden und zu speichern und auch diese eigenen Befehlssequenzen in eine Wikiversity-Lernressource zu integrieren. Die Einstellung für die Farben der Graphen und der Plot-Ausschnitte bzgl x-, y- und z-Achsen können ebenfalls in der dazugehörigen JSON-Datei gespeichert und geteilt werden, dadurch werden nicht nur die CAS4Wiki-Befehlssequenzen, sondern die CAS4Wiki-Plots für alle Lernenden mit den Formatierungsinformationen reproduzierbar.
* Plots können auch als Bilddatei (PNG-Datei) exportiert werden wiederum als Graphik in eine Lernresources integriert werden, indem man diese Bilddatei in WikiCommons hochlädt.
* Wenn Sie sich zunächst mit dem mathematischen Beispielthema befassen möchten, finden Sie das Thema zunächst unter Konvexkombination. Ferner sehen Sie neben CAS4Wiki auch andere Optionen, interaktive Komponenten als Geogebra-Dateien für Wikiveristy-Lernressourcen zur Veführung zu stellen.

## Lernbeispiel

Geogebra: Interaktives Applet - Download: Geogebra-File
* Betrachten Sie zunächst das obige Video zu Konvexkombinationen in der Ebene.
* Die Konvexkombination 3. Ordnung lässt sich mit den zwei Hilfpunkten über das folgende Bernsteinpolynom darstellen:
$K(t):=A_{1}\cdot (1-t)^{3}+3\cdot H_{1}\cdot (1-t)^{2}t+3\cdot H_{2}\cdot (1-t)t^{2}+B_{3}\cdot t^{3}$
* Wir werden in dieser Beispielaufgabe CAS4Wiki nutzen, um das obige Beispiel auf 4 Vektoren im $\mathbb {R} ^{3}$ zu übertragen und die Spur im $\mathbb {R} ^{3}$ zu plotten.
* Starten Sie CAS4Wiki in Ihrem Browser als AppLSAC. Dort finden Sie eine Standardbefehlsliste, die angezeigt wird, wenn keine Befehlsliste aus eine Wikiversity-Lernumgebung vordefinert ist und analog zu dem verwendeten CAS Algebrite Demo-Befehle zur ersten Auseinandersetzung liefert.
* Verändern Sie eine einzelnen Befehl im Editor und exportieren Sie die generierte vordefinierte Befehlsliste mit dem SAVE-Icon. Dann erhalten Sie in Ihrem Downloadverzeichnis eine JSON-Datei commands4cas.json, die Ihren geänderten Befehlssatz enthält.
* Nach einem erneuten Ladeb der WebApp CAS4Wiki enthält der Editor wieder die Standard-Demo-Befehlslisten. Laden Sie dann Ihren gespeicherten Befehlssatz mit Ihren Veränderungen wieder ein, den Sie mit Ihren ersten Export im Ihrem Downloadverzeichnis abgespeichert haben.

## Ausführung von CAS4Wiki-Befehlen

Die geladenen CAS4Wiki-Befehle werden durch das Laden einer JSON oder mit einem CAS4Wiki-Startlink in dem JSON-Editor für CAS4Wiki angezeigt. Die CAS4Wiki-Befehle werden nach dem Laden nicht ausgeführt. Wenn Sie einen CAS4Wiki-Befehl ausführen möchten, wählen Sie einen bestimmten Befehl in der Befehlsliste aus und drücken Sie den Play/Execute-Button für den Befehl im Kommandozeileneditor .
Die Darstellung im Bild verwendet eine vordefinierte Funktion $g(x,y)=x^{3}+y^{2}$ und zeichnet den zugehörigen Graphen in CAS4Wiki mit
Der Definitionsbereich für den Plot wurde durch die Argumente von dem "plot3d"-Befehl über $x\in [-5,5]$ und $y\in [-3,8]$ festgelegt.

### Definition eines Startlinks für CAS4Wiki

Nutzen Sie nun den folgenden Link, der CAS4Wiki mit einer vordefinierten Kurve im $\mathbb {R} ^{3}$ lädt und mit dem Bernsteinpolynom die Kurve im $\mathbb {R} ^{3}$ plotten kann.
    CAS4Wiki-Link für Kurven im $\mathbb {R} ^{3}$
    $K(t)=\left({\begin{array}{c}3\\4\\5\end{array}}\right)\cdot (1-t)^{3}+\left({\begin{array}{c}5\\4\\-3\end{array}}\right)\cdot 3\cdot (1-t)^{2}\cdot t+\left({\begin{array}{c}-6\\-6\\6\end{array}}\right)\cdot 3\cdot (1-t)\cdot t^{2}+\left({\begin{array}{c}-3\\-7\\0\end{array}}\right)\cdot t^{3}$
Der CAS4Wiki-Startlink enthält die unten angegebenen Informationen aus der JSON-Datei. Diese sind
* 4 vordefiniert Vektoren unter "Variables",
* 2 vordefinierte Kurven im $\mathbb {R} ^{3}$ mit den beiden Funktionen $cur(t)$ und $K(t)$, die eine Konvexkombination vom Grad 3 mit einem Bernsteinpolynom darstellt. Dies ist wie folgt definiert:
$K(t):=v_{1}\cdot (1-t)^{3}+3v_{2}\cdot (1-t)^{2}\cdot t+3v_{3}\cdot (1-t)\cdot t^{2}+v_{4}\cdot t^{3}$
    Die Vektoren $v_{1},\ldots ,v_{4}\in \mathbb {R} ^{3}$ sind oben explizit angegeben.

### Plotergebnis

Ausgeführt wird der ausgewählte Befehl mit dem Execute/Play-Button . Wenn man die jeweiligen Definitionen der Kurven auswählt erscheint der folgenden Plot.

### Eigenen Startlink für Wikiversity-Lernressource erstellen

Ziel dieses Abschnitts ist es, einen eigenen Befehlssatz für eine Lernressource zu erstellen und einen CAS4Wiki-Startlink zu erzeugen
* Starten Sie https://niebert.github.io/WikiversityDoc/cas4wiki.html oder Ihre eigene Instanz des CAS4Wiki an Ihrer Schule, Hochschule oder Universität (z.B. Ihre lokale IT-Infrastruktur).
* Wenn Sie bereits mit dem webbasierten Computer Algebra System (Algebrite) vertraut sind und die CAS-Befehle kennen, fügen Sie Ihre Befehle einfach der CAS4Wiki Befehlsliste hinzu und gehen dann zum Menüpunkt Einstellungen, indem Sie auf das Zahnrad-Symbol.
* Geben Sie die URL ein, an die die CAS4Wiki-Befehle gesendet werden sollen (URL: https://niebert.github.io/WikiversityDoc/cas4wiki.html ist vordefiniert, aber Sie können diese durch eine Instanz Ihrer Wahl ersetzen)
* Im Einstellungsmenü kann auch geprüft werden, welche Befehle im Startlink verschlüsselt sind. Diese Einstellungsüberprüfung ist in CAS4Wiki enthalten, um die Menge der als JSON kodierten Befehle in einer URL (CAS4Wiki startlink) transparent zu machen.

## JSON-Datei mit Befehlslisten

Die folgenden JSON-Datei die aus dem CAS4Wiki abgespeichert werden kann, definiert eine Liste von Befehlen, die man über einen Link ebenfalls in CAS4Wiki laden kann. Ein solche JSON-Datei enhält die folgenden Informationen:
* Liste der Befehle für eine bestimmte Wikiversity-Lerneinheit (z.B. Plots, Ableitungen,...)
* Liste von vordefinierten Funktionen, die für die Lerneinheit in Wikiversity verwendet werden sollen,
* Liste von vordefinierten Variable, wie z.B. eine Liste von 4 Vektoren $v_{1},\ldots ,v_{4}\in \mathbb {R} ^{3}$ die für eine 3D-Visualisierung einer Konvexkombination im $\mathbb {R} ^{3}$ in einer Aufgabe in Wikiversity verwendet werden soll.
* Ein CAS4Wiki-Startlink kann diese Inhalte im JSON in CAS4Wiki laden.

### Aktueller Status des AppLSAC

Eine beta-Version des AppLSAC ist verfügbar unter GitHub csv2wikichart_app. Der Export der Graph und Diagramme von CSV2WikiChart verwendet die Graph-Chart-Vorlage für die Darstellung der Diagramme.

### Hintergrundtheorie

* (JSON) Lernen Sie JSON als JavaScript-Objektnotation, um Daten in WebApps zu speichern und zu laden.
* (JSON Editor) Erfahren Sie mehr über webbasierte Anwendungen (WebApps), mit denen Daten in einem JSON-Datencontainer geladen, gespeichert und geändert werden können.
* (AppLSAC) Erfahren Sie mehr über AppLSAC|AppLSAC webbasierte Anwendungen, die keine Internet-Konnektivität benötigen und in Ihrem Browser als Laufzeitumgebung laufen.
* (JSON-Schema)' Erfahren Sie mehr über das JSON-Schema - siehe JSON-Schema - Schritt-für-Schritt-Tutorial
* (Vorschau des Graphen) Die Vorschau der Daten im Diagramm sollte möglich sein, so dass das Diagramm überprüft werden kann, ohne dass das Diagramm in Wikiversity oder Wikipedia gerendert werden muss. OpenSource-Bibliotheken in Javascript müssen identifiziert werden, die das Rendern der Daten in der Grafik ermöglichen (z.B. MorrisJS or Plotly for Javascript).