Schwierigkeiten und Lernbarrieren beim Programmieren

Schwierigkeiten und Lernbarrieren
beim Programmieren Lernen
Andreas Lackner
Andreas Oberdorfer
ALPEN-ADRIA Universität Klagenfurt
Klagenfurt, Österreich
ALPEN-ADRIA Universität Klagenfurt
Klagenfurt, Österreich
[email protected]
[email protected]
ABSTRACT
waren. Weiters behandeln wir die Frage, wo die Ursachen für
diese Probleme liegen könnten und verwenden dafür Daten
einer Umfrage unter Gymnasial-Informatiklehrern und -lehrerinnen die, während einer Tagung im März 2015, zu diesem
Thema befragt wurden.
Die Arbeit ist wie folgt aufgebaut. Nach dieser Einleitung
folgt ein Kapitel über den theoretischen Hintergrund und
Programmierkonzepte beziehungsweise Lernbarrieren. Danach wird auf ähnliche, bereits existierende Arbeiten verwiesen und deren Ergebnisse kurz erläutert. Als nächstes
folgt die Beschreibung der Methoden, die für die qualitative Datenanalyse angewendet wurde und eine Übersicht
über die Daten, welche für diese Studie gesammelt wurden.
Den Hauptteil der Arbeit stellt die Auswertung und Analyse der Ergebnisse, der vorhin schon erwähnten Umfragen,
zu konzeptuellen Problemen beim Programmieren Lernen
von Studierenden beziehungsweise die Sicht der Lehrenden
darauf, dar. Zum Schluss folgt noch ein zusammenfassender
Überblick über die Auswertung.
Jeder Person, die sich selbst nicht mit dem Programmieren
beschäftigt, sieht diese Tätigkeit zumeist als hochkompliziert
und sehr schwer erlernbar an. Dieses Paper beschäftigt sich
nun mit den Fragestellungen, welche Konzepte beim Erlernen des Programmierens häufig als sehr schwer erlernbar
angesehen werden und zusätzlich mit der Frage, woran dies
aus Sicht von Lehrenden, liegen kann.
Keywords
Lernbarrieren, problematische Konzepte beim Programmieren Lernen
1.
EINFÜHRUNG
Jeder Student beziehungsweise Studentin an der Alpen-Adria
Universität Klagenfurt der/die ein technisches Studium absolviert, muss die Lehrveranstaltung ”Einführung in die objektorientierte und strukturierte Programmierung” (kurz ESOP) besuchen. Dabei wird als Programmiersprache Java
verwendet und der Kurs ist vom Aufbau her so konzipiert,
dass wirklich keine Vorkenntnisse notwendig sind um den
Kurs bestehen zu können. Trotzdem lässt das Verhältnis der
Anmeldezahlen und die Anzahl der positiv abgeschlossenen
Studenten beziehungsweise Studentinnen darauf schließen,
dass es sich hierbei um eine Art Selektierungslehrveranstaltung handelt. Damit ist gemeint, dass durch eine solche
Lehrveranstaltung ein Großteil der Studenten und Studentinnen aussortiert wird. Diese Zahlen bekommt jeder Studienanfänger und -anfängerin, oft sogar über die entsprechenden
Studienrichtungen hinaus, innerhalb kürzester Zeit zu hören
und damit entstehen bereits von vorn herein Abneigungen
gegen das Programmieren beziehungsweise im speziellen gegen diese Lehrveranstaltung.
Für dieses Paper sammelten wir Daten von Studenten und
Studentinnen die diese, beziehungsweise die an der Technischen Universität München äquivalent angebotene, Lehrveranstaltung besucht haben und stellten ihnen die Frage, welche
Konzepte beim Programmieren Lernen sehr schwer erlernbar
2.
THEORETISCHER HINTERGRUND
Da in dieser Arbeit Konzepte, welche beim Erlernen des
Programmierens zu Problem führen, im Vordergrund stehen,
werden in diesem Abschnitt Definitionen aufgeführt, welche
erklären, was unter einem Programmierkonzept zu verstehen
ist. In weiterer Folge wird auf Lernbarrieren eingegangen.
Im zweiten Teil dieses Abschnitts wird deshalb beschrieben,
was im Zuge dieser Arbeit unter Lernbarrieren zu verstehen
ist und woher deren Definitionen stammen.
2.1
Programmierkonzepte
Im Kontext der Programmierung darf man das Wort Konzept
nicht immer gleichwertig verstehen, wie dies im Alltagsgebrauch der Fall ist. Aus dem lateinischen ”concipere” beziehungsweise ”concipio” abgeleitet, was soviel bedeutet wie
”erfassen”, ”formulieren”, meint hier ein Konzept eine ungefähre Planung, bei welcher die Details noch nicht genau geklärt und ausformuliert sind, es sich somit um die Rohfassung
eines Plans handelt. [10]
In der Programmierung kommen nämlich zwei unterschiedliche Bedeutungen bei der Verwendung des Wortes Konzept
vor. Geht es um die Erstellung eines Programms, bedeutet
dies, ebenso wie im alltäglichen Gebrauch, dass es sich bei
einem solchen Konzept um eine grobe Planung für ein Programm handelt, bei welchem die genaue Implementierung
der einzelnen Methoden noch nicht endgültig definiert wurde.
Beispielsweise kann es sich dabei um ein einfaches Struk1
togramm in Form eines Nassi-Shneiderman-Diagramms [7]
handeln oder aber auch um eine in Pseudo-Code verfasste
Programmbeschreibung. Unter Pseudo-Code versteht man
eine nicht für den Computer verwendbare Beschreibung eines
Programmes, sondern eine Mischung aus leicht für den Menschen lesbarer Code, welcher jedoch bereits den zu verwendenden Algorithmus großteils beschreibt.
In der Lernpsychologie beschäftigt man sich hauptsächlich
mit den Vorgängen, die ablaufen, wenn etwas gelernt wird.
Aus den unterschiedlichsten Gründen ist der umgekehrte
Fall, also woran es liegt dass etwas nicht gelernt wird, mindestens genauso interessant. In diesem Fall spricht man von
Lernbarrieren. Der dänische Lerntheoretiker Knud Illeris unterteilt in seinem Buch ”Lernen verstehen” [5] diese Barrieren
in unterschiedliche Bereiche:
Die zweite Bedeutung des Wortes Konzept im Kontext der
Programmierung tritt auf, wenn es um die sprachspezifischen Eigenschaften einer Programmiersprache geht. Hier
meinen Konzepte, welche Strukturen, hier sind sowohl Datenals auch Kontrollstrukturen gemeint, eine spezielle Programmiersprache unterstützt. Diese Konzepte hängen grundsätzlichen mit den Prinzipien zusammen, die bei der Entwicklung der Programmiersprache selbst ausgewählt wurden. Am Beispiel der Programmiersprache Java lauten diese
Prinzipien wie folgt: Sie muss
1. Fehllernen:
Vom Fehllernen wird gesprochen, wenn das gelernte
nicht dem Vermittlungsziel des Lehrers entspricht. Dabei kann es sich um eine Folge von unzureichenden
Vorkenntnissen, schlechter Kommunikation oder aber
auch fehlender Konzentration handeln, also wenn dem
Lernenden nicht klar ist, was gelernt werden soll beziehungsweise was genau von ihm verlangt wird. Meistens lässt sich diese Barriere aber leicht erkennen und
entsprechend auch einfach abbauen. Umso wichtiger
ist es, ein solches Fehllernen schnell zu erkennen und
die Ursachen dafür frühzeitig zu beheben um nicht
das ganze Wissenskonstrukt, welches sich der Lernende
aufbaut, auf falschen Grundlagen beruht und sich dadurch die bereits vorhandenen Irrtümer weiter verbreitern und verfestigen. Bezogen auf die Informatik und
dem Programmieren Lernen wäre hierzu ein Beispiel,
dass ein Programm nicht die gewünschte Funktion besitzt, weil falsche Annahmen von Strukturen oder Befehlen zu entsprechend falscher Verwendung derselbigen führt.
1. ”einfach, objektorientiert und vertraut”
2. ”robust und sicher”
3. ”architekturneutral und plattformübergreifend”
4. ”hochperformant” ausführbar
5. ”interpretierbar, aufteilbar und dynamisch”
sein. [9]
Anhand dieser Prinzipien, wie zum Beispiel ”objektorientiert”, entstehen unterschiedliche Konzepte, die zum Teil
nur für solche Programmiersprachen gültig sind, welche diese
Eigenschaft der Objektorientierung gemeinsam haben. Andere hingegen, wie zum Beispiel das Konzept von Datenstrukturen, sind für beinahe alle Programmiersprachen gültig.
Solche Konzepte unterscheiden sich abhängig von der verwendeten Programmierumgebung normalerweise nur in der
Verwendung, damit ist die Syntax gemeint, die durch die
verwendete Programmiersprache vorgegeben wird.
2. Abwehr gegen Lernen:
Von einer Abwehr gegen das Lernen spricht man, wenn,
meist sogar unbewusst, eine Abwehrhaltung gegenüber
dem Lernen eingenommen wird. Grundsätzlich ist diese
Abwehrhaltung zum Lernen schon von vornherein vorhanden, also noch bevor die Lernsituation überhaupt
eingetroffen ist. Illeris verweist an dieser Stelle auf den
deutschen Soziologen und Sozialpsychologen Thomas
Leithäuser, der in seinem Buch ”Formen der Alltagsbewusstsein” [1] typische Abwehrmechanismen beschreibt.
Einige typische davon sind hier nun anhand von Beispielen aufgelistet:
Wenn im Informatikstudium, aber auch bereits in der Schule,
von Programmierkonzepten gesprochen wird, dann geht es
vorrangig um die letztere Bedeutung, also um programmiersprachen(un)abhängige Grundideen die beim Programmieren
verwendet werden.
(a) Reduktion: ”das kenn ich ja schon”
(b) Harmonisierung: ”das ist gleich, wie damals das
...”
Gängige Konzepte sind dabei Datentypen, Speicherverwaltung, Algorithmen, Rekursion und noch viele weitere, aber
auch Bereiche die nur in bestimmten Programmiersprachen
verwendet werden, wie zum Beispiel bei objektorientierten
die Vererbung oder Polymorphie. Eine vollständige Liste
würde hier bei weitem den Rahmen dieser Arbeit sprengen
und daher beschränken wir uns auch nur auf diejenigen, die
bei der Auswertung der Daten vorkamen, also in den Umfragen von den Teilnehmern genannten wurden.
2.2
(c) Verschiebung: ”damit habe ich nichts zu tun”
(d) Nivellierung: ”es gibt ja eigentlich gar kein Problem”
Starke Ausprägungen von solchen Blockaden können
sich sogar bis hin zu Phobien entwickeln und sind dann
entsprechend mit starken Angstzuständen verbunden.
Solche Abwehrhaltungen werden hauptsächlich gegen
drei Arten von Belastungen entwickelt. Als eine Art
Schutzmechanismus um die schiere Unmenge an Informationen, die als Input aufgenommen werden, auch
verarbeiten zu können. Zweitens gegen die ständigen
Veränderungen die unsere Gesellschaft in immer kürzeren Zyklen durchläuft. Und schließlich bleibt noch der
Aspekt in unsrer sogenannten Risikogesellschaft sein
eigenes Leben selbst zu bestimmen.
Lernbarrieren
Für dieses Paper wurden nicht nur Daten analysiert die sich
damit beschäftigen welche Konzepte in der Programmierung
schwer zu erlernen sind, sondern auch damit wo hier die Ursachen liegen.
2
3. Ambivalenz:
Tritt ein Lernprozess auf, der unter Umständen gesellschaftlich oder beruflich vorgeschrieben wird, letztendlich jedoch bewusst abgelehnt wird, dann spricht
man von einer Ambivalenz. Oft tritt diese Lernbarriere bei Menschen ohne Perspektive auf, die jedoch
zum Beispiel aufgrund von Arbeitslosigkeit entsprechende Kurse besuchen müssen. Ebenso findet man diese
Art häufig bei immer denselben Lehrveranstaltungen
einer Studienrichtung, deren Verwendung im späteren
Berufsalltag als nicht notwendig und damit auch überflüssig erachtet wird. Wichtig ist es diese Ambivalenzen zu erkennen und deren Existenz zu akzeptieren.
Dadurch entwickelt sich eine Art von Ambivalenztoleranz [2] und Konflikten wird nicht mehr ausgewichen.
Ein Zurückziehen und Abkapseln würde jedoch zu einer
Ambivalenzabwehr führen, die eine immer weitere Entfernung, der jedoch meist notwendigen Situation, führt
und später nur mehr sehr schwer abgebaut beziehungsweise akzeptiert werden kann.
dien mit den Ergebnissen unserer Auswertung auf Gemeinsamkeiten, beziehungsweise Unterschiede.
3.1
1. Programmausführung:
Hier ist es wichtig eine korrekte Grundvorstellung der
Ausführung eines Programmes zu haben. Das heißt,
es muss verstanden werden, dass Programmzeilen sequenziell ausgeführt werden, das Verhalten des Programms von der aktuell ausgeführten Zeile abhängt
und nicht von den darauffolgenden. Lernende neigen
dazu zu glauben, dass bei der Ausführung alle Zeilen
zeitgleich eine Rolle spielen und schreiben dem Computer eine Art Intelligenz zu, mit der er erahnen kann,
was in den erst später ausgeführten Zeilen geschieht.
4. Widerstand gegen Lernen:
Ein Widerstand gegen das Lernen kommt, im Gegensatz zur Abwehr gegen das Lernen, in Situationen und
Kontexten vor, die als inakzeptabel eingestuft werden. Ein weiterer Unterschied ist eben, dass hier der
Widerstand nicht schon von Anbeginn vorhanden ist,
sondern erst in der Situation entsteht, wenn sich wie
oben bereits beschrieben, ein das Individuum sich einer
Sache gegenübersieht, die es nicht akzeptieren will.
Als Beispiel lässt sich hier die Aggression und Wut
eines Kindes aufführen, welches mit einer Situation
nicht einverstanden ist und entsprechend reagiert. Ein
Erwachsener wird in einer Situation, mit der nicht einverstanden ist, zum Beispiel die Abweisung bei einer
Arbeitssuche, entweder akzeptieren und auf Ursache
dafür vielleicht sogar bei seiner eigenen Person suchen
oder er reagiert mit Erklärungsversuchen und Entschuldigungen und nimmt dadurch eine Abwehrhaltung ein.
Diesen Abwehrcharakter findet man auch oft bei Schülern, die die Schuld, für ihr Versagen, in der Schule,
auf den Gegenstand oder den Lehrer zurückführen.
Solche Erklärungsmuster werden im Laufe der Zeit immer häufiger angewendet und letztendlich stehen diese
einem zweckvollen Lernen und dem damit verbundenen erfolgreichen Ausbildungsabschluss im Wege. Um
nochmalig auf den Unterschied zwischen Abwehr gegen
Lernen und Widerstand zum Lernen zurückzukommen,
lässt sich auch unter Widerstand beziehungsweise stillem Protest ein Lernerfolg erzielen, jedoch muss eine
vorhandene Abwehr zuerst abgebaut werden, um zum
Ziel zu kommen.
3.
Master‘s Thesis von Teemu Sirkiä
Eine Arbeit, die sich mit einer ähnlichen Themenstellung wie
diese beschäftigt, ist die Master’s Thesis von Teemu Sirkiä,
einem Absolventen der finnischen Aalto Universität. Der Titel der Arbeit lautet ”Recognizing Programming Misconceptions”. Im Zuge dieser Arbeit wurden Programmieranfänger
beobachtet und es wurde versucht herauszufinden, welche
Programmierkonzepte von Lernenden falsch verstanden werden und zu Problemen beim Erlernen einer Programmiersprache führen.
Sirkiä fasst diese Konzepte zu Fehlvorstellungen zusammen
und unterteilt diese in fünf Kategorien.
2. Variablen und Zuweisungen:
Lernende verstehen oftmals nicht, dass Variablen zu
jeder Zeit nur einen Wert beinhalten können und es
daher wichtig ist Variablenzuweisungen in der richtigen
Reihenfolge zu schreiben.
3. Programmablauf:
Das Problem beim Ablauf von Programmen kann darin
liegen, dass es zu Fehlvorstellungen bei der Ausführung
kommt. Lernenden fällt es hier oft schwer, zu verstehen, dass immer die nächste Anweisung ausgeführt
wird. Es kommt oft zur Fehlvorstellung, dass Anweisungen in einem Art Buffer gespeichert und dann
auf einmal ausgeführt werden. Vor allem bei Schleifen
kann es hier zu Problemen kommen, so entsteht die
Fehlvorstellung, dass bei while-Schleifen die Abbruchbedingung permanent überprüft oder bei for-Schleifen
nicht verstanden wird, wo und wann, die Zählvariable erhöht wird. Bei Verzweigungen ergibt sich oft
das Problem, dass der richtige Programmablauf nicht
mehr nachvollzogen werden kann.
4. Funktionen und Funktionsaufrufe:
Hier sind es vor allem Parameterübergaben und Rückgabewerte die zu Fehlvorstellungen führen können. Es
ist schwer zu verstehen was es bedeutet, wenn ein Parameter einer Funktion übergeben wird, besonders im
Fall, wenn Variablen außerhalb einer Funktion andere
Namen als innerhalb haben. Dass lokale Variablen
außerhalb des dafür definierten Funktionsbereichs nicht
aufgerufen werden können ist auch oftmals schwer verständlich. Wenn dann auch noch Parameter als Referenzen übergeben werden (z.B. Pointer in C oder Call
by Reference im Gegensatz zu Call by Value) kommen
noch eine Vielzahl zusätzlicher Hürden hinzu.
ÄHNLICHE ARBEITEN
Im Zuge unserer Literaturrecherche sind wir auf einige Arbeiten gestoßen, welche sich mit dem gleichen oder ähnlichen
Themen beschäftigen. Um einen Einblick zu erhalten, wie
solche Studien geführt werden und zu welchen Ergebnissen
diese kamen, folgt eine Zusammenfassung von zwei exemplarischen Studien von Teemu Sirkiä von der Aalto Universität in Finnland und von Matthew Butler und Michael Morgan von der Monash Universität in Australien. In weiterer
Folge vergleichen wir auch die Ergebnisse dieser zwei Stu3
5. Objektorientierung:
Der Umstieg von prozeduraler auf objektorientierte Programmierung beherbergt eine Vielzahl an zusätzlichen
Potentialen für Fehlvorstellungen. Die Konzepte von
Klassen, Objekten, Methoden und Referenzen sind wichtige Bauteile, doch müssen sie, um das Prinzip der
Objektorientierung begreifen zu können, als Ganzes
wahrgenommen werden. Das heißt, es muss verstanden
werden, wie diese zusammenspielen und miteinander
verbunden sind.
Dies ist wichtig um unterscheiden zu können, ob es sich um
einen blutigen Programmieranfänger beziehungsweise Programmieranfängerin oder um eine Person handelte, die bereits Erfahrung im Programmieren besaß. Im dritten Bereich
sollten die Studenten ihre Lerngewohnheiten schildern und
darüber reflektieren, ob diese vielleicht an der Entstehung
von konzeptuellen Verständnisproblemen beteiligt sind. Der
vierte Teil ist der wichtigste dieser Studie. Hier sollten
die Befragten sich selbst bezüglich der vorhin definierten
Konzepte beurteilen. Als erstes sollten sie unter Verwendung einer Siebenpunkteskala die Schwierigkeiten mit dem
Verständnis jedes der einzelnen Gebiete bewerten. Eine
weitere Frage, welche mithilfe der gleichen Skala beantwortet
werden sollte, behandelte die Schwierigkeiten bezüglich der
Implementierung der Konzepte. Für die Gestalter der Studie
war es hier wichtig, zwei verschiedene Fragen zu stellen, da
ihrer Meinung nach und nach Lahtinen et. al. (2005) Studenten dazu neigen, ihr Verständnis zu überschätzen. Die
unterschiedlichen Fragen sollten dazu beitragen dem entgegenzuwirken. Der letzte Teil bat den Studienteilnehmern
und Studienteilnehmerinnen die Möglichkeit Themenbereiche anzugeben, welche nicht in der Liste enthalten waren,
bei denen sie jedoch auch große Schwierigkeiten hatten.
Die Auswertung der Umfrage führte zu folgenden Ergebnissen.
[11]
3.2
Studie an Programmieranfängern von
Matthew Butler und Michael Morgan
Matthew Butler und Michael Morgan führten eine Studie an
Programmieranfängern durch, bei der es darum ging herauszufinden, welche Programmierkonzepte für Studienanfänger besonders schwer zu erlernen sind. Der Name der Arbeit lautet Learning challenges faced by novice programming
students studying high level and low feedback concepts. Diese
Studie richtet sich vor allem an Ersteller von Curricula und
Ausbildende. Im Zuge der Studie wurden Erstsemestrige der
Studienrichtung Informationstechnologie der Monash University in Melbourne, Australien befragt. Die beinhalteten
Fragen bezogen sich auf den Lernaufwand und die Schwierigkeiten, welche die Lernenden in einem Programmiergrundlagenkurs hatten. Die Studie wurde im Zuge der ASCILITE
2007 in Singapur veröffentlicht.
Butler und Morgan erstellten anhand des Curriculums eine
Liste an Kompetenzen, welche alle nach Abschluss des Kurses
beherrscht werden sollten:
Auswertung für das Verstehen von Konzepten
Folgende Tabelle zeigt die Auswertung der Befragung über
die Schwierigkeit beim Verstehen der verschiedenen Konzepte. Die Teilnehmer und Teilnehmerinnen der Studie konnten
hier, je nach Schwierigkeit, sieben Punkte für jedes Konzept
vergeben. Die letzte Spalte der Tabelle zeigt den durchschnittlichen Punktewert aller Antworten.
1. Algorithmen
Table 1: Durchschnittliche Schwierigkeit beim Verstehen von Konzepten (n=167)
2. Syntax
Konzept
Algorithmus
Syntax
Variablen
Verzweigungen / Schleifen
Arrays
Funktionen
OO Konzepte
OO Design
Testen und Debuggen
3. Variablen
4. Verzweigungen und Schleifen
5. Arrays
6. Funktionen
7. Objektorientierung
Schwierigkeit
groß
klein
mittel
mittel
mittel
groß
groß
groß
mittel
Punkte im Durchschnitt
1.98
2.56
2.14
2.53
4.17
3.92
4.92
4.52
3.60
8. Programmieren im allgemeinen und Objektdesign
Auswertung für das Implementieren von Konzepten
Für die Frage, wie schwierig es ist diese Konzepte zu implementieren, wurde gleich vorgegangen. In der folgenden
Tabelle sind wiederum alle Bereiche, mit den entsprechenden durchschnittlichen Ergebnissen, dargestellt.
9. Testen und Debuggen
Diese Liste stellte den Kern der Studie dar. Des weiteren
werden diese Themenbereiche noch in high-level und lowlevel Konzepte unterteilt. Zu den low-level Konzepten zählten hier zum Beispiel die Syntax der Programmiersprache
oder der Umgang mit Variablen. Zu den high-level Konzepten gehörten Bereiche wie Objektorientierung oder Programmdesign.
Für die Analyse wurden Fragen zu fünf verschiedenen Bereichen gestellt. Der erste Sektor beinhaltete Fragen über
allgemeine Informationen der Studienteilnehmer, wie Alter,
Geschlecht, etc.. Im zweiten Teil ging es generell um die Programmiererfahrung, die Studienteilnehmer und Studienteilnehmerinnen schon vor ihrer Studienzeit gesammelt hatten.
Wie man aus den beiden Tabellen erkennen kann, gibt es
eine große Korrelation zwischen den Schwierigkeiten beim
Verstehen und den Schwierigkeiten bei der Implementierung
der verschiedenen Konzepte. Das Implementieren fällt in
fast allen Fällen etwas schwerer als das Verstehen.
Wenn man die einzelnen Bereiche nach der Schwierigkeit
anordnet, so sind es die high-level Konzepte, also jene die
von mehr konzeptioneller Natur sind, welche die größten
Hürden darstellen. Die low-level Konzepte scheinen sowohl
beim Verstehen, als auch beim Implementieren, im hinteren
4
werden.
Table 2: Durchschnittliche Schwierigkeit beim Implementieren von Konzepten (n=167)
Konzept
Algorithmus
Syntax
Variablen
Verzweigungen / Schleifen
Arrays
Funktionen
OO Konzepte
OO Design
Testen und Debuggen
Schwierigkeit
groß
klein
mittel
mittel
mittel
groß
groß
groß
mittel
5.
Punkte im Durchschnitt
2.21
2.50
2.32
2.68
4.19
4.10
5.12
4.60
3.87
ERGEBNISSE DER UMFRAGE
Die Studie zur Analyse der problematischen Konzepte beim
Programmieren Lernen wurde aus Daten erstellt die aus Umfragen unter Studierenden an der Alpen-Adria Universität
Klagenfurt und an der Technischen Universität München
entstanden sind. Die Daten welche für die Analyse bezüglich
den Lernbarrieren, die Lernende beim Programmieren im
Unterrichtsfach Informatik besitzen, kamen aus einer Umfrage unter Informatiklehrern, die im Zuge des Informatiklehrertags im März 2015 befragt wurden.
Teil auf.
[4]
1. Anzahl der Rückmeldungen von Studierenden
4.
METHODEN
In diesem Teil der Arbeit wird die Vorgehensweise der empirischen Untersuchung beschrieben. Weiters werden die
Formulierungsfragen nochmal ausführlich dargestellt. Es
findet sich darin auch zusätzlich die Begründung für die
Wahl der Forschungsmethode um die Vorgehensweise nachvollziehbar zu machen.
4.1
(a) Umfrage an der AAU: 24 Rückmeldungen
(b) Umfrage an der TUM: 5 Rückmeldungen
2. Informatiklehrerumfrage zu Lernbarrieren: 64 Rückmeldungen
Zielsetzung
Ziel der Untersuchung war es, wie weiter oben bereits aufgeführt, herauszufinden, welche Programmierkonzepte schwer
zu erlernen sind. Dafür wurden, sowohl an der Technischen Universität München als auch an der Alpen-Adria Universität Klagenfurt, Umfragen unter Studierenden durchgeführt, welche jeweils, entsprechend den Universitäten, die
Einführungslehrveranstaltung zur Programmierung besuchten
beziehungsweise besucht hatten. Zur zusätzlichen Analyse
liegen uns die jeweiligen Vorlesungsunterlagen vor und die
Daten werden auch entsprechend deren zeitlichen Behandlung in der Lehrveranstaltung und dem daraus folgenden
Komplexitätsgrad ausgewertet.
4.2
6. ANALYSE UND DISKUSSION
6.1 Inhaltsanalyse der Studierendendaten
Für die Analyse der Daten wurde ein qualitatives Auswertungsverfahren, besser gesagt die qualitative Inhaltsanalyse
nach Mayring, gewählt. Bei Verwendung dieses Verfahrens
werden keine starren Indikatoren festgelegt, sondern diese
ergeben sich erst während der Analyse der Daten. Dadurch
werden die Inhalte auf einer breiteren Ebene analysiert, als
dies bei einer quantitativen Vorgehensweise möglich ist. Da
sich Inhaltsanalyse jedoch ständig weiterentwickelt und ebenso
stark von der eigentlichen Fragestellung abhängt, spezifiziert
Mayring diese in sechs Kategorien.
Datenerhebung
Die Datenerhebung erfolgte mit Hilfe von Online-Umfragen.
Diese Methode erscheint für eine solche Erhebung am geeignetsten zu sein, da die Verteilung einfach über das Mailsystem der Universität durchgeführt werden konnte und mit
einer sehr großen Anzahl an Rückmeldungen zu rechnen
war. Zusätzlich sind die so entstandenen Daten bereits in
digitaler Form vorhanden und können daher ohne weitere
Bearbeitung, wie zum Beispiel einer aufwändigen Transkription, für die Analysen verwendet werden. Weiters können
die Teilnehmer einen für sie geeigneten Zeitpunkt für die
Beantwortung des Fragebogens wählen und sich dabei auch
ausreichend Zeit lassen. Unsere selbst durchgeführte Umfrage wurde über ein Onlineformular mit Hilfe von GoogleDocs erstellt und die Sammlung der Daten wurde ebenfalls
auf derselben Plattform aufbereitet. Jede Person die den
entsprechenden Link zu dieser Umfrage besaß, konnte ohne
weitere Registrierung beziehungsweise Bekanntgabe von persönlichen Daten daran teilnehmen, wodurch zusätzlich garantiert werden konnte, dass keine Rückschlüsse auf die Person anhand der eingegebenen Daten gemacht werden konnte.
[8]
1. Inhaltsanalyse hat Kommunikation zum Gegenstand
2. Inhaltsanalyse arbeitet mit Texten, Bildern, Noten,
also mit symbolischem Material, welches in einer fixierten Form darliegt
3. Die Inhaltsanalyse soll systematisch und frei von Interpretationen durchgeführt werden
4. Die Inhaltsanalyse hat nach expliziten Regeln abzulaufen. Dadurch ist eine Nachvollziehbarkeit und Überprüfbarkeit gewährleistet.
5. Das systematische Vorgehen zeigt sich darin, dass die
Analyse theoriegeleitet ist. Es geht nicht darum einen
Text zu referieren, sondern diesen mit einem theoretischen Hintergrund zu analysieren.
6. Sie will durch Aussagen über das analysierte Material
Rückschlüsse auf bestimmte Aspekte der Kommunikation ziehen.
Über die uns zur Verfügung gestellten Daten können keine
genauen Auskünfte zur Durchführung der Befragung gegeben
[6]
5
6.2
Inhaltsanalyse der Lehrendendaten
Die Daten der Lehrpersonen wurden nicht mit induktiv gewonnenen Kategorien codiert, sondern es wurden die 4 Unterteilungen der Lernbarrieren, die, wie oben im Kapitel über den
theoretischen Hintergrund vorgestellt, von Knud Ileris definiert
wurden, übernommen. Dementsprechend handelt es sich
dabei um eine deduktive Datenanalyse.
6.3
Figure 1: Verteilung der Kategorien in %
Verwendete Software
Die Umfragen waren alle so zusammengestellt worden, dass
alle Antworten als freier Text verfasst werden konnten. Um
somit eine Analyse durchführen zu können, mussten die Daten
zuvor codiert werden. Dazu wurde das Codier- und Analyseprogramm MaxQDA verwendet. [3]
6.4
Umfrage unter Studierenden
Figure 2: Absolute Verteilung der Kategorien
Wie bereits weiter oben erwähnt, wurden im Zuge dieser
Studie zwei Umfragen analysiert, um herauszufiltern, bei
welchen Konzepten der Programmierung Lernende Verständnisschwierigkeiten haben. Die erste Umfrage wurde in Form
eines Online-Fragebogens durchgeführt. Dieser ging hauptsächlich an Studierende der Alpen-Adria Universität Klagenfurt. Des weiteren kamen noch einige Antworten von
Studierenden der Technischen Universität München hinzu,
welche ebenfalls entsprechende Einführungslehrveranstaltungen für die Programmierung besucht hatten. Unsere eigene
durchgeführte Umfrage wurde nicht nur für diese Studie verwendet, sondern war auch Ausgangspunkt für eine weitere
Studie die sich mit einem ähnlichen Thema beschäftigte.
Daher bestand diese aus insgesamt drei Fragen, wobei für
unsere Fragestellung lediglich eine relevant war. Diese lautete
wie folgt:
Variablen und Zuweisungen
Diese Kategorie stellt einen Sammelbegriff für Antworten
dar, bei denen Probleme bezüglich dem Verständnis für das
Prinzip von Variablen als Behälter von Werten herauszulesen war. Die Schwierigkeit bezüglich diesem Konzept ist vor
allem, dass Variablen nicht nur absolute, fix zugeordnete
Werte enthalten können, sondern auch Referenzen auf andere Variablen, sprich Speicheradressen beinhalten können,
an welchen andere Variablen gespeichert sein können, diese
somit als Pointer genutzt werden. Aus diesem Grund wurde
diese Kategorie in die folgenden Unterkategorien aufgeteilt:
Was ist Ihnen besonders schwer gefallen?
Die Frage bezog sich im Kontext des Fragebogens auf Probleme die beim Programmieren Lernen aufgetreten sind. Für
die Analyse konnten von den 29 Antworten insgesamt 22
herangezogen werden, die sinngemäß beantwortet wurden.
Nach der Durchführung einer qualitativen Datenanalyse nach
Mayring konnten fünf Hauptkategorien festgestellt werden,
welche den Lernenden am häufigsten Schwierigkeiten bereitet haben. Diese sind:
1. Zusammenhang von Variablen und (33.3%, 2)
2. Pointer (66.7%, 4)
Table 3: Fünf Hauptkategorien der Auswertung
Kategorie
Variablen und Zuweisungen
Datenstrukturen
Kontrollstrukturen und Threads
Objektorientierung
Funktionen und Funktionsaufrufe
Andere
Summe
Anteil in %
19.4%
19.4%
12.9%
29.0%
6.4%
12.9%
100%
Die Aufteilung von Variablen und Zuweisungen, in diese Unterkategorien, sieht somit wie folgt aus:
Absoluter Anteil
6
6
4
9
2
4
31
Die Probleme mit Pointern machen also einen Gesamtanteil
von 12.9% der gesamten Umfrage aus, der Bereich Zusammenhänge von Variablen einen Anteil von 6.5%.
Datenstrukturen
In dieser Kategorie wurden Antworten zusammengefasst, welche sich auf komplexere Datenstrukturen beziehen. Die meisten Antworten die sich hier zuordnen ließen, handeln von
Schwierigkeiten mit dem Verstehen von Arrays und Listen.
Vor allem das Konzept von mehrdimensionalen Arrays stellt
hier die größte Hürde dar. Diese Kategorie teilt sich daher
wie folgt in die zwei Unterkategorien auf:
Die Anzahl der Nennungen dieser Kategorien verteilen sich
wie folgt über die Umfrage:
Diese fünf Hauptkategorien dienen als Überbegriffe und werden in weiterer Folge genauer beschrieben und wenn möglich
noch weiter in Unterkategorien aufgeteilt.
6
Figure 3: Aufteilung der Hauptkategorie Variablen
und Zuweisungen in ihre Unterkategorien
Figure 5: Aufteilung der Hauptkategorie Kontrollstrukturen und Threads in ihre Unterkategorien
1. Arrays (83.3%, 5)
und meistens sogar gleich waren, ist es nicht notwendig diese
Kategorie weiter zu unterteilen. Neben Antworten, bei denen der Umstieg auf die objektorientierte Programmierung
selbst als Hürde genannt wurde, waren es vor allem die Unterschiede zwischen Objekten und Klassen beziehungsweise
die Vererbung innerhalb von Klassen, die hier Probleme
bereiteten.
2. Listen (16.7%, 1)
Figure 4: Aufteilung der Hauptkategorie Datenstrukturen in ihre Unterkategorien
Funktionen und Funktionsaufrufe
Ein weiterer Bereich der genannt wurde, war das Konzept
von Funktionen und Prozeduren. Mit nur zwei Nennungen, also einem Anteil von 6.4%, bleibt dieser Bereich aber
deutlich hinter den anderen Kategorien. In den Antworten
wurde das Konstrukt von Funktionen selbst, als auch das
Anwenden von vorgefertigten und zur Verfügung gestellten
Funktionen, als Problem identifiziert.
Andere
Hier sind Antworten zusammengefasst, welche keiner der
oben genannten Kategorien zugeordnet werden konnten. Diese in eigene Kategorien aufzuteilen wäre hier jedoch nicht
sinnvoll, da für jeder der vier Antworten, welche hier hinfielen, ein eigener Problembereich notwendig wäre. So befinden
sich in dieser Kategorie beispielsweise Antworten, die auf
Probleme mit der Syntax der Programmiersprache oder auf
Schwierigkeiten mit der Entwicklungsumgebung zurückzuführen waren.
Das Konzept von Arrays macht daher, mit einem Anteil von
insgesamt 16.2% aller Problembeschreibungen, einen erheblichen Anteil aus und ist somit wohl eines der am schwersten zu verstehenden Konzepte für Programmieranfänger.
Kontrollstrukturen und Threads
Diese Kategorie liegt mit 12.9% an vierter Stelle. Hier ist
eine Unterteilung in die Unterkategorien Schleifen und Threads
sinnvoll, welche sich wie folgt aufteilt:
Vergleich mit ähnlichen Arbeiten
Vergleicht man die Ergebnisse der Analyse mit jenen, der
im Vorfeld vorgestellten ähnlichen Arbeiten, so kann man
viele Gemeinsamkeiten erkennen. Auch wenn die Namen der
Kategorien teilweise unterschiedliche Bezeichnungen haben,
so sind damit doch annähernd dieselben Konzepte gemeint.
Die Überschneidungen, der bei der Analyse identifizierten
fünf Hauptkategorien, mit den Konzepten der Studie von
Matthew Butler und Michael Morgan kann man folgend
deuten:
1. Schleifen (83.3%)
2. Threads (16.7%)
Obwohl die Kategorie Kontrollstrukturen heißt, wurden hier
ausschließlich Schleifen genannt. Verzweigungen wurden in
den Antworten kein einziges mal erwähnt. Bei den Antworten
bezüglich Threads, ist es vor allem die Parallelisierung derselbigen, die Probleme bereitet.
6.5
Umfrage unter Lehrer und Lehrerinnen
Nachdem die erste Auswertung aus den Daten einer Umfrage extrahiert wurde, welche sich direkt an Studierende
wandte, bezieht sich die zweite Analyse auf Daten einer Umfrage, die beim Informatiklehrertag in Bayern am 18. März
2015 durchgeführt wurde. An dieser Veranstaltung nahmen ca. 180 Informatik-Lehrer und Lehrerinnen teil, die an
Objektorientierung
Der Bereich, welcher in der Umfrage am häufigsten genannt
wurde, ist die Objektorientierung mit einem Gesamtanteil
von 29.0%. Da sich hier die meisten Antworten ähnelten
7
mieren kommt nur in der 10. Klasse vor”.
Die Schüler und Schülerinnen können sich offensichtlich nicht
damit identifizieren und sehen auch keinen richtigen Sinn
dahinter, wenn dieses Fach nur ein Jahr lang angeboten
wird. Da Lernende ja grundsätzlich an einer Weiter- und
Ausbildung interessiert sind, stehen diese generell auch dem
Lernen an sich nicht von Grund auf negativ gegenüber. Der
relative Anteil dieser beiden Barrieren macht zusammen nur
5,4% der ausgewerteten Daten aus.
Table 4: Gegenüberstellung der Konzepte der Analyse mit denen der Studie von Butler und Morgan
Konzept der Analyse
Variablen und Zuweisungen
Datenstrukturen
Kontrollstrukturen u. Threads
Objektorientierung
Funktionen
Andere
Konzept nach Butler und Morgan
Variablen
Arrays
Verzweigungen/Schleifen
OO Konzepte, OO Design
Funktionen
Algorithmen, Syntax, Testen
Anzumerken ist hier noch, dass die Gesamtanzahl der Codierungen höher ist, als die Anzahl der Antworten die für
diese Studie ausgewertet wurden, da einzelne Antworten umfangreicher verfasst worden sind und daher einzelne Teile
davon unterschiedlichen Lernbarrieren zugeordnet werden
konnten.
bayrischen Gymnasien unterrichten. Die Frage, mit welcher
sich dieses Paper aufgrund den Ergebnissen dieser Umfrage
im speziellen beschäftigt, handelt von Lernschwierigkeiten,
welche die Lehrenden bei den Schüler und Schülerinnen identifizieren konnten.
Für diese Studie konnten von den 64 Rückmeldungen insgesamt 51 Antworten verwendet und analysiert werden, die
entsprechend unserer Fragestellung sinngemäß beantwortet
wurden.
Wie im Abschnitt zum theoretischen Hintergrund, in welchem
die einzelnen Lernbarrieren nach Knud Ileris aufgelistet und
deren Definitionen genau beschrieben wurden, wurden für
die Inhaltsanalyse genau diese Kategorien verwendet.
Da sich die Lernbarrieren jedoch zum Teil sehr stark ähneln, beziehungsweise sich deren Symptome auch größtenteils überschneiden, lassen sich genaue Einteilungen anhand
vorliegender Daten ohne Rückfragen an die Teilnehmer und
Teilnehmerinnen nur sehr schwer vornehmen. Daher wurde
auch die Codierung, bei nicht eindeutiger Zuordenbarkeit,
fast ausschließlich anhand von Signalwörtern durchgeführt.
Daraus ergibt sich auch, dass zwei der Lernbarrieren einen
Großteil der Ergebnisse ausmachen.
Figure 7: Absolute Verteilung der Lerbarrieren
Fehllernen
Der Kategorie Fehllernen konnten hingegen die meisten Antworten zugeordnet werden. Somit scheint es ein sehr großes
Problem zu sein, dass die Lernenden das Programmieren
nicht so lernen, wie sich dies die Vortragenden vorstellen.
Eine häufige Antwort war, dass die Exaktheit beim Programmieren nicht gegeben sei, also dass mehrere Wege zum
selben Ziel führen können. Als Vergleich dazu, wurde mehrmals die Mathematik genannt, in welcher es meist nur einen
korrekten Lösungsweg für eine Aufgabe gibt. In der Programmierung kann jedoch zum Beispiel, jede Bezeichnung
von Variablen und Methoden beziehungsweise auch deren
Parameter und Rückgabewerte komplett frei gewählt werden, wodurch ohne das Verständnis für die Funktionsweise
und Verwendung von Methoden auch nicht die Vielfalt der
Programmierung und die Vorteile die damit einhergehen erkannt beziehungsweise in weiterer Folge verstanden und somit
auch angewendet werden kann.
Weiters wurde auch oft das Problem genannt, dass die Syntax nicht korrekt verstanden wird. Dies betrifft aber sowohl
einfache Syntaxregeln, wie zum Beispiel dass in Java jede
Anweisung mit einem ”;” (Strichpunkt) abgeschlossen werden muss, als auch die Unterscheidung zwischen einer Bedingungen und des entsprechend zutreffenden auszuführenden
Codes. Da jedoch die einfachsten Syntaxregeln die Grundvoraussetzung sind, auch für bereits einfachste Programme,
stellen spätere und somit komplexere Konzepte, wie oben
bereits erwähnt zum Beispiel Kontrollstukturen wie If-Abfragen, oft unüberwindbare Hürden dar.
Figure 6: Verteilung der Lernbarrieren in %
Abwehr gegen das Lernen und Widerstand gegen
das Lernen
Wie aus der Graphik ersichtlich ist, treffen die Barrieren Abwehr gegen das Lernen und Widerstand gegen das Lernen
am wenigsten oft zu. Überhaupt konnte nur eine einzige
Antwort, der Kategorie Widerstand gegen das Lernen zugeordnet werden. Die Antwort die dieser Lernbarriere zugeordnet werden konnte, ist dass der Lehrplan sehr dicht
gepackt sei.
Hier erkennt man genau, dass durch die Fülle der Stunden
die im Unterricht festgesetzt sind, die Schüler und Schülerinnen, mit der Zeit die Situation als inakzeptabel ansehen und
sich daher ein Widerstand entwickelt.
Als Beispiel für die Kategorie Abwehr gegen das Lernen
scheint folgende Aussage exemplarisch zu sein: ”Program8
hier noch zu untersuchen, ob die Konzepte auch bei einem
anderen Lernzugang die gleichen bleiben oder ob diese Hürden vielleicht teilweise auch durch die universitäre Unterrichtskultur entstehen.
Ein Zusammenhang zwischen dem Komplexitätsgrad der behandelten Konzepte, unter der Annahme, dass dieser mit
fortschreitendem Kurs höher wird, und etwaigen Problemen lässt sich nicht finden. Auffällig war jedoch, dass es
meist zwei Arten von Antworten gab. Nämlich solche in
welchen beinahe alle Konzepte genannt wurden, was darauf
schließen lässt, dass ein Versäumnis beim Verständnis für
grundlegende Konzepte, wie dies zum Beispiel ”Variablen
und Datenstrukturen” sind, spätere Konzepte, die darauf
aufbauen, ebenfalls nicht verstanden und somit als Problem
angesehen werden. Dies entspricht genau der, im zweiten
Teil der Studie festgehaltenen, Lernbarriere des Fehllernens,
also dass ein Versäumnis diese Barriere aus dem Weg zu räumen, ein immer größer werdendes Fehlverständnis für Programmierkonzepte mit sich bringt. Die zweite Art sind nur
ein bis drei Auflistungen von Konzepten die jedoch meist
alle aus dem späteren Teil der Kurse sind. Dies scheint darauf hinzudeuten, dass die grundlegenden Konzepte gut verstanden wurden und erst bei den komplexeren Teilgebieten
Probleme auftraten.
Table 5: Tabellarische Auswertung der Lernbarrieren
Lernbarriere
Abwehr gegen das Lernen
Ambivalenz
Fehllernen
Widerstand gegen das Lernen
Summe
Anteil in %
3,6%
46.4%
48.2%
1.8%
100%
Absoluter Anteil
1
26
27
2
59
Ambivalenz
Beinahe gleich groß war die Anzahl der Antworten die der
Kategorie Ambivalenz zugeordnet werden konnten. Hier ist
sehr häufig die fehlende Motivation erkennbar. Sehr viele
Antworten geben genau diesen Wortlaut wieder, dass zu
wenig Zeit für das Lernen eingeplant wird und daher auch die
Fortschritte beziehungsweise die Ergebnisse bei schriftlichen
Überprüfungen nicht zufriedenstellend sind, was einen weiteren Motivationsabfall zur Folge hat. Häufig kommt es beim
Erstellen von Programmen vor, dass diese nicht korrekt funktionieren. Vor allem im Schulbereich ist dies oft der Fall
weil ein kleiner Fehler vorhanden ist. Lexikalische und syntaktische Fehler werden noch häufig von der Entwicklungsumgebung gekennzeichnet, was selbstverständlich von der
verwendeten Software abhängig ist, die für die Erstellung des
Programm verwendet wird. Genau wie in einem Textverarbeitungsprogramm werden diese Fehler farblich markiert
beziehungsweise unterwellt und können daher einfach gefunden und ausgebessert werden. Andere Fehler jedoch, die
ebenfalls häufig gemacht werden, lassen das Programm zwar
korrekt starten, jedoch passiert dann während der Laufzeit
ein Fehler und die Entwicklungsumgebung bringt eine entsprechende Meldung. Diese Fehlermeldungen sind meist sehr
umfangreich und detailliert, um Programmierern so genaue
Hinweise wie nur möglich zu geben, wo und vor allem wodurch
der Fehler verursacht wurde. Jedoch gerade Programmieranfänger tun sich damit sehr schwer, da sie dann der Meinung sind, dass der entsprechende Fehler ebenso groß sein
muss. Hier fehlt wiederum das Interesse sich mit der Fehlermeldung zu beschäftigen und diese korrekt zu lesen beziehungsweise zu interpretieren. Hier reicht es nämlich bereits
oft aus, an die angegebene Stelle im Sourcecode zu gehen,
an welcher der Compiler die Übersetzung des Programms
nicht mehr durchführen konnte und dort nach dem Fehler
zu suchen.
7.
Des weiteren sollte man aber auch daran denken, dass die
hohen Misserfolgsraten der Einführungskurse ins Programmieren nicht nur von den fachlichen Hürden abhängen. Wie
der zweite Teil der Studie zeigt können es auch Lernbarrieren sein, welche einen richtigen Zugang zum Programmieren verhindern. Besonders das Fehllernen und die Ambivalenz stechen hier sehr deutlich heraus.
Danksagung
Die Autoren möchten sich gerne bei Peter Hubwieser für die
zur Verfügung gestellten Daten der Umfrage an der technischen Universität München und jene unter den Informatiklehrern bedanken, sowie für die hilfreiche Unterstützung.
8.
REFERENCES
[1] Formen des Alltagsbewußtseins. Campus Verlag, 1976.
[2] Geschlechtertrennung - Geschlechterdifferenz :
Suchbewegungen sozialen Lernens. Verlag neue
Gesellschaft, 1987.
[3] Maxqda homepage - http://www.maxqda.de, 2015.
[4] M. Butler and M. Morgan. Learning challenges faced
by novice programming students studying high level
and low feedback concepts. In Proceedings ascilite
Singapore 2007.
[5] K. Ileris. Lernen verstehen. Julius Klinkhardt Verlag,
2010.
[6] D. W. Langer. Die inhaltsanalyse als
datenerhebungsverfahren - www.soziologie.unihalle.de/langer/pdf/meth1/inhaltan.pdf - 2000,
2000.
[7] I. Nassi and B. Shneiderman. Flowchart techniques for
structured programming http://www.cs.umd.edu/hcil/members/bshneiderman/nsd/1973.
- datum: 13.06.2015, 1973.
[8] W. Oberdorfer. Umfrage zum programmieren http://bit.ly/1bcycjh, 2015.
ZUSAMMENFASSUNG
Nach der Analyse, der von uns gesammelten und zur Verfügung gestellten Daten, konnten wir fünf Hauptkategorien
herausfiltern, welche besondere Verständnishürden beim Programmieren Lernen darstellen. Die große Korrespondenz
der Ergebnisse mit den Ergebnissen der Studien von Sirkiä
beziehungsweise Butler und Morgen lässt darauf schließen,
dass diese Konzepte globale Verständnishürden darstellen,
bei welchen Programmieranfänger und -innen die meisten
Schwierigkeiten besitzen. Unterteilt man diese Konzepte,
wie es Butler und Morgen tun, in high-level und low-level
Programmierkompetenzen, so sind es vor allem die highlevel Konzepte wie Objektorientierung und Parallelisierung,
welche die größten Probleme bereiten, was sich somit auch
mit deren Schlussfolgerung deckt.
Da alle drei Studien mit Programmieranfängern und -innen
an Universitäten durchgeführt wurden, welche alle recht ähnlich aufgebaute Programmiereinstiegskurse besuchten, bleibt
9
[9] Oracle. 1.2 design goals of the javaTM programming
language http://www.oracle.com/technetwork/java/intro141325.html - datum: 10.06.2015,
1999.
[10] Pons. concipio:deutsch - http://de.pons.com/ - datum:
10.06.2015, 2015.
[11] T. Sirkiä. Recognizing programming misconceptions an analysis of the data collected from the uuhistle
program simulation tool. Master’s thesis, Aalto
University - School of Science - Degree Programme of
Computer Science and Engineering, 2012.
10