AuDoscore Automatic Grading of Java or Scala Homework

Größe: px
Ab Seite anzeigen:

Download "AuDoscore Automatic Grading of Java or Scala Homework"

Transkript

1 AuDoscore Automatic Grading of Java or Scala Homework Norbert Oster, Marius Kamp, Michael Philippsen Friedrich-Alexander University Erlangen-Nürnberg

2 Agenda Hintergrund und Motivation Ablauf der Bewertung mit AuDoscore Testfall-Erstellung aus Sicht des Dozenten Technische Umsetzung Erfahrungen mit AuDoscore AuDoscore: Automatic Grading of Java or Scala Homework Norbert Oster, Marius Kamp, Michael Philippsen Folie 2

3 Hintergrund und Motivation Modul Algorithmen und Datenstrukturen (AuD) 300h (10 ECTS) ca. 25% davon Java-Hausaufgaben WS14/15 SS15 WS15/16 SS16 WS16/17 # Studierende # Prog.-Aufg # Java-Abgaben # Java-Dateien # LOC Modul Parallele und Funktionale Programmierung (PFP) 150h (5 ECTS) ca. 15% bzw. 10% Java-/Scala-Aufgaben bis zu 390 Abgaben (600 Scala-Dateien) pro Semester und viele weitere, ähnliche Veranstaltungen. AuDoscore: Automatic Grading of Java or Scala Homework Norbert Oster, Marius Kamp, Michael Philippsen Folie 3

4 Bewertung von Programmieraufgaben vor AuDoscore (1) EST: Exercise Submission Tool Studierende laden ihre Lösungen hoch AuDoscore: Automatic Grading of Java or Scala Homework Norbert Oster, Marius Kamp, Michael Philippsen Folie 4

5 Bewertung von Programmieraufgaben vor AuDoscore (2) EST: Exercise Submission Tool PDF-Dateien können mit Korrekturanmerkungen zurückgegeben werden Tutoren bewerten Lösungen manuell AuDoscore: Automatic Grading of Java or Scala Homework Norbert Oster, Marius Kamp, Michael Philippsen Folie 5

6 Bewertung von Programmieraufgaben vor AuDoscore (1) EST: Exercise Submission Tool Studierende können Feedback und Punktestand einsehen Vorteile: Nachteile: + intuitiv - Feedback erst deutlich nach Abgabefrist - manuelle Bewertung von Java-Dateien schwierig und aufwändig - Bewertungen ggf. inkonsistent ( unfair ) AuDoscore: Automatic Grading of Java or Scala Homework Norbert Oster, Marius Kamp, Michael Philippsen Folie 6

7 Hintergrund und Motivation möglichst leichtgewichtige Erweiterung von JUnit üblicher/gewohnter Testablauf für Dozenten und Studierende (Syntax, IDE, Ausführung, ) frühes Feedback an Studierende (während Bearbeitungsfrist!) leicht in EST integrierbar, aber auch unabhängig nutzbar AuDoscore: automatische Bewertung von Java-Hausaufgaben (öffentlich) ScExFuSS: Scala Exercise Functional Scoring System Fusion beider Projekte in Planung. nahezu identisch mit AuDoscore mit Scala-Unterstützung (noch nicht öffentlich) AuDoscore: Automatic Grading of Java or Scala Homework Norbert Oster, Marius Kamp, Michael Philippsen Folie 7

8 Agenda Hintergrund und Motivation Ablauf der Bewertung mit AuDoscore Testfall-Erstellung aus Sicht des Dozenten Technische Umsetzung Erfahrungen mit AuDoscore AuDoscore: Automatic Grading of Java or Scala Homework Norbert Oster, Marius Kamp, Michael Philippsen Folie 8

9 Ablauf der Bewertung mit AuDoscore Dozent erstellt PubTest SecTest überarbeitet Student erstellt, prüft überarbeitet PubTest Feedback testet lokal Lösung wird eingereicht testet online EST (stage 0-2) testet online EST (stage 3) Dozent! Vorab-Feedback:! Dozent erteilt prüft ergibt finales Ergebnis finales Ergebnis-Feedback Freigabe AuDoscore: Automatic Grading of Java or Scala Homework Norbert Oster, Marius Kamp, Michael Philippsen Folie 9

10 Agenda Hintergrund und Motivation Ablauf der Bewertung mit AuDoscore Testfall-Erstellung aus Sicht des Dozenten Technische Umsetzung Erfahrungen mit AuDoscore AuDoscore: Automatic Grading of Java or Scala Homework Norbert Oster, Marius Kamp, Michael Philippsen Folie 10

11 AuDoscore aktivieren Dozent erstellt Musterlösung und zwei Testfallklassen (Pub/Sec-Test) AuDoscore erweitert JUnit um zusätzliche Annotationen Beide Testfallklassen müssen beide JUnit-Rules enthalten: public class ZeichengeometriePublicTest Sammelt Informationen zu allen Testfällen und deren Ausführung public final PointsLogger pl = new public final static PointsSummary ps = new PointsSummary(); Erzeugt Zusammenfassung der finalen Bewertung AuDoscore: Automatic Grading of Java or Scala Homework Norbert Oster, Marius Kamp, Michael Philippsen Folie 11

12 Öffentliche und Geheime Testfallklasse (PubTest / SecTest) Öffentlicher Test deklariert Teilaufgaben = "erzeugezeichenflaeche", points = = "zeichnepunkt", points = = "zeichnelinie", points = = "zeichnepolygon", points = = "zeichnerechteck", points = = "zeichnekreis", points = 4) }) public class ZeichengeometriePublicTest { Absolute Punktzahl (reale Bewertung) Geheimer Test erhält nur eine public class ZeichengeometrieSecretTest { AuDoscore: Automatic Grading of Java or Scala Homework Norbert Oster, Marius Kamp, Michael Philippsen Folie 12

13 Einzelner Testfall (Bonus / Malus) = = "zeichnelinie", bonus = 42) public void testzeichnelinie Diagonale check() { : Punkte : keine Auswirkung typischer Einsatz: reguläre Funktionalität = 666) Relative Punktzahl = "zeichnelinie", malus = 666) public void test_check_if_invariant gives_student_cheating() { : keine Auswirkung : Punkte typischer Einsatz: Rekursion, Schnittstellen, Betrugsversuch AuDoscore: Automatic Grading of Java or Scala Homework Norbert Oster, Marius Kamp, Michael Philippsen Folie 13

14 Finale Bewertung bonus- / malus- Angaben sind relative Gewichte Vorteil: Ergänzen/Löschen von Testfällen einfach Finale Bewertung für einzelne Teilaufgabe ττ gemäß: ggggggggee ττ = max 0, pppppppppppp TTCCττ bbbbbbbbbb TTCCττ ffffffffffff TTCCττ bbbbbbbbbb mmmmmmmmmm EExx ττ. pppppppppppp (0.5) Beispiel: ττ EExx = "zeichnelinie", points = 11), = "zeichnelinie", bonus = = "zeichnelinie", bonus = = "zeichnelinie", bonus = = "zeichnelinie", bonus = = "zeichnelinie", malus = 6) ( ) (6) max 0, ( ) PPPPPPPPPPPP (0.5) AuDoscore: Automatic Grading of Java or Scala Homework Norbert Oster, Marius Kamp, Michael Philippsen Folie 14

15 Finale Bewertung Ansicht für Studierende Name der Testmethode oder wahlweise expliziter Kommentar AuDoscore: Automatic Grading of Java or Scala Homework Norbert Oster, Marius Kamp, Michael Philippsen Folie 15

16 Beschränkungen der API Szenario: Algorithmen oder Datenstrukturen selbst implementieren auch wenn schon in der API ähnlich vorhanden Beispiel: eigene Streutabelle Verhindert, dass Studierende java.util.hashmap "java.util.", "java.lang.math" "java.lang.math.pow" }) public class StreutabellePublicTest { Prüfung als Teil der gesamten Ausführungssteuerung über Linux-Shell-Skript: Suche im Output des javap-disassemblers AuDoscore: Automatic Grading of Java or Scala Homework Norbert Oster, Marius Kamp, Michael Philippsen Folie 16

17 Folgefehler verhindern Szenario: aufeinander aufbauende Methoden mit getrennten Testfällen Beispiel: QuickSort: Aufrufe: sort rruuuuuu partition rruuuuuu choosepivot rruuuuuu swap Code: Folgefehler! "QuickSort.swap", "QuickSort.choosePivot" }) public void test_partition { test_swap: test_ test_partition:? AuDoscore: Automatic Grading of Java or Scala Homework Norbert Oster, Marius Kamp, Michael Philippsen Folie 17

18 Agenda Hintergrund und Motivation Ablauf der Bewertung mit AuDoscore Testfall-Erstellung aus Sicht des Dozenten Technische Umsetzung Erfahrungen mit AuDoscore AuDoscore: Automatic Grading of Java or Scala Homework Norbert Oster, Marius Kamp, Michael Philippsen Folie 18

19 Technische Umsetzung: PointsLogger & PointsSummary AuDoscore ist Open Source: Intuitive Erweiterungen für JUnit: class PointsLogger extends TestWatcher { JUnit liefert Infos zu jedem Testfall: starting, failed, skipped, succeeded class PointsSummary extends ExternalResource { installiert SecurityManager ersetzt stdout/stderr erzeugt Ergebnisbericht JUnit informiert über gesamte Testsuite: before, apply, after AuDoscore: Automatic Grading of Java or Scala Homework Norbert Oster, Marius Kamp, Michael Philippsen Folie 19

20 nutzt com.sun.source.util aus JDK: ANNOT Operationen auf Abstrakten Syntax-Bäumen (AST) J_SRC class Stud. Lsg. (Original) ANNOT J_SRC class Musterlsg. (Dozent) MOD HelloWorld BODY MOD HelloWorld BODY public VAR_D METH_D METH_D public VAR_D METH_D METH_D a b swap partition _clean_x swap "QuickSort.swap", "QuickSort.choosePivot" }) public void test_partition { ANNOT MOD J_SRC class HelloWorld BODY SUT für Testfall (ohne Folgefehler) public VAR_D METH_D METH_D a _clean_x b swap partition AuDoscore: Automatic Grading of Java or Scala Homework Norbert Oster, Marius Kamp, Michael Philippsen Folie 20

21 AuDoscore für Scala-Code exakt wie für Java: import tester.annotations._ import Ex(exID = "Dijkstra.reachable", points = 2), new Ex(exID = "Dijkstra.shortest", points = "scala\\$app\\$\\$initcode")) class DijkstraTestEST extends JUnitWithPoints { Vererbt die Points-Rules (erspart explizite = = "Dijkstra.shortest", bonus = 1, comment = "Test shortest() with example from exercise def testshortestexample: Unit = { assertequals("shortest(reachable(g))(0) returns wrong result", Set((0,0),(1,3),(2,5),(3,3),(4,2)), shortest(reachable(g))(0).toset) } AuDoscore: Automatic Grading of Java or Scala Homework Norbert Oster, Marius Kamp, Michael Philippsen Folie 21

22 Agenda Hintergrund und Motivation Ablauf der Bewertung mit AuDoscore Testfall-Erstellung aus Sicht des Dozenten Technische Umsetzung Erfahrungen mit AuDoscore AuDoscore: Automatic Grading of Java or Scala Homework Norbert Oster, Marius Kamp, Michael Philippsen Folie 22

23 Erfahrungen mit AuDoscore - AuD in 5 Semestern automatisch bewertet: Java-LOC in Dateien ( Abgaben) WS14/15 SS15 WS15/16 SS16 WS16/17 # Studierende # Prog.-Aufg # Java-Abgaben # Java-Dateien # LOC # Pub/Sec-Tests 160/ / / / /804 # Test-Korrektur # manuelle Bew Manuelle Überprüfung auf Rekursion AuDoscore: Automatic Grading of Java or Scala Homework Norbert Oster, Marius Kamp, Michael Philippsen Folie 23

24 Erfahrungen mit AuDoscore Tipps & Tricks Überprüfung auf Rekursion: Vorgabe einer Call-Back -Methode, die von den Studierenden im Basisfall der Rekursion aufgerufen werden muss => Rekursionstiefe über Stacktrace im AuDoscore-Test prüfen Betrugsversuche: Studierende versuchen, die Erwartungen der Testfälle (PubTest) ohne echte Funktionalität zu erfüllen ( Mock!) => Anti-Cheat-Malus-Test notwendig z.b. Diversität der Rückgaben für verschiedene Eingaben zählen AuDoscore: Automatic Grading of Java or Scala Homework Norbert Oster, Marius Kamp, Michael Philippsen Folie 24

25 AuDoscore: Automatic Grading of Java or Scala Homework Norbert Oster, Marius Kamp, Michael Philippsen Folie 25

26 Zukunftspläne Berücksichtigung nicht-funktionaler Aspekte z.b. Codierrichtlinien Unterstützung weiterer (JVM-)Programmiersprachen Gezielte Unterstützung beim Test paralleler Programme Integration externer Bibliotheken Verfeinerung z.b. auf einzelne Klassen/Methoden AuDoscore: Automatic Grading of Java or Scala Homework Norbert Oster, Marius Kamp, Michael Philippsen Folie 26

27 Erfahrungen mit AuDoscore - PFP in 3 Semestern automatisch bewertet: Scala-LOC in 721 Dateien/Abgaben WS15/16 SS16 WS16/17 # Studierende # Prog.-Aufg # Scala-Abgaben # Scala-Dateien # LOC # Pub/Sec-Tests 24/21 15/54 15/54 # Test-Korrektur # manuelle Bew AuDoscore: Automatic Grading of Java or Scala Homework Norbert Oster, Marius Kamp, Michael Philippsen Folie 27

Testgetriebene Entwicklung mit JUnit4

Testgetriebene Entwicklung mit JUnit4 Testgetriebene Entwicklung mit JUnit4 Seminarvortrag im Fach Fortgeschrittenes Programmieren in Java, Dozent: Prof. Klinker Datum: 30.04.2010 Referent: Marius Schmeding Ausgangsfragen... Wie testet man

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

Systematisches Testen der Funktionalität von Softwaresystemen. 17. Juni 2015

Systematisches Testen der Funktionalität von Softwaresystemen. 17. Juni 2015 Systematisches Testen der Funktionalität von Softwaresystemen 17. Juni 2015 Überblick Semantische Qualität von Software Teststrategien und prinzipien Testgetriebene Softwareentwicklung Welche Arten von

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 01 Organisatorisches Clemens Lang T2 27. April 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/15 Über mich... Wer bin ich? Name Clemens Lang E-Mail [email protected]

Mehr

7. Klassenmethoden Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

7. Klassenmethoden Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi 7. Klassenmethoden Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi 1 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Einführung

Mehr

Einführung in die Informatik Tools

Einführung in die Informatik Tools Einführung in die Informatik Tools Werkzeuge zur Erstellung von Softwareprojekten Wolfram Burgard 8.1 Motivation Große Softwareprojekte werden schnell unübersichtlich. Änderungen im Code können leicht

Mehr

Programmiertechnik II

Programmiertechnik II Modultests Ziele Überprüfung der Korrektheit eines Moduls Korrektheit: Übereinstimmung mit (informaler) Spezifikation Modul: kleine testbare Einheit (Funktion, Klasse) Engl.: unit test White box testing

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 13: Interfaces Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme 1. Teil: Interfaces Motivation Eigenschaften Besonderheiten Anonyme Klassen Lambda-Ausdrücke Praxis:

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Abstrakte Klassen und Methoden & Interfaces Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Vererbungshierarchie

Mehr

II.1.1. Erste Schritte - 1 -

II.1.1. Erste Schritte - 1 - 1. Grundelemente der Programmierung 2. Objekte, Klassen und Methoden 3. Rekursion und dynamische Datenstrukturen 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.1.1. Erste Schritte - 1 - 1.

Mehr

Java für C++ Programmierer

Java für C++ Programmierer Java für C++ Programmierer Alexander Bernauer [email protected] Einführung in die Übungen zu Informatik II (D ITET) FS2010 ETH Zürich Ziel Allgemeiner Überblick Kennenlernen der Suchbegriffe Warum Java?

Mehr

Systematisches Testen

Systematisches Testen Systematisches Testen SEP 136 Unit Testing Objektorientierte Entwicklung Entwicklung von vielen unabhängigen Einheiten (Klassen, Methoden), aus denen das Gesamtprogramm zusammengesetzt wird. Ziel: Wenn

Mehr

Themen der Übung. Methoden und Wrapperklassen. Vorteile von Methoden. Methoden. Grundlagen

Themen der Übung. Methoden und Wrapperklassen. Vorteile von Methoden. Methoden. Grundlagen Themen der Übung 1 Organisatorisches Methoden und Wrapperklassen 2 Methoden 3 Wrapper-Klassen CoMa-Übung IV TU Berlin 07.11.2012 Organisatorisches: Im Pool nur auf die Abgabeliste setzen, wenn ihr wirklich

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 1 15.03.2017 Objektorientierte Programmierung (Studiengang Medieninformatik) Form: Prüfung:

Mehr

Programmierkurs C++ Abstrakte Klassen und Methoden

Programmierkurs C++ Abstrakte Klassen und Methoden Programmierkurs C++ Abstrakte Klassen und Methoden Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Vererbungshierarchie Obst double

Mehr

Methoden und Wrapperklassen

Methoden und Wrapperklassen Methoden und Wrapperklassen CoMa-Übung IV TU Berlin 06.11.2012 CoMa-Übung IV (TU Berlin) Methoden und Wrapperklassen 06.11.2012 1 / 24 Themen der Übung 1 Methoden 2 Wrapper-Klassen CoMa-Übung IV (TU Berlin)

Mehr

4. Vererbung Die Klasse Object. Die Klasse Object

4. Vererbung Die Klasse Object. Die Klasse Object 4. Vererbung Die Klasse Object Die Klasse Object Alle Klassen ohne explizit deklarierte Superklasse haben die Klasse Object als Superklasse. Object gehört zum Paket java.lang. Object verfügt über einige

Mehr

Client-Server-Beziehungen

Client-Server-Beziehungen Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server

Mehr

Einführung in die Programmierung WS 2009/10. Übungsblatt 5: Typen, Variablen und einfache Methoden in Java

Einführung in die Programmierung WS 2009/10. Übungsblatt 5: Typen, Variablen und einfache Methoden in Java Ludwig-Maximilians-Universität München München, 20.11.2009 Institut für Informatik Prof. Dr. Christian Böhm Annahita Oswald, Bianca Wackersreuther Einführung in die Programmierung WS 2009/10 Übungsblatt

Mehr

11. Komponenten Grundlagen der Programmierung 1 (Java)

11. Komponenten Grundlagen der Programmierung 1 (Java) 11. Komponenten Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 10. Januar 2006 Einordnung im Kontext der Vorlesung

Mehr

Ersetzbarkeit und Verhalten

Ersetzbarkeit und Verhalten Ersetzbarkeit und Verhalten U ist Untertyp von T, wenn eine Instanz von U überall verwendbar ist, wo eine Instanz von T erwartet wird Struktur der Typen für Ersetzbarkeit nicht ausreichend Beispiel: void

Mehr

Mock-Objekte. Universität Karlsruhe (TH) Fakultät für Informatik Lehrstuhl für Programmiersysteme. Forschungsuniversität gegründet 1825

Mock-Objekte. Universität Karlsruhe (TH) Fakultät für Informatik Lehrstuhl für Programmiersysteme. Forschungsuniversität gegründet 1825 Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Mock-Objekte Verschiedene Testhelfer Ein Stummel (engl. stub) ist ein nur rudimentär implementierter Teil der Software und dient als Platzhalter

Mehr

Algorithmen und Programmierung II

Algorithmen und Programmierung II Algorithmen und Programmierung II Vererbung Prof. Dr. Margarita Esponda SS 2012 1 Imperative Grundbestandteile Parameterübergabe String-Klasse Array-Klasse Konzepte objektorientierter Programmierung Vererbung

Mehr

Algorithmen und Datenstrukturen II

Algorithmen und Datenstrukturen II Algorithmen und Datenstrukturen II in JAVA D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg Sommer 2009, 31. März 2009, c 2009 D.Rösner

Mehr

Property Based Testing

Property Based Testing Property Based Testing Nicolai Mainiero sidion Testen ist schwer Testen ist schwer Warum? Alle Pfade durch den Code aufzuzählen ist aufwendig. Selbst vermeintlich einfache Systeme können komplex sein.

Mehr

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0 9 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Wiederholung: Gerüstbeispiel Ein Duo, Quarto oder Sexto ist ein Gerüst. Die Klassen Duo, Quarto und Sexto sollen durch Vererbung

Mehr

Programmieren 2 Java Überblick

Programmieren 2 Java Überblick Programmieren 2 Java Überblick 1 Klassen und Objekte 2 Vererbung 4 Innere Klassen 5 Exceptions 6 Funktionsbibliothek 7 Datenstrukturen und Algorithmen 8 Ein-/Ausgabe 9 Graphische Benutzeroberflächen 10

Mehr

Konzepte der Programmiersprachen

Konzepte der Programmiersprachen Konzepte der Programmiersprachen Sommersemester 2010 4. Übungsblatt Besprechung am 9. Juli 2010 http://www.iste.uni-stuttgart.de/ps/lehre/ss2010/v_konzepte/ Aufgabe 4.1: Klassen in C ++ Das folgende C

Mehr

JUnit 4 Tutorial. Wolfgang Stöttinger

JUnit 4 Tutorial. Wolfgang Stöttinger JUnit 4 Tutorial Wolfgang Stöttinger JUnit 4 Tutorial... 1 1 Einführung in JUnit 4... 3 1.1 Wie funktioniert JUnit?... 3 1.2 Annotations... 3 1.2.1 Test Annotation... 3 1.2.2 Before Annotation... 3 1.2.3

Mehr

Programmieren in Python

Programmieren in Python 12. Unit-Testing Albert-Ludwigs-Universität Freiburg Handlungsplanungs-Praktikum Wintersemester 2010/2011 Wozu Unit-Testing? Autoritäre Antwort: Weil wir es im Praktikum von euch verlangen. Etwas bessere

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 18 Einstieg in die Informatik mit Java Klassenvariablen, Klassenmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 18 1 Klassenmethoden 2 Besonderheiten von Klassenmethoden

Mehr

Programmieren in Java -Eingangstest-

Programmieren in Java -Eingangstest- Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit

Mehr

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Java Kurs für Anfänger Einheit 4 Klassen und Objekte Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Vorlesung 10: Ein Interpreter für While Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1

Mehr

II.1.1. Erste Schritte - 1 -

II.1.1. Erste Schritte - 1 - ! 1. Grundelemente der Programmierung! 2. Objekte, Klassen und Methoden! 3. Rekursion und dynamische Datenstrukturen! 4. Erweiterung von Klassen und fortgeschrittene Konzepte II.1.1. Erste Schritte - 1

Mehr

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache 2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir

Mehr

Prof. Dr. Heinrich Müller. Informatik VII Universität Dortmund. http://ls7-www.cs.uni-dortmund.de. Organisatorisches zum Vorkurs Informatik

Prof. Dr. Heinrich Müller. Informatik VII Universität Dortmund. http://ls7-www.cs.uni-dortmund.de. Organisatorisches zum Vorkurs Informatik (UJlQ]HQGH)ROLHQ]XP 9RUNXUV,QIRUPDWLN Prof. Dr. Heinrich Müller Informatik VII Universität Dortmund http://ls7www.cs.unidortmund.de Informatik VII, Universität Dortmund Organisatorisches zum Vorkurs Informatik

Mehr

Java Einführung Abstrakte Klassen und Interfaces

Java Einführung Abstrakte Klassen und Interfaces Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer

Mehr

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe: Musterlösung Übung 7 Aufgabe 1 Sehen wir uns zu allererst das gegebene Forth Programm an: 0 3 new - list constant list1 list1 5 new - list constant list2 list1 6 new - list constant list3 list2 2 new -

Mehr

Klassenvariablen, Klassenmethoden

Klassenvariablen, Klassenmethoden Einstieg in die Informatik mit Java, Vorlesung vom 11.12.07 Übersicht 1 Klassenmethoden 2 Besonderheiten von Klassenmethoden 3 Aufruf einer Klassenmethode 4 Hauptprogrammparameter 5 Rekursion Klassenmethoden

Mehr

Java für Bauingenieure

Java für Bauingenieure 1 JAVA für Bauingenieure Alexander Karakas SS 2008 Objektorientierte Programmierung 30.04.2008, CIP Pool Objektorientierte Programmierung Übersicht 2 Klasse und Objekt Polymorphismus und Vererbung Klassen

Mehr

Programmierpraktikum

Programmierpraktikum TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Praktikum: Grundlagen der Programmierung Programmierpraktikum Woche 04 (17.11.2016) Stefan Berktold [email protected] PRÄSENZAUFGABEN Heutige Übersicht

Mehr

Das Test-Framework JUnit ETIS SS04

Das Test-Framework JUnit ETIS SS04 Das Test-Framework JUnit ETIS SS04 Gliederung Motivation TestFirst Grundlagen Assert TestCase Lebenszyklus TestCase UML-Diagramm TestCase TestSuite Zusammenfassung 2 Motivation (I) Kostspielige Folgen

Mehr

Die Scala Entwicklungsumgebung. L. Piepmeyer: Funktionale Programmierung - Die Scala Entwicklungsumgebung

Die Scala Entwicklungsumgebung. L. Piepmeyer: Funktionale Programmierung - Die Scala Entwicklungsumgebung Die Scala Entwicklungsumgebung 1 Was ist drin? Die Scala-Entwicklungsumgebung enthält Die Scala-Shell: scala Zwei Compiler: scalac und fsc (Fast Scala Compiler) Die API Die Laufzeitumgebung Den Scala-Basar

Mehr

Konzeption. und prototypische Implementierung. eines Werkzeuges. für den funktionalen Klassentest

Konzeption. und prototypische Implementierung. eines Werkzeuges. für den funktionalen Klassentest Konzeption und prototypische Implementierung eines Werkzeuges für den funktionalen Klassentest Übersicht Motivation Zielsetzung Lösungsansatz und dessen Realisierung Anwendungs-Szenarien Präsentation von

Mehr

Java Einführung Methoden. Kapitel 6

Java Einführung Methoden. Kapitel 6 Java Einführung Methoden Kapitel 6 Inhalt Deklaration und Aufruf von Methoden Lokale und globale Namen (Bezeichner) Sichtbarkeit und Lebensdauer von Variablen in Methoden Überladen von Methoden 2 Methoden

Mehr

TDD. mit JUnit & Mockito. Tobias Trelle, codecentric

TDD. mit JUnit & Mockito. Tobias Trelle, codecentric TDD mit JUnit & Mockito Tobias Trelle, codecentric AG @tobiastrelle 1 Tobias Trelle Software Architekt @ codecentric AG Twitter: @tobiastrelle Slideshare: http://de.slideshare.net/tobiastrelle/ GitHub:

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 13 Einstieg in die Informatik mit Java Schnittstellen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 13 1 Einführung 2 Definition einer Schnittstelle 3 Implementierung

Mehr

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 4

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 4 Fakultät Verkehrswissenschaften Friedrich List, Professur für Verkehrsbetriebslehre und Logistik Modul Entscheidungsunterstützung in der Logistik Einführung in die Programmierung mit C++ Übung 4 SS 2016

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

1. Abstrakte Klassen

1. Abstrakte Klassen 1. Abstrakte Klassen Lernziele 1. Abstrakte Klassen Lernziele: Das Konzept abstrakter Klassen und abstrakter Methoden kennen und verstehen, in der Lage sein, abstrakte Klassen und Methoden in Java zu formulieren,

Mehr

Inhaltsverzeichnis. Kurseinheit 1. Kurseinheit 2

Inhaltsverzeichnis. Kurseinheit 1. Kurseinheit 2 iii Inhaltsverzeichnis Kurseinheit 1 1 Von der Aufgabenstellung zum Programm... 1 1.1 Motivation... 1 1.2 Softwareentwicklung... 2 1.3 EXKURS: Unified Modeling Language (UML)... 4 2 Anforderungsanalyse...

Mehr

Unit Tests. Programmiermethodik. Eva Zangerle Universität Innsbruck

Unit Tests. Programmiermethodik. Eva Zangerle Universität Innsbruck Unit Tests Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle

Mehr

Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 13.06.07 G. Bohlender (IANM UNI Karlsruhe) Innere Klassen 13.06.07 1 / 11

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Speicherverwaltung und Parameterübergabe Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Gültigkeitsbereich von

Mehr

Java: Kapitel 1. Überblick. Programmentwicklung WS 2008/2009. Holger Röder Holger Röder

Java: Kapitel 1. Überblick. Programmentwicklung WS 2008/2009. Holger Röder Holger Röder Java: Kapitel 1 Überblick Programmentwicklung WS 2008/2009 Holger Röder [email protected] Was ist Java? Die Java-Technologie umfasst die Programmiersprache Java sowie die Java-Plattform

Mehr

Tutoraufgabe 1 (Listen):

Tutoraufgabe 1 (Listen): Prof. aa Dr. J. Giesl Programmierung WS16/17 F. Frohn, J. Hensel, D. Korzeniewski Allgemeine Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung (Tutorium) bearbeitet

Mehr

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz Kapitel 13 Abstrakte Methoden und Interfaces 13. Abstrakte Klassen und Interfaces 1. Abstrakte Klassen 2. Interfaces und Mehrfachvererbung Folie 12.2 Abstrakte Methoden und Klassen Manchmal macht es überhaupt

Mehr

Algorithmen und Datenstrukturen Tafelübung 1. Jens Wetzl 26. Oktober 2011

Algorithmen und Datenstrukturen Tafelübung 1. Jens Wetzl 26. Oktober 2011 Algorithmen und Datenstrukturen Tafelübung 1 Jens Wetzl 26. Oktober 2011 Folien Keine Garantie für Vollständigkeit und/oder Richtigkeit Keine offizielle Informationsquelle LS2-Webseite Abrufbar unter:

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 03 Vererbung, Polymorphie, Sichtbarkeit, Interfaces Clemens Lang T2 11. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/26 Klassen und Objekte Klassen und Objekte

Mehr

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren I Dr. Werner Struckmann 13. März 2017 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr Studiengang:

Mehr

ebusiness Übung 3a Spezifikation und Nutzung von Web-APIs (Services) Prof. Dr. Andreas Schmietendorf 1

ebusiness Übung 3a Spezifikation und Nutzung von Web-APIs (Services) Prof. Dr. Andreas Schmietendorf 1 ebusiness Übung 3a Spezifikation und Nutzung von Web-APIs (Services) 14.03.2017 Prof. Dr. Andreas Schmietendorf 1 Aufgabenstellung 14.03.2017 Prof. Dr. Andreas Schmietendorf 2 Ziele der Übung Spezifikation

Mehr

Markus Wichmann. Testen von Java Code mit. JUnit

Markus Wichmann. Testen von Java Code mit. JUnit Markus Wichmann Testen von Java Code mit JUnit Demotivation... Am Anfang war der Zeitdruck... Hilfe, ich habe doch keine Zeit zum Testen! Ich schreibe einfach keine Tests, dadurch werde ich schneller fertig

Mehr

Schwerpunkte. 10. Felder (Arrays) Grundprinzip von Arrays. Klassifikation von Typen in Programmiersprachen

Schwerpunkte. 10. Felder (Arrays) Grundprinzip von Arrays. Klassifikation von Typen in Programmiersprachen Schwerpunkte 10. Felder (Arrays) Teil 1 Java-Beispiele: Echo.java Primzahlen.java Monate.java Klassifikation von Typen in Programmiersprachen Array: einziger strukturierter Typ in Java Deklaration, Erzeugung

Mehr

Bibliotheks-basierte Virtualisierung

Bibliotheks-basierte Virtualisierung Dr.-Ing. Volkmar Sieh Department Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2015/2016 V. Sieh Bibliotheks-basierte Virtualisierung (WS15/16)

Mehr

To know recursion, you must first know recursion. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 17 1

To know recursion, you must first know recursion. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 17 1 To know recursion, you must first know recursion. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 17 1 Rekursion: Beispiele Bier trinken 8-Damen-Problem ipod Shuffle für alle Mitarbeiter Karten

Mehr

Modellgetriebene Entwicklung einer Eclipse RAP-Anwendung unter Verwendung des Eclipse Modeling Frameworks

Modellgetriebene Entwicklung einer Eclipse RAP-Anwendung unter Verwendung des Eclipse Modeling Frameworks Modellgetriebene Entwicklung einer Eclipse RAP-Anwendung unter Verwendung des Eclipse Modeling Frameworks AKWI 2015 Luzern Marco Richter ([email protected]) Melanie Vanderpuye ([email protected])

Mehr

Parallele und funktionale Programmierung Wintersemester 2015/ Übung Abgabe bis , 10:00 Uhr

Parallele und funktionale Programmierung Wintersemester 2015/ Übung Abgabe bis , 10:00 Uhr 3. Übung Abgabe bis 10.11.2015, 10:00 Uhr Aufgabe 3.1: Java-Synchronisation a) An welchen Stellen im Code kann das Schlüsselwort synchronized verwendet werden? b) Wie nennt sich die Synchronisations-Art,

Mehr

Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes

Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes Verschlüsseln eines Bildes Visuelle Kryptographie Anwendung von Zufallszahlen Wir wollen ein Bild an Alice und Bob schicken, so dass Alice allein keine Information über das Bild bekommt Bob allein keine

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

Kurzanleitung Eclipse

Kurzanleitung Eclipse Autor: Prof. Dr. Bernhard Humm, FB Informatik, FH Darmstadt Datum: 30. November 2005 1 Starten Für das Praktikum verwenden wir Eclipse Version 3.1 und JDK 1.5 Starten Eclipse: Doppelklick auf das Icon

Mehr

1 Klassen und Objekte

1 Klassen und Objekte 1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente

Mehr

Grundlagen der Informatik für Ingenieure I

Grundlagen der Informatik für Ingenieure I 2 Java: Java-Einführung 2 Java: Java-Einführung 2.1 Java-Entwicklungsgeschichte 2.2 Java Eigenschaften 2.3 Java-Entwicklungsumgebung 2.4 Application vs. Applet 2.5 Ein erstes Programm 2.1 2.1 Java - Entwicklungsgeschichte

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Programmierparadigmen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Programmiersprachen-Paradigmen Eine Programmiersprache

Mehr

Ursprünge. Die Syntax von Java. Das Wichtigste in Kürze. Konsequenzen. Weiteres Vorgehen. Rund um Java

Ursprünge. Die Syntax von Java. Das Wichtigste in Kürze. Konsequenzen. Weiteres Vorgehen. Rund um Java Ursprünge Die Syntax von Java Borland Software Corp 1995 Syntax: Pascal Objektorientierte Prorammierung optional Plattformen: Windows (Linux, Mac OS X) Sun Microsystems 1995 Syntax: C/C++ Objektorientiert

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 16 Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 16 1 Einführung 2 Element-Klassen 3 Lokale Klassen 4 Anonyme Klassen

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 41 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick: Vererbung 2 Grundidee Vererbung 3 Verdeckte Variablen

Mehr

Handbuch für die Erweiterbarkeit

Handbuch für die Erweiterbarkeit Handbuch für die Erweiterbarkeit Inhalt Pakete für die Erweiterbarkeit... 2 Actions... 2 Items... 2 Itemset... 2 Die UseCaseNewAction... 3 Eigene Shapes... 4 Der Shape Container... 5 User Objects... 6

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 22 Einstieg in die Informatik mit Java Generics Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Überblick Generics 2 Generische Klassen 3 Generische Methoden 4

Mehr

Groovy und CouchDB. Ein traumhaftes Paar. Thomas Westphal

Groovy und CouchDB. Ein traumhaftes Paar. Thomas Westphal Groovy und CouchDB Ein traumhaftes Paar Thomas Westphal 18.04.2011 Herzlich Willkommen Thomas Westphal Software Engineer @ adesso AG Projekte, Beratung, Schulung www.adesso.de [email protected]

Mehr

Einführung in die Programmierung 1

Einführung in die Programmierung 1 Einführung in die Programmierung 1 Einführung (S.2) Einrichten von Eclipse (S.4) Mein Erstes Programm (S.5) Hallo Welt!? Programm Der Mensch (S.11) Klassen (S.12) Einführung Wie Funktioniert Code? Geschriebener

Mehr

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18

Mehr

Die Klasse java.lang.object. Thorsten Treffer

Die Klasse java.lang.object. Thorsten Treffer Die Klasse java.lang.object Thorsten Treffer 6. Dezember 2003 1 java.lang.object Die Klassenhierarchie von Java kann als Baum aufgezeichnet werden, dessen Wurzel die Klasse Object ist. Mit anderen Worten:

Mehr

Objektorientierte Programmierung. Kapitel 14: Interfaces

Objektorientierte Programmierung. Kapitel 14: Interfaces 14. Interfaces 1/26 Objektorientierte Programmierung Kapitel 14: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2013/14 http://www.informatik.uni-halle.de/ brass/oop13/

Mehr

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000 Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000 A. Beschreibung der Projektarbeit. Welche Aufgabe haben Sie im Rahmen der Projektarbeit gelöst? 2. Mit welchen Tools bzw. Programmen (Anwendung,

Mehr

OOSE4 Testen mit BlueJ/JUnit 4

OOSE4 Testen mit BlueJ/JUnit 4 OOSE4 Testen mit BlueJ/JUnit 4 Lehrstuhl Softwaretechnologie, Dr. Birgit Demuth Sommersemester 2016 Vorgehen beim Unit-Test allgemein 1. Testfälle ausdenken / Testfalltabellen erstellen 2. Testfälle nach

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 10: Mehr zur Vererbung und abstrakte Klassen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Mehr zur Vererbung Methoden vererben und überschreiben

Mehr