arbeiten:lukas-linter-digitaler-assistent-programmierausbildung

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
arbeiten:lukas-linter-digitaler-assistent-programmierausbildung [20.02.2018 14:12] Alexander Bazoarbeiten:lukas-linter-digitaler-assistent-programmierausbildung [14.02.2022 08:34] (aktuell) – [Data-Entry] Alexander Bazo
Zeile 1: Zeile 1:
-====== Lukas Linter - Entwurf und Implementierung eines Assistenzsystem für die Unterstützung von Programmieranfängern auf der Basis statischer Codeanalyse ======+====== Lukas Linter - Entwurf und Implementierung eines Assistenzsystems auf Basis statischer Codeanalyse zur Unterstützung von Programmieranfängern ======
  
 ---- dataentry StudentischeArbeit ---- ---- dataentry StudentischeArbeit ----
-Thema                     : Lukas Linter - Entwurf und Implementierung eines Assistenzsystem für die Unterstützung von Programmieranfängern auf der Basis statischer Codeanalyse  +Thema                                  : Lukas Linter - Entwurf und Implementierung eines Assistenzsystems auf Basis statischer Codeanalyse zur Unterstützung von Programmieranfängern 
-Art_thesistypes           : MA  +Art_thesistypes                        : MA 
-Betreuer_thesisadvisor    : Alexander Bazo  +BetreuerIn_thesisadvisor               : Alexander Bazo 
-Student                   : Jonas Roberts  +BearbeiterIn                           : Jonas Roberts 
-Professor_thesisprofessor  #  +ErstgutachterIn_thesisprofessor        :  
-Status_thesisstate        in Bearbeitung #  +ZweitgutachterIn_secondthesisprofessor N.N. #  
-Stichworte_thesiskeywords : Software Engineerings Education, Digital Assistent, Karl Klammer  +Status_thesisstate                     abgeschlossen 
-angelegt_dt               : 2017-07-03  +Stichworte_thesiskeywords              : Software Engineerings Education, Digital Assistent, Karl Klammer, Assistentssysteme für die Programmierausbildung 
-Beginn_dt                  #  +angelegt_dt                            : 2017-07-03 
-Anmeldung_dt               #  +Beginn_dt                              :  
-Antrittsvortrag_dt        : 2018-02-19  +Anmeldung_dt                           :  
-Abschlussvortrag_dt        #  +Antrittsvortrag_dt                     : 2018-02-19 
-Ende_dt                    +Abschlussvortrag_dt                     
 +Abgabe_dt                              :  
 +Textlizenz_textlicense                 : Unbekannt #  
 +Codelizenz_codelicense                 Unbekannt 
 ---- ----
 +
 +
 +
  
  
Zeile 21: Zeile 27:
  
 === Hintergrund === === Hintergrund ===
-Intelligente Benutzerschnittstellen (Intelligent user interfaces) verfügen über spezielles Nutzer- oder Domänenwissen und unterstützen den Nutzer aktiv bei der Bewältigung seiner Aufgaben. Eine besondere Ausprägung dieser Schnittstellen sind die sogenannten Digitalen Assistenten, die in unterschiedlich interaktiver Art und Weise die Wünsche und Bedürfnisse des Nutzers identifizieren und bei Hilfestellung bzw. Führung bei der Interaktion mit der genutzten Anwendung bieten. Eine bekannte Implementierung eines solchen Assistenten ist etwa der aus früheren Versionen der MS Office-Produkte bekannte Karl Klammer. In dieser Arbeit soll das Prinzip eines digitalen Assistenten als zentrale Komponente eines Feedbacksystems umgesetzt werden, dass Programmieranfänger während der Implementierung erster Übungsaufgaben unterstützt. Neben konkreten syntaktischen Problemen oder Bugs sind qualitativ schlechter Code sowie funktionale Unvollständigkeit häufige Probleme dieser Zielgruppe. Personalisiertes Feedback, das Aufzeigen und Erklären konkreter Fehler und Probleme im Programmcode sowie das kollaborative Lösen dieser Probleme sind wesentlicher Teil des konstruktivistischen Lernansatzes, der in den ersten Programmierkursen am Lehrstuhl für Medieninformatik verwendet wird. Während sich ein solches Vorgehen leicht im Rahmen von Präsenzveranstaltungen umsetzen lässt, fehlt beim studentischen Selbststudium die Möglichkeit, zeitnahes und relevantes Feedback zu auftretenden Problemsituationen zu geben. Möglicherweise vorhandene Fehlermeldung der Entwicklungswerkzeuge können von Programmieranfängern nicht interpretiert werden oder bieten keine Ansatzpunkt zum konstruktivistischen Lösen der Probleme. +Intelligente Benutzerschnittstellen (Intelligent user interfaces) verfügen über spezielles Nutzer- oder Domänenwissen und unterstützen den Nutzer aktiv bei der Bewältigung seiner Aufgaben. Eine besondere Ausprägung dieser Schnittstellen sind die sogenannten digitalen Assistenten, die in unterschiedlich interaktiver Art und Weise die Wünsche und Bedürfnisse des Nutzers identifizieren und bei Hilfestellung bzw. Führung bei der Interaktion mit der genutzten Anwendung bieten. Eine bekannte Implementierung eines solchen Assistenten ist etwa der aus früheren Versionen der MS Office-Produkte bekannte Karl Klammer. In dieser Arbeit soll das Prinzip eines digitalen Assistenten als zentrale Komponente eines Feedbacksystems umgesetzt werden, dass Programmieranfänger während der Implementierung erster Übungsaufgaben unterstützt. Neben konkreten syntaktischen Problemen oder Bugs sind qualitativ schlechter Code sowie funktionale Unvollständigkeit häufige Probleme dieser Zielgruppe. Personalisiertes Feedback, das Aufzeigen und Erklären konkreter Fehler und Probleme im Programmcode sowie das kollaborative Lösen dieser Probleme sind wesentlicher Teil des konstruktivistischen Lernansatzes, der in den ersten Programmierkursen am Lehrstuhl für Medieninformatik verwendet wird. Während sich ein solches Vorgehen leicht im Rahmen von Präsenzveranstaltungen umsetzen lässt, fehlt beim studentischen Selbststudium die Möglichkeit, zeitnahes und relevantes Feedback zu auftretenden Problemsituationen zu geben. Möglicherweise vorhandene Fehlermeldung der Entwicklungswerkzeuge können von Programmieranfängern nicht interpretiert werden oder bieten keine Ansatzpunkt zum konstruktivistischen Lösen der Probleme. 
  
 === Zielsetzung der Arbeit === === Zielsetzung der Arbeit ===
-Ziel der Arbeit ist die Entwicklung und Implementierung eines Digitalen Assistenten, der die aus Tutorien bekannte Lernsituation so weit möglich auf das studentische Selbststudium überträgt. Auf der Basis statischer Code-Analyse soll Studierenden aufbereitetes Feedback zu aktuell im Code identifizierten Problemen angeboten werden. Der digitale Assistent soll dabei diese Probleme lokalisiert und relevant beschreiben und dem Nutzer eine schrittweise Lösung erlauben. Dabei übernimmt der Assistent eine beratende Rolle und liefert das nötige Hintergrundwissen. Der Studierende löst die identifizierten Probleme selbstständig auf der Basis der vermittelten Informationen. +Ziel der Arbeit ist die Entwicklung und Implementierung eines digitalen Assistenten, der die aus Tutorien bekannte Lernsituation so weit möglich auf das studentische Selbststudium überträgt. Auf der Basis statischer Code-Analyse soll Studierenden aufbereitetes Feedback zu aktuell im Code identifizierten Problemen angeboten werden. Der digitale Assistent soll dabei diese Probleme lokalisiert und relevant beschreiben und dem Nutzer eine schrittweise Lösung erlauben. Dabei übernimmt der Assistent eine beratende Rolle und liefert das nötige Hintergrundwissen. Der Studierende löst die identifizierten Probleme selbstständig auf der Basis der vermittelten Informationen. 
  
 Die Arbeit untersucht dabei unterschiedliche Fragestellung:  Die Arbeit untersucht dabei unterschiedliche Fragestellung: 
Zeile 35: Zeile 41:
 "//Kann ein benutzer- und kontextspezifisches Assistenzsystem Programmieranfängern bei der Interpretation und Behebung häufiger Coding-Probleme unterstützen?//" "//Kann ein benutzer- und kontextspezifisches Assistenzsystem Programmieranfängern bei der Interpretation und Behebung häufiger Coding-Probleme unterstützen?//"
  
-Das im Rahmen der Arbeit zu entwickelnde System basierte auf bestehende Werkzeugen zur statischen Analyse von Quellcode. Exemplarisch wird es als Plugin für die Entwicklungsumgebung IntelliJ IDEA sowie die Programmiersprache Java entwickelt. Grundlage für die didaktischen Inhalten sind der OOP-Kurs des Lehrstuhls. Das System soll als Mehrkomponentensystem realisiert werden, bestehenden aus dem Plugin in der Entwicklungsumgebung, einem als Wissensbasis fungierenden Hintergrunddienst sowie einer separaten Komponente für den Digitalen Assistenten.+Das im Rahmen der Arbeit zu entwickelnde System basierte auf bestehende Werkzeugen zur statischen Analyse von Quellcode. Exemplarisch wird es als Plugin für die Entwicklungsumgebung IntelliJ IDEA sowie die Programmiersprache Java entwickelt. Grundlage für die didaktischen Inhalten sind der OOP-Kurs des Lehrstuhls. Das System soll als Mehrkomponentensystem realisiert werden, bestehenden aus dem Plugin in der Entwicklungsumgebung, einem als Wissensbasis fungierenden Hintergrunddienst sowie einer separaten Komponente für den digitalen Assistenten.
  
 === Konkrete Aufgaben === === Konkrete Aufgaben ===
Zeile 43: Zeile 49:
 * Entwicklung eines Plugins zur Extraktion der Ergebnisse der statischen Codeanalyse aus der Entwicklungsumgebung * Entwicklung eines Plugins zur Extraktion der Ergebnisse der statischen Codeanalyse aus der Entwicklungsumgebung
 * Recherche und Aufarbeitung von Patterns und Antipatterns für die Gestaltung Digitaler Assistenten * Recherche und Aufarbeitung von Patterns und Antipatterns für die Gestaltung Digitaler Assistenten
-* Entwicklung einer Wissensbasis für den Einsatz eines Digitalen Assistenten für den OOP-Kurs+* Entwicklung einer Wissensbasis für den Einsatz eines digitalen Assistenten für den OOP-Kurs
 * Entwicklung einer graphischen Komponenten für die Darstellung des bzw. Interaktion mit dem Assistenten * Entwicklung einer graphischen Komponenten für die Darstellung des bzw. Interaktion mit dem Assistenten
 * Evaluation des Systems mit einer Stichprobe der potenziellen Nutzergruppe * Evaluation des Systems mit einer Stichprobe der potenziellen Nutzergruppe