Codeanalyse: Unterschied zwischen den Versionen
K (→Ziele) |
|||
(17 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 3: | Zeile 3: | ||
Programmieren ist eine praktische Tätigkeit, die man insbesondere durch kontinuierliches Üben lernt. Die Überprüfung von Programmen ist jedoch aufwändig. Typischerweise senden Studierende ihre Lösungen an die Tutoren. Diese führen dann eine Reihe von Prüfungen durch: hat die Datei das richtige Format, ist das Programm vom Compiler übersetzbar, liefern vorgegebene Eingabewerten erwartete Ausgabewerte, endet das Programm regulär uvm. Diese Untersuchung kostet viel Zeit. Um jedem Studierenden daher für jedes Programm schneller Feedback geben zu können, setzen Lehrende immer mehr auf automatisierte Testwerkzeuge. Diese sollen vor allem einfache Tätigkeiten übernehmen - z.B. feststellen, ob der vorliegende Quellcode überhaupt vom Compiler übersetzt werden kann - und damit die Analyse der Programme unterstützen. | Programmieren ist eine praktische Tätigkeit, die man insbesondere durch kontinuierliches Üben lernt. Die Überprüfung von Programmen ist jedoch aufwändig. Typischerweise senden Studierende ihre Lösungen an die Tutoren. Diese führen dann eine Reihe von Prüfungen durch: hat die Datei das richtige Format, ist das Programm vom Compiler übersetzbar, liefern vorgegebene Eingabewerten erwartete Ausgabewerte, endet das Programm regulär uvm. Diese Untersuchung kostet viel Zeit. Um jedem Studierenden daher für jedes Programm schneller Feedback geben zu können, setzen Lehrende immer mehr auf automatisierte Testwerkzeuge. Diese sollen vor allem einfache Tätigkeiten übernehmen - z.B. feststellen, ob der vorliegende Quellcode überhaupt vom Compiler übersetzt werden kann - und damit die Analyse der Programme unterstützen. | ||
+ | |||
+ | Viele Hochschulen haben zu dem Zweck bereits eigene Lösungen erstellt. Eine Übersicht über solche Systeme und ihre Funktionalität findet sich z.B. bei Deek & McHugh<ref>Fadi P. Deek, James A. McHugh: ''A Survey and Critical Analysis of Tools for Learning Programming'', in: ''Computer Science Education'', Vol. 8, Nr. 2, ISSN: 0899-3408, Routledge, London, 1998 [http://www.tandfonline.com/doi/pdf/10.1076/csed.8.2.130.3820 Artikel als PDF]</ref>, Hoffmann, Quast & Wismüller<ref>Andreas Hoffmann, Alexander Quast, Roland Wismüller: ''Online-Übungssystem für die Programmierausbildung zur Einführung in die Informatik'', in Silke Seehusen, Ulrike Lucke, Stefan Fischer (Hrsg.): ''DeLFI 2008'', Vol. 132, S. 173-184, GI, 2008 [http://subs.emis.de/LNI/Proceedings/Proceedings132/gi-proc-132-014.pdf Artikel als PDF]</ref> oder Schramm<ref>Joachim Schramm: ''Unterstützung von Planung und Design in der Programmierausbildung an Universitäten'', Masterarbeit, TU Clausthal, 2011 [http://hcis.in.tu-clausthal.de/pubs/2011/tuc/unterstuetzung_von_planung_und_design_in_der_programmierausbildung_an_universitaeten.pdf Download als PDF]</ref>. | ||
== Ziele == | == Ziele == | ||
Zeile 22: | Zeile 24: | ||
== Technik == | == Technik == | ||
− | * [http:// | + | * [http://bit.ly/QONpvL Automatisches Software Bewertungssystem (ASB)] an der HS Trier |
+ | * aSQLg an der HS Hannover: SQL | ||
+ | * [http://www.autolabproject.com/ Autolab] der CMU: alle Programmiersprachen | ||
+ | * [https://duesie.bs.informatik.uni-siegen.de/ Das Übungssystem der Informatik Einführung (DUESIE)] der Uni Siegen: Java und SML | ||
+ | * [http://www.uni-muenster.de/studium/orga/xlx.html eXtreme e-Learning eXperience (XLX)] der Uni Münster: SQL | ||
+ | * [http://www.s3.uni-duisburg-essen.de/jack/ JACK] automatisiertes Übungs- und Prüfungssystem an der Uni Duisburg-Essen | ||
+ | * [http://theory.stanford.edu/~aiken/moss/ Moss] zur Erkennung von Software-Plagiaten der Uni Stanford | ||
+ | * [http://en.wikipedia.org/wiki/Online_judge Online Judge] zur Einschätzung der Lösung bei Programmierwettbewerben | ||
+ | * [https://github.com/KITPraktomatTeam/Praktomat Praktomat] des PraktomatTeams am KIT | ||
== Beispiele == | == Beispiele == | ||
+ | * [https://autolab.cs.cmu.edu Autolab] an der Carnegie Mellon University: alle Programmiersprachen | ||
+ | * [https://github.com/csware/si GATE] an der TU Clausthal und HU Berlin: Java | ||
+ | * [http://graja.hs-hannover.de/ Graja] an der HS Hannover | ||
+ | * [https://jack-demo.s3.uni-due.de JACK] Demo der Uni Duisburg-Essen | ||
* [http://www.ostfalia.de/cms/de/ecult/Praktomat.html Praktomat im eCULT-Projekt] an der HS Ostfalia | * [http://www.ostfalia.de/cms/de/ecult/Praktomat.html Praktomat im eCULT-Projekt] an der HS Ostfalia | ||
* [https://praktomat.info.uni-karlsruhe.de/ Praktomat an der Uni Karlsruhe] | * [https://praktomat.info.uni-karlsruhe.de/ Praktomat an der Uni Karlsruhe] | ||
+ | * [https://jplag.ipd.kit.edu/ JPlag] zum Erkennen abgeschriebener Programmtexte vom KIT | ||
+ | * PABS an der Uni Würzburg | ||
+ | * [http://pp.info.uni-karlsruhe.de/project.php?id=34&lang=de Praktomat] der Uni Passau: Java, C++ und Haskell | ||
+ | * [https://mvc.ikw.uni-osnabrueck.de/vips/vips.php?adm=1&mgc=!ViPS!&srv=prolog VEA] als Teil von ViPS an der Uni Osnabrück: Prolog und Lisp | ||
== Bewertung == | == Bewertung == | ||
=== Vorteile === | === Vorteile === | ||
+ | * Entlastung der Lehrenden und Tutoren | ||
+ | * Direktes Feedback zur individuellen Lösung | ||
* Automatischer Abgleich der Lösungen mit erwarteten Ergebnissen | * Automatischer Abgleich der Lösungen mit erwarteten Ergebnissen | ||
− | |||
=== Nachteile === | === Nachteile === | ||
− | * Schnittstellen und Verhalten sind eindeutig zu spezifizieren | + | * Schnittstellen und Verhalten sind vorab eindeutig zu spezifizieren |
− | * Reaktion auf bestimmte Eingabewerte muss feststehen | + | * Reaktion auf bestimmte Eingabewerte muss feststehen und im Vorfeld hinterlegt sein |
− | * Zusätzliche Sicherheitsmechanismen sind notwendig | + | * Zusätzliche Sicherheitsmechanismen sind notwendig, um Blockieren des Servers bei Endlosschleifen oder Ausführen von Schadcode zu vermeiden |
=== Kombination mit weiteren Szenarien === | === Kombination mit weiteren Szenarien === | ||
− | + | Dieses Szenario bietet sich zur Überprüfung vieler gleichartiger Programme an, z.B. im allgemeinen Übungsbetrieb. Zudem ist es für größere Tutorien oder gemeinsame Lernszenarien vorstellbar, um Studierenden individuelles Feedback zu geben. | |
+ | |||
+ | == Literaturnachweise == | ||
+ | <references /> | ||
== Literatur == | == Literatur == | ||
* Jens Krinke, Maximilian Störzer, Andreas Zeller: ''Web-basierte Programmierpraktika mit Praktomat'', in: ''Softwaretechnik-Trends'', Vol. 22, (3), 2002, [http://www.st.cs.uni-saarland.de/publications/files/krinke-gitrends-2002.pdf Download als PDF] | * Jens Krinke, Maximilian Störzer, Andreas Zeller: ''Web-basierte Programmierpraktika mit Praktomat'', in: ''Softwaretechnik-Trends'', Vol. 22, (3), 2002, [http://www.st.cs.uni-saarland.de/publications/files/krinke-gitrends-2002.pdf Download als PDF] | ||
− | + | * J. Schramm, S. Strickroth, N. T. Le, N. Pinkwart: ''Teaching UML Skills to Novice Programmers Using a Sample Solution Based Intelligent Tutoring System'', in: G.M. Youngblood, P. McCarthy (Hrsg.): ''Proceedings of the 25th International Conference of the Florida Artificial Intelligence Research Society (FLAIRS)'', S. 472 - 477, Marco Island, FL, USA, AAAI, 2012, [http://www.aaai.org/ocs/index.php/FLAIRS/FLAIRS12/paper/download/4388/4849 Download als PDF] | |
+ | * Sven Strickroth, Hannes Olivier, Niels Pinkwart: ''Das GATE-System: Qualitätssteigerung durch Selbsttests für Studenten bei der Onlineabgabe von Übungsaufgaben?'', in: H. Rohland, A. Kienle, S. Friedrich (Hrsg.): ''GI Lecture Notes in Informatics (P-188) - Tagungsband der 9. e-Learning Fachtagung Informatik (DeLFI)'', S. 115 - 126, Köllen Verlag, Bonn, 2011 [http://hcis.in.tu-clausthal.de/pubs/2011/delfi/das_gate-system_qualitaetssteigerung_durch_selbsttests_fuer_studenten_bei_der_onlineabgabe_von_uebungsaufgaben.pdf Download als PDF] | ||
[[Kategorie:Szenarien]] | [[Kategorie:Szenarien]] | ||
[[Kategorie:Formativ]] | [[Kategorie:Formativ]] |
Aktuelle Version vom 1. November 2016, 12:02 Uhr
Inhaltsverzeichnis
Beschreibung
Viele technische Hochschulen bieten Programmierkurse an. Studierende lernen dort Grundlagen der Programmerstellung, und zwar für Programmiersprachen wie Java, C++, PHP usw. Häufig bestehen solche Kurse aus einer Kombination aus Vorlesung und Übung: während eine Vorlesung notwendige theoretische Grundlagen vermittelt, können die Studierenden diese in den Übungen anwenden und in Programme umsetzen.
Programmieren ist eine praktische Tätigkeit, die man insbesondere durch kontinuierliches Üben lernt. Die Überprüfung von Programmen ist jedoch aufwändig. Typischerweise senden Studierende ihre Lösungen an die Tutoren. Diese führen dann eine Reihe von Prüfungen durch: hat die Datei das richtige Format, ist das Programm vom Compiler übersetzbar, liefern vorgegebene Eingabewerten erwartete Ausgabewerte, endet das Programm regulär uvm. Diese Untersuchung kostet viel Zeit. Um jedem Studierenden daher für jedes Programm schneller Feedback geben zu können, setzen Lehrende immer mehr auf automatisierte Testwerkzeuge. Diese sollen vor allem einfache Tätigkeiten übernehmen - z.B. feststellen, ob der vorliegende Quellcode überhaupt vom Compiler übersetzt werden kann - und damit die Analyse der Programme unterstützen.
Viele Hochschulen haben zu dem Zweck bereits eigene Lösungen erstellt. Eine Übersicht über solche Systeme und ihre Funktionalität findet sich z.B. bei Deek & McHugh[1], Hoffmann, Quast & Wismüller[2] oder Schramm[3].
Ziele
- Entlastung der Lehrenden, schnelleres Feedback
- Untersuchung von Programmquellcodes
- Automatisierung einfacher Analyseschritte
- Generelle Überprüfung der Programmqualität
- Test auf Einhaltung von Programmierrichtlinien
Organisation
- Lehrender verteilt nach Vorlesung Programmieraufgaben, um Inhalte zu vertiefen
- Studierende bearbeiten die Aufgaben und erstellen Programme
- Studierende laden ihre Quellcodes zur automatischen Überprüfung hoch
- Direktes Feedback, welche Prüfungen erfolgreich waren und was nicht funktionierte
- Studierende haben noch während des Übungszeitraums Möglichkeit zur Nachbesserung
- Lehrender erhält Übersicht über Versuche und Erfolg
Recht
Technik
- Automatisches Software Bewertungssystem (ASB) an der HS Trier
- aSQLg an der HS Hannover: SQL
- Autolab der CMU: alle Programmiersprachen
- Das Übungssystem der Informatik Einführung (DUESIE) der Uni Siegen: Java und SML
- eXtreme e-Learning eXperience (XLX) der Uni Münster: SQL
- JACK automatisiertes Übungs- und Prüfungssystem an der Uni Duisburg-Essen
- Moss zur Erkennung von Software-Plagiaten der Uni Stanford
- Online Judge zur Einschätzung der Lösung bei Programmierwettbewerben
- Praktomat des PraktomatTeams am KIT
Beispiele
- Autolab an der Carnegie Mellon University: alle Programmiersprachen
- GATE an der TU Clausthal und HU Berlin: Java
- Graja an der HS Hannover
- JACK Demo der Uni Duisburg-Essen
- Praktomat im eCULT-Projekt an der HS Ostfalia
- Praktomat an der Uni Karlsruhe
- JPlag zum Erkennen abgeschriebener Programmtexte vom KIT
- PABS an der Uni Würzburg
- Praktomat der Uni Passau: Java, C++ und Haskell
- VEA als Teil von ViPS an der Uni Osnabrück: Prolog und Lisp
Bewertung
Vorteile
- Entlastung der Lehrenden und Tutoren
- Direktes Feedback zur individuellen Lösung
- Automatischer Abgleich der Lösungen mit erwarteten Ergebnissen
Nachteile
- Schnittstellen und Verhalten sind vorab eindeutig zu spezifizieren
- Reaktion auf bestimmte Eingabewerte muss feststehen und im Vorfeld hinterlegt sein
- Zusätzliche Sicherheitsmechanismen sind notwendig, um Blockieren des Servers bei Endlosschleifen oder Ausführen von Schadcode zu vermeiden
Kombination mit weiteren Szenarien
Dieses Szenario bietet sich zur Überprüfung vieler gleichartiger Programme an, z.B. im allgemeinen Übungsbetrieb. Zudem ist es für größere Tutorien oder gemeinsame Lernszenarien vorstellbar, um Studierenden individuelles Feedback zu geben.
Literaturnachweise
- ↑ Fadi P. Deek, James A. McHugh: A Survey and Critical Analysis of Tools for Learning Programming, in: Computer Science Education, Vol. 8, Nr. 2, ISSN: 0899-3408, Routledge, London, 1998 Artikel als PDF
- ↑ Andreas Hoffmann, Alexander Quast, Roland Wismüller: Online-Übungssystem für die Programmierausbildung zur Einführung in die Informatik, in Silke Seehusen, Ulrike Lucke, Stefan Fischer (Hrsg.): DeLFI 2008, Vol. 132, S. 173-184, GI, 2008 Artikel als PDF
- ↑ Joachim Schramm: Unterstützung von Planung und Design in der Programmierausbildung an Universitäten, Masterarbeit, TU Clausthal, 2011 Download als PDF
Literatur
- Jens Krinke, Maximilian Störzer, Andreas Zeller: Web-basierte Programmierpraktika mit Praktomat, in: Softwaretechnik-Trends, Vol. 22, (3), 2002, Download als PDF
- J. Schramm, S. Strickroth, N. T. Le, N. Pinkwart: Teaching UML Skills to Novice Programmers Using a Sample Solution Based Intelligent Tutoring System, in: G.M. Youngblood, P. McCarthy (Hrsg.): Proceedings of the 25th International Conference of the Florida Artificial Intelligence Research Society (FLAIRS), S. 472 - 477, Marco Island, FL, USA, AAAI, 2012, Download als PDF
- Sven Strickroth, Hannes Olivier, Niels Pinkwart: Das GATE-System: Qualitätssteigerung durch Selbsttests für Studenten bei der Onlineabgabe von Übungsaufgaben?, in: H. Rohland, A. Kienle, S. Friedrich (Hrsg.): GI Lecture Notes in Informatics (P-188) - Tagungsband der 9. e-Learning Fachtagung Informatik (DeLFI), S. 115 - 126, Köllen Verlag, Bonn, 2011 Download als PDF