proggen.org C-lernpfad programm

Präsentation und Organisation von eigenen Projekten
Antworten
Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

proggen.org C-lernpfad programm

Beitrag von cloidnerux » Do Jan 27, 2011 7:50 pm

Wie schon bei progbuntu als Idee gefasst, wäre ein Programm für einen geführten Lernweg in C nicht schlecht und es Interessiert mich gerade.
Also hab ich mal grundsätzliche Gedanken gefasst, wie das ganze Funktionieren kann.
Jeder, der Lust, Zeit und Elan hat, mitzuwirken, beizutragen und was zu programmieren, soll das gerne machen, mal sehen ob wir es bis zu einem Funktionierenden Programm schaffen.
C-lernpfad-1.png
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: proggen.org C-lernpfad programm

Beitrag von Dirty Oerti » Do Jan 27, 2011 10:51 pm

Ich kann mal grob skizzieren, wie PABS, das System hier an der Uni Würzburg funktioniert:

Dir wird eine Aufgabe gestellt (in Form einer PDF Datei, kurz, als Informationselement)
Innerhalb der Aufgabe befindet sich eine genaue Definition der geforderten Schnittstellen.

Anhand dieser Information erstellst du dann z.B. die entsprechenden Java Klassen (es handelt sich bei PABS um ein System, dass Java-Klassen testet) und lädst diese in ein SVN Repository.
Wenn du der Ansicht bist, deine Implementierung ist gut, dann kannst du das online durch den PABS Server testen lassen. Dabei wird im Prinzip getestet, ob die geforderten Schnittstellen vorhanden sind, wenn sie es sind, werden sie mit festgelegten Daten gefüttert und die Rückgabe wird mit einer gespeicherten, erwarteten Rückgabe verglichen.

Überträgt man diesen Ansatz etwas weiter auf allgemein Programme, so ließe sich folgendes realisieren:
  • Stellung der Aufgabe (dies impliziert auch eine Definition der Schnittstellen, sprich, in welcher Form eine Eingabe erfolgt und in welcher Form eine Ausgabe erwartet wird)
  • Implementierung der Aufgabe durch den Lernenden. Dabei verwendet er/sie Programme/Editoren seiner Wahl
  • Bei Schwierigkeiten sollte es möglich sein, zusätzliche Hinweise vom System zu erhalten.
  • Abgabe über ein Versionsverwaltungssystem. Dazu sollte ein fertiges Skript/Programm bestehen, so dass diese Aufgabe einfach vom Lernenden durchzuführen ist.
  • Eventueller Test der aktuellen Abgabe durch das Testsystem durch eine Datenbank, in der Eingaben und die dazu zu erwartenden Ausgaben gespeichert sind.
  • Angabe der Fehler, falls vorhanden
  • Korrektur der Fehler durch den Lernenden
  • Erneute Abgabe, dann weiter wie zuvor.
  • Treten keine Fehler mehr auf, dann endgültige Abgabe (evtl zusammen mit einer Korrektur durch eine menschliche Person, die auf Programmierfehler oder Denkfehler hinweisen kann, die sich - noch - nicht kritisch auf das Programm auswirken. Solche Fehler kann ein Computer kaum finden.)
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: proggen.org C-lernpfad programm

Beitrag von cloidnerux » Do Jan 27, 2011 11:27 pm

Ich kann mal grob skizzieren, wie PABS, das System hier an der Uni Würzburg funktioniert:

Dir wird eine Aufgabe gestellt (in Form einer PDF Datei, kurz, als Informationselement)
Innerhalb der Aufgabe befindet sich eine genaue Definition der geforderten Schnittstellen.
Das habe ich auch so Skizziert, klingt sehr sinnvoll.
Anhand dieser Information erstellst du dann z.B. die entsprechenden Java Klassen (es handelt sich bei PABS um ein System, dass Java-Klassen testet) und lädst diese in ein SVN Repository.
Wenn du der Ansicht bist, deine Implementierung ist gut, dann kannst du das online durch den PABS Server testen lassen. Dabei wird im Prinzip getestet, ob die geforderten Schnittstellen vorhanden sind, wenn sie es sind, werden sie mit festgelegten Daten gefüttert und die Rückgabe wird mit einer gespeicherten, erwarteten Rückgabe verglichen.
Hier würde ich nicht ganz den Selben weg gehen.
Implementierung der Aufgabe durch den Lernenden. Dabei verwendet er/sie Programme/Editoren seiner Wahl
Hier kann man 3 Ansätze verfolgen:
  • Man Integriert einfach einen Editor in das Programm, folge: Einfaches handeln der Dateien, gute Integration ins gesamt Konzept, Nachteil: Keine vollständige Entwicklungsumgebung, nicht jedermanns Geschmack
  • Integration einer Beliebigen IDE in Unser Programm, indem wir z.B unter Windows den hdc auf ein Frame unseres Programms Legen.
    Vorteil: Beliebige IDE, vergleichsweise wenig Aufwand, Nachteil: Komplizierte Einbindung ins gesamt Konzept, erfordert eine Präselektion durch den lernenden
  • Externe IDE, Vorteil: Wirklich freie Wal, kaum Aufwand zum Implementieren, Nachteil: Schwierig Dateien und Projekte zu Handeln, sehr schwierige Integration ins gesamt Konzept
Bei Schwierigkeiten sollte es möglich sein, zusätzliche Hinweise vom System zu erhalten.
Hier ist die Frage, wie viel Hilfe von wem kommen soll. Man könnte es mit proggen.org verbinden und z.B links zu entsprechenden Seiten im Wiki bereit halten, oder zum Forum verlinken.
Abgabe über ein Versionsverwaltungssystem. Dazu sollte ein fertiges Skript/Programm bestehen, so dass diese Aufgabe einfach vom Lernenden durchzuführen ist.
Hier finde ich die Idee mit dem Lokalen Compilieren und Validieren besser, da man so nicht ungeprüften Code auf einen Server los lässt und man sich keine Gedanken über SVN/Git und Internet Verbindung machen muss.
Eventueller Test der aktuellen Abgabe durch das Testsystem durch eine Datenbank, in der Eingaben und die dazu zu erwartenden Ausgaben gespeichert sind.
Hatte ich in meinem Entwurf durch die Test/Abgabe Wahl ermöglicht.
Angabe der Fehler, falls vorhanden
Hier wirds schwierig, ja nach dem wie viel Info du geben möchtest.

Alles in allem, werden wir an 3 Knackpunkten zu Arbeiten haben: Code Generierung durch den Lernenden, das Testen, also mit Daten Füttern und Auswerten und die zusätzlichen Infos zur Lösung des Problems. Ich möchte auf jeden fall versuchen, ein möglichst Dynamisches Input und Validierungssystem zu haben, um z.B bei Algorithmen verschiedene Zahlenbereiche zu testen um z.B auch mal Bug zu finden. Das ist bei statischen Lösungen eher schwierig.

Das ganze soll erstmal verarbeitet werden, sodass ich mich dann jetzt zur ruhe begeben werde ;) In dem Sinne: Gute Nacht.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: proggen.org C-lernpfad programm

Beitrag von Dirty Oerti » Do Jan 27, 2011 11:53 pm

cloidnerux hat geschrieben:Hier kann man 3 Ansätze verfolgen:

* Man Integriert einfach einen Editor in das Programm, folge: Einfaches handeln der Dateien, gute Integration ins gesamt Konzept, Nachteil: Keine vollständige Entwicklungsumgebung, nicht jedermanns Geschmack
* Integration einer Beliebigen IDE in Unser Programm, indem wir z.B unter Windows den hdc auf ein Frame unseres Programms Legen.
Vorteil: Beliebige IDE, vergleichsweise wenig Aufwand, Nachteil: Komplizierte Einbindung ins gesamt Konzept, erfordert eine Präselektion durch den lernenden
* Externe IDE, Vorteil: Wirklich freie Wal, kaum Aufwand zum Implementieren, Nachteil: Schwierig Dateien und Projekte zu Handeln, sehr schwierige Integration ins gesamt Konzept
Hierbei würde ich ganz klar den letzteren Weg wählen.
Den Nachteil, den du hier angibst, kann man nämlich komplett umgehen.
Dazu ist Aufwand im Sinne der Implementierung von unserer Seite aus aber in Kauf zu nehmen (wenn wir keinen Aufwand haben dann wär's doch langweilig ;) )
Du kannst dem Nutzer freie Wahl lassen.
Was dann nur vom Programm, dass die Aufgaben "verteilt" übernommen werden muss ist folgendes:

Es muss es dem Nutzer ermöglichen, möglichst mit einem Klick (egal welchen Weg er wählt) nach Kompilierung (lokal wird wirklich besser sein, PABS macht das online, um Betrug zu verhindern, was hier ja kein Ziel darstellt) das Programm zu testen (und zu validieren) :)
Wie das gemacht wird hängt stark davon ab, in welcher Form das Verteilprogramm die Aufgaben vorgibt.

Einfachste Implementierung (und meiner Ansicht nach die Beste ... frei nach KISS):
Das Programm stellt dem User eine Datenbank mit versch Aufgaben, bewertet nach Schwierigkeit und evtl Kategorie (= Arbeiten mit Dateien, GUI, etc) zur Verfügung. Diese Datenbank sollte natürlich möglichst online gehalten werden, so dass der User bei Bedarf die entsprechenden Aufgaben laden kann und sie dann bearbeiten kann. Außerdem sollte die Datenbank dann natürlich (durch uns) online erweitert werden, so dass dem Lernenden immer wieder neue Aufgaben zur Verfügung stehen, er jedoch auch sieht, welche Aufgaben er schon bearbeitet hat, und diese dann evtl ausblenden kann o.ä.

Nachdem der Nutzer nun eine Aufgabe heruntergeladen hat und sich dafür entschieden hat, sie zu bearbeiten, bekommt er die Aufgabenstellung dargestellt.

Daraufhin macht er/sie sich auf den Weg, um z.B. in einer IDE oder einfach nur mit Editor die Aufgabe zu absolvieren.
Er kompiliert das Programm, sobald er/sie der Meinung ist, einen ersten Test durchführen zu wollen.

Damit wechselt er wieder zum Verteilerprogramm (das derweil natürlich geschlossen werden kann etc)
Hier wählt er die Aufgabe, die er gerade bearbeitet (auf die er in der GUI natürlich schnell Zugriff haben sollte) aus und betätigt den Knopf "Eine Abgabe einreichen"
Daraufhin wird ein Dateiauswahldialog geöffnet, in dem der Nutzer die ausführbare Datei (sein Programm) auswählt.

Das Verteilprogramm prüft daraufhin anhand des mit der Aufgabe geladenen Eingabe/Ausgabe-Katalogs, ob die richtigen Ausgaben vom Programm produziert werden.

Vorteil dieser Implementierung:
Der Nutzer ist frei in seinem Handeln und an nichts gebunden.
Ein Test des Programms ist sehr einfach und ziemlich direkt durchführbar.

Nachteil dieser Implementierung:
Während der Entstehungsphase wird dem Nutzer kaum geholfen. (Um das zu kompensieren sollte im Verteilprogramm eine ... Liste mit Hinweisen aufgeführt sein, die typische Fragen, die bei der Bearbeitung auftauchen können beantwortet)
Der Nutzer muss wissen, wo sich die ausführbare Datei befindet. Das kann bei erster Benutzung durch aus zu Problemen führen (Abhilfe: Anleitungen zu versch. IDEs, wo diese ihre ausführbaren Programme speichern)

Nachtrag:
Dem Nutzer könnten natürlich auch Vorlagen angeboten werden, in denen die Grundstruktur des Programms schon erstellt ist. Diese sollten dann einfach per Copy&Paste durch den Nutzer verwendbar sein.
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Antworten