diff --git a/Klausuren/Sd1/2016summer.failed/Exam/.gitignore b/Klausuren/Sd1/2016summer.failed/Exam/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..0f65e3ad793981d41fbc541f88a6dc777597c115
--- /dev/null
+++ b/Klausuren/Sd1/2016summer.failed/Exam/.gitignore
@@ -0,0 +1,5 @@
+/.classpath
+/.project
+/.settings
+/.A1.log
+/dependency-reduced-pom.xml
diff --git a/Klausuren/Sd1/2016summer.failed/Exam/pom.xml b/Klausuren/Sd1/2016summer.failed/Exam/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3dbf0a16474ad90f793d2a3952d284a89ab0e9f8
--- /dev/null
+++ b/Klausuren/Sd1/2016summer.failed/Exam/pom.xml
@@ -0,0 +1,65 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<groupId>de.hdm-stuttgart.sw1.klausur</groupId>
+	<artifactId>sw1_2016sommer_exam</artifactId>
+	<version>0.8</version>
+	<packaging>jar</packaging>
+
+	<name>sw1_2016sommer_exam</name>
+	<url>https://freedocs.mi.hdm-stuttgart.de</url>
+
+	<properties>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+	</properties>
+
+	<repositories>
+		<repository>
+			<id>hdm-mi-internal-maven-repo</id>
+			<url>https://maven.mi.hdm-stuttgart.de/artifacts</url>
+		</repository>
+	</repositories>
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>3.5.1</version>
+				<configuration>
+					<source>1.8</source>
+					<target>1.8</target>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+
+	<dependencies>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>4.12</version>
+			<scope>test</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.logging.log4j</groupId>
+			<artifactId>log4j-api</artifactId>
+			<version>2.1</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.logging.log4j</groupId>
+			<artifactId>log4j-core</artifactId>
+			<version>2.1</version>
+		</dependency>
+
+		<dependency>
+			<groupId>de.hdm_stuttgart.mi.exam</groupId>
+			<artifactId>unitmarking</artifactId>
+			<version>0.9</version>
+		</dependency>
+
+	</dependencies>
+</project>
diff --git a/Klausuren/Sd1/2016summer.failed/Exam/src/main/java/de/hdm_stuttgart/sw1/klausur/Helper.java b/Klausuren/Sd1/2016summer.failed/Exam/src/main/java/de/hdm_stuttgart/sw1/klausur/Helper.java
new file mode 100644
index 0000000000000000000000000000000000000000..9d9dea09024371d75fa750fd5fcd39d7682945e0
--- /dev/null
+++ b/Klausuren/Sd1/2016summer.failed/Exam/src/main/java/de/hdm_stuttgart/sw1/klausur/Helper.java
@@ -0,0 +1,91 @@
+package de.hdm_stuttgart.sw1.klausur;
+
+
+public class Helper {
+
+	/**
+	 * Gebe den größeren der beiden Werte zurück, mindestens aber 0. 
+	 * 
+	 * @param a Erster Wert
+	 * @param b Zweiter Wert
+	 * @return Den größeren der beiden Eingabewerte. Falls beide Werte kleiner als 0 sind, wird 0 zurückgegeben.
+	 */
+	static public int maxMindestensNull(final int a, final int b) {
+		return 123321; // TODO: Implementiere mich!
+	}
+
+	/**
+	 * Umkehrung der Reihenfolge aller durch einzelne Leerzeichen getrennten Worte eines Satzes. Beispiele:
+	 * 
+	 * <ol>
+	 *   <li><b>"Dies ist gut an der HdM"</b> wird zu <b>"HdM der gut ist Dies"</b></li>
+	 *   <li><b>"Ein Test"</b> wird zu <b>"Test Ein"</b></li>
+	 * </ol>
+	 * 
+	 * @param satz
+	 * 		Ein Satz aus Worten, welche durch einzelne Leerzeichen (" " bzw. ' ') voneinander getrennt sind.
+	 * @return
+	 *      Die Worte des Satzes in umgekehrter Reihenfolge.
+	 *      Ein null Wert oder eine leere Zeichenkette werden identisch zurückgegeben.
+	 *      
+	 * <p  style="color: red;font-weight: bold;">Tip: Nutzen Sie die Methode {@link String#split(String)} mit " " als Trennsymbol zur Zerlegung des Satzes in Worte.</p>
+	 */
+	static public String getUmgekehrteReihenfolge(final String satz) {
+	   return "csdfe";  // TODO: Implementiere mich!
+	}
+
+	/**
+	 * Erzwinge Großbuchstaben für den jeweils ersten Buchstaben aller Worte eines Satzes. Worte bestehen aus denjenigen char Zeichen,
+	 * für welche die Methode {@link Character#isLetterOrDigit(char)} wahr ist. Insbesondere dürfen Worte auch Ziffern enthalten.
+	 * Sonderzeichen sind hingegen ausgeschlossen und gelten als Worttrenner. Beispiele:
+	 * 
+	 * <ol>
+	 *   <li><b>"source Code kennt das Konzept des CamelCase"</b> wird zu <b>"Source Code Kennt Das Konzept Des CamelCase"</b></li>
+	 *   <li><b>"miles o'Brien"</b> wird zu <b>"Miles O'Brien"</b></li>
+	 *   <li><b>"Das Kunstwort just4all"</b> wird zu <b>"Das Kunstwort Just4all"</b></li>
+	 * </ol>
+	 * 
+	 * @param input Der Eingabesatz
+	 * @return Der potentiell umgewandelte Satz. Für die Eingabe null oder "" ändert sich nichts.
+	 * 
+	 * <p  style="color: red;font-weight: bold;">Tip: Nutzen Sie die Methode {@link String#toCharArray()} zur Zerlegung des Satzes in einzelne Zeichen.
+	 * Erzeugen Sie daraus das Ergebnis unter Verwendung von {@link Character#isLetterOrDigit(char)} und {@link Character#toUpperCase(char)}.</p>
+	 */
+	static public String capitalize(final String input) {
+	   return "gdrg";  // TODO: Implementiere mich!
+	}
+
+	/**
+	 * Funktionalität ähnlich zu {@link Integer#parseInt(String)}. Allerdings wird im Fall einer nicht umwandelbaren Eingabe
+	 *    das Werfen einer {@link NumberFormatException} durch Rückgabe des Werts 0 ersetzt. Beispiele:
+	 *
+	 *    <dl>
+	 *    	<dt>Normalfall: String repräsentiert eine Ganzzahl</dt>
+	 *      <dd>z.B. input == "42", Rückgabe 42 (int)</dd>
+	 *      
+	 *    	<dt>Ausnahmefall: String repräsentiert keine Ganzzahl</dt>
+	 *      <dd>z.B. input == "Geht nicht" oder input == null: Rückgabe 0</dd>
+	 *    </dl>
+	 * 
+	 * @param input Eine beliebige Zeichenkette oder null
+	 * @return 0, falls input == null ist oder input nicht in einen int Wert umgewandelt werden kann. Ansonsten den durch input
+	 *     festgelegten int Wert.
+	 *    
+	 *    <p  style="color: red;font-weight: bold;">Tip: Nutzen Sie die Methode {@link Integer#parseInt(String)} und behandeln Sie allfällige Ausnahmen.</p>
+	 */
+	static public int parseIntOhneAusnahme(final String input) {
+	   return 1312;  // TODO: Implementiere mich!		
+	}
+
+	/**
+	 * <p>Rotiere die Werte eines Feldes zyklisch nach "rechts". Der letzte Feldwert wird an den Anfang verschoben. Beispiel:</p>
+	 *  
+	 *  <p><b>{1, 2, 3, 4, 5, 6}</b> wird zu <b>{6, 1, 2, 3, 4, 5}</b> </p>
+	 *  
+	 * @param values Das zu verschiebende Feld aus Werten. Die Werte werden beim Aufruf zyklisch nach "rechts" verschoben. Falls
+	 *    das Feld null oder leer ist, erfolgt keine Aktion. 
+	 */
+	static public void zyklischRechtsRotieren(final int[] values) {
+	   // TODO: Implementiere mich!
+	}
+}
\ No newline at end of file
diff --git a/Klausuren/Sd1/2016summer.failed/Exam/src/main/java/de/hdm_stuttgart/sw1/klausur/angebot/Angebot.java b/Klausuren/Sd1/2016summer.failed/Exam/src/main/java/de/hdm_stuttgart/sw1/klausur/angebot/Angebot.java
new file mode 100644
index 0000000000000000000000000000000000000000..45fdc28676caf21a696018e5b4410795866556a0
--- /dev/null
+++ b/Klausuren/Sd1/2016summer.failed/Exam/src/main/java/de/hdm_stuttgart/sw1/klausur/angebot/Angebot.java
@@ -0,0 +1,81 @@
+package de.hdm_stuttgart.sw1.klausur.angebot;
+
+/**
+ * Erstellung von Angeboten für Dienstleistungen eines Handwerksbetriebs. Erfaßt werden:
+ * 
+ * <ul>
+ *   <li>Bodenverlegung in Räumen: Kosten für Boden und Fußleisten</li>
+ *   <li>Berücksichtigung der Anzahl von Anfahrtswegen</li>
+ * </ul>
+ * 
+ * <p>Im Hinblick auf den Kostenanteil für Anfahrtswege wird der Kilometerpreis über den Konstruktor
+ * des jeweiligen Angebots festgelegt.</p>
+ *
+ */
+public class Angebot {
+
+	/**
+	 * @param kostenProKilometer Kosten pro Kilometer Anfahrtsweg.
+	 */
+	public Angebot(int kostenProKilometer) {
+	   // TODO: Implementiere mich!
+	}
+	
+	/**
+	 * Kosten für die Bodenverlegung in einem einzelnen, rechteckigen Raum. Diese ergeben sich einerseits aus der Fläche des verlegten Bodens über den Preis pro Quadratmeter.
+	 * Andererseits bestimmt der Umfang des Raumes die Länge der benötigten Bodenleisten, welche über den Preis pro Meter zu den Kosten beiträgt. 
+	 * 
+	 * @param laenge Länge des Raums
+	 * @param breite Breite des Raums
+	 * @param preisProQuadratmeter Kosten des gewählten Bodens (Laminat, Parkett,...) pro Quadratmeter.
+	 * @param preisProMeter Kosten für die gewählte Art der Fußleiste pro Meter. Türaussparungen etc. werden vernachlässigt.
+	 * 
+	 * <p style="color: red;font-weight: bold;">Tip: Im Hinblick auf die Ausgabe der Angebotsdetails in {@link #getAngebotDetails()} können Sie alle benötigten Informationen
+	 * in einer {@link StringBuffer} Instanzvariablen sammeln. Sinngemäß gilt dies auch für die Gesamtkosten.</p>
+	 */
+	public void addiereRaum(int laenge, int breite, int preisProQuadratmeter, int preisProMeter) {
+	   // TODO: Implementiere mich!
+	}
+	
+	/**
+	 * Kosten für eine oder mehrere Anfahrten. Der Preis pro Kilometer wird bereits im Konstruktor {@link #Angebot(int)} festgelegt.
+	 * 
+	 * @param anzahl Anzahl benötigter Anfahrten
+	 * @param kilometer Entfernung pro Anfahrt.
+	 * 
+	 * <p style="color: red;font-weight: bold;"> Tip: Im Hinblick auf die Ausgabe der Angebotsdetails in {@link #getAngebotDetails()} können Sie alle benötigten Informationen
+	 * in einer (weiteren) {@link StringBuffer} Instanzvariablen sammeln. Sinngemäß gilt dies auch für die Gesamtkosten.</p>
+	 */
+	public void addiereAnfahrt(int anzahl, int kilometer) {
+	   // TODO: Implementiere mich!
+	}
+	
+	/**
+	 * Die Kosten ergeben sich durch alle vorherigen Aufrufe von {@link #addiereRaum(int, int, int, int)} und {@link #addiereAnfahrt(int, int)} in Verbindung
+	 * mit dem im Konstruktor {@link #Angebot(int)} festgesetzten Kilometerpreis.
+	 * 
+	 * @return Kosten für Bodenverlegung und Anfahrt
+	 */
+	public int getGesamtKosten() {
+		return 4325;  // TODO: Implementiere mich!
+	}
+	
+	/**
+	 * Die Angebotsdetails ergeben sich durch alle vorherigen Aufrufe von {@link #addiereRaum(int, int, int, int)} und {@link #addiereAnfahrt(int, int)} in Verbindung
+	 * mit dem im Konstruktor {@link #Angebot(int)} festgesetzten Kilometerpreis. Die Testapplikation {@link DummyAngebot#main(String[])} erzeugt eine typische Ausgabe:
+	 * 
+	 * <pre><code>Raum 2 x 4: 172€
+	 *Raum 3 x 5: 439€
+     *3 x  Anfahrt 44 Km: 264€
+     *Summe: 875€</code></pre>
+	 * 
+	 * @return Erläuternder Angebotstext zum Ausdrucken
+	 * 
+    * <p  style="color: red;font-weight: bold;">Tip: Für das korrekte Zusammenbasteln des Texts ist eine Veranlagung zum Erbsenzählen hilfreich:
+    * Bereits ein falsches Leerzeichen lässt alle Tests scheitern. Schauen Sie sich bei Fehlern die Ausgabe der Junit Tests <b>sehr genau</b> an.</p>
+    *  
+	 */
+	public String getAngebotDetails() {
+		return "cfdsfrew";  // TODO: Implementiere mich!
+	}
+}
\ No newline at end of file
diff --git a/Klausuren/Sd1/2016summer.failed/Exam/src/main/java/de/hdm_stuttgart/sw1/klausur/angebot/DummyAngebot.java b/Klausuren/Sd1/2016summer.failed/Exam/src/main/java/de/hdm_stuttgart/sw1/klausur/angebot/DummyAngebot.java
new file mode 100644
index 0000000000000000000000000000000000000000..f41c15c6c0ee575af87e912461288cc04ba370e2
--- /dev/null
+++ b/Klausuren/Sd1/2016summer.failed/Exam/src/main/java/de/hdm_stuttgart/sw1/klausur/angebot/DummyAngebot.java
@@ -0,0 +1,24 @@
+package de.hdm_stuttgart.sw1.klausur.angebot;
+
+/**
+ * Demo zur Verwendung der Klasse {@link Angebot}. Beachten Sie bitte die
+ * zugehörigen Junit Tests.
+ *
+ */
+public class DummyAngebot {
+
+	public static void main(String[] args) {
+		
+		final int preisProKilometer = 2;
+		
+		final Angebot angebot = new Angebot(preisProKilometer);
+		
+		angebot.addiereRaum(2, 4, 17, 3);
+		angebot.addiereRaum(3, 5, 25, 4);
+
+		angebot.addiereAnfahrt(3, 44);
+		
+		System.out.println(angebot.getAngebotDetails());
+	}
+
+}
diff --git a/Klausuren/Sd1/2016summer.failed/Exam/src/main/resources/log4j2.xml b/Klausuren/Sd1/2016summer.failed/Exam/src/main/resources/log4j2.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e4bd6e38899c495a0a6c363b44847059063a2e23
--- /dev/null
+++ b/Klausuren/Sd1/2016summer.failed/Exam/src/main/resources/log4j2.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration>
+    <Appenders>
+        <File name="A1" fileName="A1.log" append="false">
+            <PatternLayout pattern="%t %-5p %c{2} - %m%n"/>
+        </File>
+        <Console name="STDOUT" target="SYSTEM_OUT">
+            <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
+        </Console>
+    </Appenders>
+    <Loggers>
+
+        <!-- You my want to define class or package level per-logger rules -->
+        <Logger name="q.w.App" level="debug">
+            <AppenderRef ref="A1"/>
+        </Logger>
+        <Root level="info">
+            <AppenderRef ref="STDOUT"/>
+        </Root>
+    </Loggers>
+</Configuration>
\ No newline at end of file
diff --git a/Klausuren/Sd1/2016summer.failed/Exam/src/test/java/de/hdm_stuttgart/sw1/klausur/test/ShowReachedPoints.java b/Klausuren/Sd1/2016summer.failed/Exam/src/test/java/de/hdm_stuttgart/sw1/klausur/test/ShowReachedPoints.java
new file mode 100644
index 0000000000000000000000000000000000000000..8c0f20e8cd8f7f0ffa42888237ce180a8100cdbe
--- /dev/null
+++ b/Klausuren/Sd1/2016summer.failed/Exam/src/test/java/de/hdm_stuttgart/sw1/klausur/test/ShowReachedPoints.java
@@ -0,0 +1,15 @@
+package de.hdm_stuttgart.sw1.klausur.test;
+
+import de.hdm_stuttgart.mi.exam.unitmarking.RunTests;
+
+public class ShowReachedPoints {
+
+   /**
+    * Execution reveals the number of reached points.
+    * 
+    * @param args Unused
+    */
+   public static void main(String[] args) {
+      RunTests.exec(Test_Helper.class, Test_Angebot.class);
+   }
+}
diff --git a/Klausuren/Sd1/2016summer.failed/Exam/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_Angebot.java b/Klausuren/Sd1/2016summer.failed/Exam/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_Angebot.java
new file mode 100644
index 0000000000000000000000000000000000000000..49ca215087cfc19ae170f85a1680ed7b9c8d5033
--- /dev/null
+++ b/Klausuren/Sd1/2016summer.failed/Exam/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_Angebot.java
@@ -0,0 +1,135 @@
+package de.hdm_stuttgart.sw1.klausur.test;
+
+import org.junit.Assert;
+import org.junit.FixMethodOrder;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.DisableOnDebug;
+import org.junit.rules.TestRule;
+import org.junit.rules.Timeout;
+import org.junit.runners.MethodSorters;
+
+import de.hdm_stuttgart.mi.exam.unitmarking.Marking;
+import de.hdm_stuttgart.sw1.klausur.angebot.Angebot;
+
+@SuppressWarnings({ "javadoc" })
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+public class Test_Angebot {
+
+	// Kill test if tests last longer than 1000 milliseconds unless in debugging mode
+	@Rule
+	public final TestRule timeout = new DisableOnDebug(Timeout.millis(1000));
+
+	/**
+	 * Tests zu {@link Angebot#Angebot(int)} und {@link Angebot#getGesamtKosten()}
+	 */
+	@Test
+   @Marking(points=3)
+	public void test_200_konstruktorKosten() {
+		
+		final int preisProKilometer = 2;
+		final Angebot angebot = new Angebot(preisProKilometer);
+
+		final int anzahlFahrten = 3, kilometer = 5;
+		angebot.addiereAnfahrt(anzahlFahrten, kilometer);
+		
+		Assert.assertEquals(
+				anzahlFahrten * kilometer * preisProKilometer,
+				angebot.getGesamtKosten());
+	}
+
+	@Test
+   @Marking(points=3)
+	public void test_210_konstruktorDetails() {
+		
+		final int preisProKilometer = 2;
+		final Angebot angebot = new Angebot(preisProKilometer);
+
+		final int anzahlFahrten = 3, kilometer = 5;
+		angebot.addiereAnfahrt(anzahlFahrten, kilometer);
+		
+		Assert.assertEquals(
+				"3 x  Anfahrt 5 Km: 30€" + "\n" +
+                "Summe: 30€",
+                angebot.getAngebotDetails());
+	}
+
+	/**
+	 * Tests zu {@link Angebot#addiereRaum(int, int, int, int)}
+	 */
+	@Test
+   @Marking(points=4)
+	public void test_220_einRaumKosten() {
+
+		final Angebot angebot = new Angebot(12345);
+
+		final int laenge = 5, breite = 3, preisProQuadratmeter = 11, preisProMeter = 2;
+		angebot.addiereRaum(laenge, breite, preisProQuadratmeter, preisProMeter);
+
+		Assert.assertEquals(
+				laenge * breite * preisProQuadratmeter + 2 * preisProMeter * (laenge + breite),
+				angebot.getGesamtKosten());
+	}
+
+	@Test
+   @Marking(points=2)
+	public void test_230_einRaumDetails() {
+
+		final Angebot angebot = new Angebot(12345);
+
+		final int laenge = 5, breite = 3, preisProQuadratmeter = 11, preisProMeter = 2;
+		angebot.addiereRaum(laenge, breite, preisProQuadratmeter, preisProMeter);
+
+		Assert.assertEquals(
+				"Raum 5 x 3: 197€"+ "\n" +
+		        "Summe: 197€",
+		        angebot.getAngebotDetails());
+	}
+	
+	@Test
+   @Marking(points=6)
+	public void test_240_2RaeumeUndAnfahrtKosten() {
+
+		final int preisProKilometer = 1;
+		final Angebot angebot = new Angebot(preisProKilometer);
+
+		final int laenge1 = 5, breite1 = 3, preisProQuadratmeter1 = 17, preisProMeter1 = 3;
+		angebot.addiereRaum(laenge1, breite1, preisProQuadratmeter1, preisProMeter1);
+
+		final int laenge2 = 8, breite2 = 1, preisProQuadratmeter2 = 13, preisProMeter2 = 2;
+		angebot.addiereRaum(laenge2, breite2, preisProQuadratmeter2, preisProMeter2);
+
+		final int anzahlFahrten = 7, kilometer = 19;
+		angebot.addiereAnfahrt(anzahlFahrten, kilometer);
+		
+		Assert.assertEquals(
+				laenge1 * breite1 * preisProQuadratmeter1 + 2 * preisProMeter1 * (laenge1 + breite1) +
+				laenge2 * breite2 * preisProQuadratmeter2 + 2 * preisProMeter2 * (laenge2 + breite2) +
+				anzahlFahrten * kilometer * preisProKilometer,
+				angebot.getGesamtKosten());
+	}
+	
+	@Test
+   @Marking(points=2)
+	public void test_250_2RaeumeUndAnfahrtDetails() {
+
+		final int preisProKilometer = 1;
+		final Angebot angebot = new Angebot(preisProKilometer);
+
+		final int laenge1 = 5, breite1 = 3, preisProQuadratmeter1 = 17, preisProMeter1 = 3;
+		angebot.addiereRaum(laenge1, breite1, preisProQuadratmeter1, preisProMeter1);
+
+		final int laenge2 = 7, breite2 = 2, preisProQuadratmeter2 = 17, preisProMeter2 = 2;
+		angebot.addiereRaum(laenge2, breite2, preisProQuadratmeter2, preisProMeter2);
+
+		final int anzahlFahrten = 7, kilometer = 19;
+		angebot.addiereAnfahrt(anzahlFahrten, kilometer);
+		
+		Assert.assertEquals(
+				"Raum 5 x 3: 303€" + "\n" +
+                "Raum 7 x 2: 274€" + "\n" +
+			    "7 x  Anfahrt 19 Km: 133€" + "\n" +
+                "Summe: 710€",
+                angebot.getAngebotDetails());
+	}
+}
\ No newline at end of file
diff --git a/Klausuren/Sd1/2016summer.failed/Exam/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_Helper.java b/Klausuren/Sd1/2016summer.failed/Exam/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_Helper.java
new file mode 100644
index 0000000000000000000000000000000000000000..dc1ab0936f64743fad39daac3dc9e2bd868d9d4f
--- /dev/null
+++ b/Klausuren/Sd1/2016summer.failed/Exam/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_Helper.java
@@ -0,0 +1,202 @@
+package de.hdm_stuttgart.sw1.klausur.test;
+
+import org.junit.Assert;
+import org.junit.FixMethodOrder;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.DisableOnDebug;
+import org.junit.rules.TestRule;
+import org.junit.rules.Timeout;
+import org.junit.runners.MethodSorters;
+
+import de.hdm_stuttgart.mi.exam.unitmarking.Marking;
+import de.hdm_stuttgart.sw1.klausur.Helper;
+
+import static de.hdm_stuttgart.sw1.klausur.Helper.*;
+
+@SuppressWarnings({"javadoc"})
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+public class Test_Helper {
+
+	// Kill test if tests last longer than 1000 milliseconds unless in debugging mode
+	@Rule
+    public final TestRule timeout = new DisableOnDebug(Timeout.millis(1000));
+
+	/**
+	 * Tests zu {@link Helper#maxMindestensNull(int, int)}
+	 */
+	@Test
+	@Marking(points=3)
+	public void test_080_maxMindestensNull_positiv() {
+		Assert.assertEquals(3, maxMindestensNull(1, 3));
+		Assert.assertEquals(3, maxMindestensNull(3, 1));
+	}
+
+	@Test
+   @Marking(points=2)
+	public void test_090_maxMindestensNull_negativ() {
+		Assert.assertEquals(0, maxMindestensNull(-1, -3));
+		Assert.assertEquals(0, maxMindestensNull(-3, -1));
+	}
+
+	@Test
+   @Marking(points=2)
+	public void test_100_maxMindestensNull_gemischt() {
+		Assert.assertEquals(5, maxMindestensNull(-1, 5));
+		Assert.assertEquals(5, maxMindestensNull(5, -1));
+	}
+
+	@Test
+   @Marking(points=2)
+	public void test_100_maxMindestensNull_gemischt2() {
+		Assert.assertEquals(0, maxMindestensNull(-1, 0));
+		Assert.assertEquals(0, maxMindestensNull(0, -4));
+		Assert.assertEquals(0, maxMindestensNull(0, 0));
+	}
+
+	/**
+	 * Tests zu {@link Helper#getUmgekehrteReihenfolge(String)}
+	 */
+	@Test
+   @Marking(points=3)
+	public void test_110_getUmgekehrteReihenfolge () {
+		Assert.assertTrue("Test dieser ist Gut".equals(getUmgekehrteReihenfolge("Gut ist dieser Test")));
+	}
+
+	@Test
+   @Marking(points=2)
+	public void test_115_getUmgekehrteReihenfolge () {
+		Assert.assertTrue("Worte drei Nur".equals(getUmgekehrteReihenfolge("Nur drei Worte")));
+	}
+
+	@Test
+   @Marking(points=2)
+	public void test_120_getUmgekehrteReihenfolge () {
+		Assert.assertTrue("Test".equals(getUmgekehrteReihenfolge("Test")));
+	}
+
+	@Test
+   @Marking(points=2)
+	public void test_130_getUmgekehrteReihenfolge () {
+		Assert.assertEquals(null,  getUmgekehrteReihenfolge(null));
+	}
+
+	/**
+	 * Tests zu {@link Helper#capitalize(String)}
+	 */
+	@Test
+   @Marking(points=2)
+	public void test_150_capitalize () {
+		Assert.assertEquals("Source Code Kennt Das Konzept Des CamelCase", capitalize("source Code kennt das Konzept des CamelCase"));
+	}
+
+	@Test
+   @Marking(points=3)
+	public void test_155_capitalize () {
+		Assert.assertEquals("Miles O'Brien", capitalize("miles o'Brien"));
+	}
+
+	@Test
+   @Marking(points=2)
+	public void test_160_capitalize () {
+		Assert.assertEquals("Das Kunstwort Just4all", capitalize("Das Kunstwort just4all"));
+	}
+
+	@Test
+   @Marking(points=2)
+	public void test_165_capitalize () {
+		Assert.assertEquals("", capitalize(""));
+	}
+
+	@Test
+   @Marking(points=2)
+	public void test_167_capitalize () {
+		Assert.assertEquals(null, capitalize(null));
+	}
+
+	@Test
+   @Marking(points=2)
+	public void test_169_capitalize () {
+		Assert.assertEquals("A", capitalize("a"));
+		Assert.assertEquals("A", capitalize("A"));
+	}
+
+	@Test
+   @Marking(points=2)
+	public void test_172_capitalize () {
+		Assert.assertEquals(".", capitalize("."));
+		Assert.assertEquals("2", capitalize("2"));
+		Assert.assertEquals("4all", capitalize("4all"));
+	}
+
+	/**
+	 * Tests zu {@link Helper#parseIntOhneAusnahme(String)}
+	 */
+	@Test
+   @Marking(points=2)
+	public void test_180_parseIntOhneAusnahme_positiv () {
+		Assert.assertEquals(42, parseIntOhneAusnahme("42"));
+		Assert.assertEquals(-42, parseIntOhneAusnahme("-42"));
+	}
+
+	@Test
+   @Marking(points=3)
+	public void test_190_parseIntOhneAusnahme_negativ () {
+		Assert.assertEquals(0, parseIntOhneAusnahme("Geht nicht!"));
+		Assert.assertEquals(0, parseIntOhneAusnahme("4.3"));
+		Assert.assertEquals(0, parseIntOhneAusnahme(""));
+	}
+
+	@Test
+   @Marking(points=2)
+	public void test_200_parseIntOhneAusnahme_null () {
+		Assert.assertEquals(0, parseIntOhneAusnahme(null));
+	}
+
+	/**
+	 * Tests zu {@link Helper#zyklischRechtsRotieren(int[])}
+	 */
+	@Test
+   @Marking(points=1)
+	public void test_220_zyklischRechtsRotieren_null () {
+		final int[] in = new int[]{};
+		zyklischRechtsRotieren(in);
+		Assert.assertArrayEquals(new int[]{}, in);
+	}
+
+	@Test
+   @Marking(points=1)
+	public void test_230_zyklischRechtsRotieren_leer () {
+		final int[] in = new int[]{};
+		zyklischRechtsRotieren(in);
+		Assert.assertArrayEquals(new int[]{}, in);
+	}
+
+	@Test
+   @Marking(points=1)
+	public void test_240_zyklischRechtsRotieren_eins () {
+		final int[] in = new int[]{1};
+		zyklischRechtsRotieren(in);
+		Assert.assertArrayEquals(new int[]{1}, in);
+	}
+
+	@Test
+   @Marking(points=3)
+	public void test_250_zyklischRechtsRotieren_zwei () {
+		final int[] in = new int[]{7, 8},
+           expected = new int[]{8, 7};
+		zyklischRechtsRotieren(in);
+
+		Assert.assertArrayEquals(expected, in);
+	}
+
+	@Test
+   @Marking(points=4)
+	public void test_260_zyklischRechtsRotieren_sieben () {
+		final int[] in = new int[]{7, 6, 5, 4, 3, 2, 1},
+           expected = new int[]{1, 7, 6, 5, 4, 3, 2};
+		zyklischRechtsRotieren(in);
+
+		Assert.assertArrayEquals(expected, in);
+	}
+}
\ No newline at end of file
diff --git a/Klausuren/Sd1/2016summer.failed/Makefile b/Klausuren/Sd1/2016summer.failed/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..009cd0b7c67598d3d4307eaf88b2716ad357efe0
--- /dev/null
+++ b/Klausuren/Sd1/2016summer.failed/Makefile
@@ -0,0 +1,6 @@
+all:
+	tar c- Exam|tar -x -C /tmp
+	cd /tmp/Exam; mvn clean eclipse:clean
+	cd /tmp; rm -f exam.zip; zip -r exam.zip Exam
+	echo /tmp/exam.zip has been created
+#end
diff --git a/Klausuren/Sd1/2016summer.failed/Solution/.gitignore b/Klausuren/Sd1/2016summer.failed/Solution/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..0f65e3ad793981d41fbc541f88a6dc777597c115
--- /dev/null
+++ b/Klausuren/Sd1/2016summer.failed/Solution/.gitignore
@@ -0,0 +1,5 @@
+/.classpath
+/.project
+/.settings
+/.A1.log
+/dependency-reduced-pom.xml
diff --git a/Klausuren/Sd1/2016summer.failed/Solution/Doc/a.xhtml b/Klausuren/Sd1/2016summer.failed/Solution/Doc/a.xhtml
new file mode 100644
index 0000000000000000000000000000000000000000..f898bd4c38270354093a14a687cbad98f029d772
--- /dev/null
+++ b/Klausuren/Sd1/2016summer.failed/Solution/Doc/a.xhtml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html lang="de" xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <title>Helper Methoden</title>
+  </head>
+
+  <body><h2>Vorbereitung</h2><p>Entpacken Sie das oben sichtbare Archiv
+  <b>exam.zip</b> und importieren Sie den resultierenden Ordner
+  <code>Exam</code> als <span lang="en">Maven</span> Projekt in Ihren <span
+  lang="en">Eclipse Workspace</span>.</p><h2>Aufgabe</h2><p>Implementieren Sie
+  die in der Klasse <code>de.hdm_stuttgart.sw1.klausur.Helper</code> des
+  Eclipse Projekts vorbereiteten Dummy Methoden.</p><h2>Allgemeine
+  Hinweise</h2><ul>
+      <li><p>Die Javadoc Kommentare der jeweiligen Methoden beschreiben das
+      gewünschte Verhalten. Wählen Sie im Package Explorer die Projektwurzel
+      und generieren Sie die HTML Dokumentation über die Menüpunkte <code>Run
+      -&gt; Run As... -&gt; Maven build</code> mit dem Parameter
+      <code>javadoc:javadoc</code> im Eingabefeld „Goals:”. Die generierte
+      HTML Dokumentation wird im Unterordner <code>target/site/apidocs</code>
+      Ihres Projekts angelegt und kann durch einen Web Browser Ihrer Wahl
+      betrachtet werden.</p><p>Lesen Sie diese Dokumentation <b>sehr
+      genau</b>.</p><p>Bei einzelnen Methoden finden Sie rot markierte,
+      unverbindlicher Tips zur Implementierung. Sie können eine völlig andere
+      Strategie der Implementierung wählen, solange die zugehörigen JUnit
+      Tests erfolgreich sind.</p></li>
+
+      <li><p>Für jede Methode aus der Klasse
+      <code>de.hdm_stuttgart.sw1.klausur.Helper</code> stehen Ihnen in der
+      Testklasse <code>de.hdm_stuttgart.sw1.klausur.test.Test_Helper</code>
+      des Junit Test Zweigs <code>src/test/java</code> korrespondierende Tests
+      zur Verfügung. Nutzen Sie diese!</p><p>Die von Ihnen erreichte Punktzahl
+      richtet sich nach der Anzahl positiv bestandener Tests. Sie bekommen
+      keine Punkte für Tests, bei denen Ihre Implementierung „fast richtig“
+      ist. Implementieren Sie daher im Zweifelsfall weniger Methoden, diese
+      dafür aber vollständig.</p><p>Die Ausführung der Klasse
+      <code>de.hdm_stuttgart.sw1.klausur.test.ShowReachedPoints</code> liefert
+      Ihnen die Zahl der in dieser und anderen Programmieraufgaben insgesamt
+      erreichten und erreichbaren Punkte.</p></li>
+
+      <li><p>Beachten Sie alle beschriebenen Sonderfälle. Dazu zählen
+      insbesondere <code>null</code> Werte übergebener Variablen sowie
+      enthaltene <code>null</code> Werte in übergebenen Arrays.</p></li>
+
+      <li><p>Nutzen Sie den Debugger oder logging Statements im Fall
+      fehlgeschlagener Testfälle, falls Sie das zugrundeliegende Problem nicht
+      unmittelbar lösen können.</p></li>
+    </ul><h2 id="upload">Hochladen Ihrer Lösung in das
+  Klausursystem</h2><p>Exportieren Sie Ihre Implementierung dieser und
+  weiterer Programmieraufgaben per Rechtsklick im Package Explorer Ihres
+  Eclipse Projekts. Wählen Sie im Kontextmenü unter
+  »Export--&gt;General--&gt;Archive File« einen auf <code>.zip</code> endenden
+  Archivnamen. Exportieren Sie Ihr Projekt in dieses <code>.zip</code> Archiv
+  und laden Sie es in das Ilias Klausursystem hoch (unteres Seitenende) und
+  beachten Sie:</p><ul>
+      <li style="color: red;">Die hochgeladene .zip Datei muss im
+      Klausursystem sichtbar sein.</li>
+
+      <li style="color: red;">Reservieren Sie ausreichend Zeit vor Klausurende
+      für den Vorgang des Hochladens. Projekte, welche sich lediglich auf dem
+      Arbeitsplatzrechner befinden, werden nicht gewertet.</li>
+
+      <li style="color: red;">Laden Sie keine Projekte mit Java Syntaxfehlern
+      hoch, diese werden nicht bewertet!</li>
+
+      <li style="color: red;">Exportieren Sie Ihr Projekt <b>nicht</b> als
+      „.tgz“, „.java“, „.tar.gz“ o.ä. Das Klausursystem akzeptiert nur Archive
+      mit der Endung „.zip“.</li>
+    </ul><p>Alternativ können Sie auch sofort nachfolgende Aufgaben bearbeiten
+  und diese gemeinsam mit der Lösung der aktuellen Aufgabe hochladen.
+  Nachfolgende Programmieraufgaben enthalten keine separate Möglichkeit zum
+  Hochladen.</p><p>Falls Sie mehrere Archive hochladen, wird nur das zuletzt
+  hochgeladene Archiv bewertet. Sie können hochgeladene Archive
+  löschen.</p></body>
+</html>
diff --git a/Klausuren/Sd1/2016summer.failed/Solution/Doc/b.xhtml b/Klausuren/Sd1/2016summer.failed/Solution/Doc/b.xhtml
new file mode 100644
index 0000000000000000000000000000000000000000..67acf2b2f279a0cc3a1224f4b8344bebddcf773a
--- /dev/null
+++ b/Klausuren/Sd1/2016summer.failed/Solution/Doc/b.xhtml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html lang="de" xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <title>Angebotserstellung Handwerksbetrieb</title>
+  </head>
+
+  <body><h2>Hinweis zur Bewertung</h2><p>Diese Aufgabe erbringt im Vergleich
+  zur ihrer Schwierigkeit eine geringere Punktzahl als die Aufgabe „Helper
+  Methoden”.</p><h2>Beschreibung</h2><p>Ein Bodenleger benötigt eine Software
+  zur Erstellung von Angeboten. Die Logik soll in einer einzelnen Klasse
+  implementiert werden.</p><h2>Vorbereitung</h2><p>Sollten Sie die Aufgabe
+  „Helper Methoden” nicht bearbeitet haben, so lesen Sie bitte die dortige
+  Anleitung zum Eclipse Maven Projektimport und die zugehörigen allgemeinen
+  Hinweise. Ansonsten arbeiten Sie mit Ihrem Eclipse Maven Projekt
+  weiter.</p><h2>Erläuterung</h2><p>Zur Angebotserstellung benötigt ein
+  Bodenleger folgende Angaben:</p><ol>
+      <li>Länge und Breite der zu verlegenden Räume. Die Materialkosten
+      ergeben sich über den Quadratmeterpreis des verwendeten Bodenmaterials
+      sowie über den Meterpreis der für Rand des jeweiligen Raums benötigten
+      Sockelleisten.</li>
+
+      <li>Die Kosten für Anfahrten ergeben sich aus der Entfernung, der Zahl
+      benötigter Anfahrten sowie dem Kilometerpreis.</li>
+    </ol><p>Die Aufgabenstellung ist stark vereinfacht:</p><ul>
+      <li>Räume werden als rechteckig angenommen.</li>
+
+      <li>Türaussparungen bleiben bei der Berechnung der Fläche und der
+      benötigten Sockelleisten unberücksichtigt</li>
+
+      <li>Alle Angaben für Längen und Kosten erfolgen ganzzahlig.</li>
+    </ul><h2>Aufgabe</h2><p>Vervollständigen Sie die Implementierung der
+  Klasse <code>de.hdm_stuttgart.sw1.klausur.angebot.Angebot</code>. Die
+  Javadoc Kommentare präzisieren obige Erläuterungen.</p><h2>Allgemeine
+  Hinweise</h2><ul>
+      <li><p>Konvertieren Sie (soweit noch nicht geschehen) die Javadoc
+      Kommentare gemäß der Beschreibung in der Aufgabe „Helper Methoden” zur
+      besseren Ansicht im Browser in das Html Format.</p></li>
+
+      <li><p>Verwenden Sie die Testklasse
+      <code>de.hdm_stuttgart.sw1.klausur.test.Test_Angebot</code> des Junit
+      Test Zweigs <code>src/test/java</code> zur Prüfung der Vollständigkeit
+      und Korrektheit Ihrer Implementierung.</p></li>
+    </ul><h2>Hochladen Ihrer Lösung in das Klausursystem</h2><p>Laden Sie Ihre
+  Lösung in der Aufgabe „Helper Methoden” gemäß den dortigen Hinweisen hoch.
+  Falls Sie diese andere Aufgabe bereits bearbeitet haben, enthält Ihr Upload
+  beide Aufgaben.</p><p>Tragen Sie im unten stehenden Freitextfeld genau einen
+  der beiden Texte ein:</p><ol>
+      <li><b>Ich habe die aktuelle Aufgabe bearbeitet und erhoffe dafür
+      Punkte.</b></li>
+
+      <li><b>Ich habe die aktuelle Aufgabe nicht bearbeitet.</b></li>
+    </ol></body>
+</html>
diff --git a/Klausuren/Sd1/2016summer.failed/Solution/Doc/c.xhtml b/Klausuren/Sd1/2016summer.failed/Solution/Doc/c.xhtml
new file mode 100644
index 0000000000000000000000000000000000000000..9941043690f1d160a3202c63d8bd9ec90212b193
--- /dev/null
+++ b/Klausuren/Sd1/2016summer.failed/Solution/Doc/c.xhtml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
+<html xml:lang="de" xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <title></title>
+  </head>
+
+  <body><p>Wir betrachten folgende Klasse <code>Person</code>:</p><pre><code>package company;
+
+public class Person {
+   public void greeting(final String empfaenger) {
+      System.out.println("Grüß Dich, " + empfaenger + ", ich bin Dein Kollege");
+   }
+}</code></pre><p>Eine weitere Klasse <code>Manager</code> wird von
+  <code>Person</code> abgeleitet:</p><pre><code>package company;
+
+import company.helper.String;
+
+public class Manager extends Person {
+
+   // Ãœberschreibe greeting(String) aus der Basisklasse Person
+   public void greeting(final String empfaenger) { 
+      System.out.println("Grüß Dich, " + empfaenger + ", ich bin Dein Boss");
+   }
+}</code></pre><p>Ein Entwickler verwendet die <code>Manager</code>
+  Klasse:</p><pre><code>new Manager().greeting("Michael");</code></pre><p>Das
+  Ergebnis lautet:</p><pre><code>Grüß Dich, Michael, ich bin Dein Kollege</code></pre><p>Beantworten
+  Sie folgende Fragen:</p><ol>
+      <li><p>Wieso lautet die Ausgabe gemäß der in der <code>Manager</code>
+      Klasse überschriebenen Methode nicht wie folgt?</p><pre><code>Grüß Dich, Michael, ich bin Dein Boss</code></pre><p>Tip:
+      Beachten Sie die <code>import</code> Anweisungen.</p></li>
+
+      <li>Durch Verwendung welches auf dieses Problem zugeschnittenen Java
+      Sprachmittels hätte der Entwickler seinen Fehler zur Übersetzungszeit
+      erkennen können?</li>
+    </ol></body>
+</html>
diff --git a/Klausuren/Sd1/2016summer.failed/Solution/pom.xml b/Klausuren/Sd1/2016summer.failed/Solution/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..692da8cc5b2b83df388d81ef0a181b3719589a78
--- /dev/null
+++ b/Klausuren/Sd1/2016summer.failed/Solution/pom.xml
@@ -0,0 +1,65 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<groupId>de.hdm-stuttgart.sw1.klausur</groupId>
+	<artifactId>sw1_2016sommer_solve</artifactId>
+	<version>0.9</version>
+	<packaging>jar</packaging>
+
+	<name>sw1_2016summer_solve</name>
+	<url>https://freedocs.mi.hdm-stuttgart.de</url>
+
+	<properties>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+	</properties>
+
+	<repositories>
+		<repository>
+			<id>hdm-mi-internal-maven-repo</id>
+			<url>https://maven.mi.hdm-stuttgart.de/artifacts</url>
+		</repository>
+	</repositories>
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>3.5.1</version>
+				<configuration>
+					<source>1.8</source>
+					<target>1.8</target>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+
+	<dependencies>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>4.12</version>
+			<scope>test</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.logging.log4j</groupId>
+			<artifactId>log4j-api</artifactId>
+			<version>2.1</version>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.logging.log4j</groupId>
+			<artifactId>log4j-core</artifactId>
+			<version>2.1</version>
+		</dependency>
+
+		<dependency>
+			<groupId>de.hdm_stuttgart.mi.exam</groupId>
+			<artifactId>unitmarking</artifactId>
+			<version>0.9</version>
+		</dependency>
+
+	</dependencies>
+</project>
diff --git a/Klausuren/Sd1/2016summer.failed/Solution/src/main/java/de/hdm_stuttgart/sw1/klausur/Helper.java b/Klausuren/Sd1/2016summer.failed/Solution/src/main/java/de/hdm_stuttgart/sw1/klausur/Helper.java
new file mode 100644
index 0000000000000000000000000000000000000000..c67deee716cdbef0b7d1275d2c5809d162f55001
--- /dev/null
+++ b/Klausuren/Sd1/2016summer.failed/Solution/src/main/java/de/hdm_stuttgart/sw1/klausur/Helper.java
@@ -0,0 +1,132 @@
+package de.hdm_stuttgart.sw1.klausur;
+
+
+public class Helper {
+
+	/**
+	 * Gebe den größeren der beiden Werte zurück, mindestens aber 0. 
+	 * 
+	 * @param a Erster Wert
+	 * @param b Zweiter Wert
+	 * @return Den größeren der beiden Eingabewerte. Falls beide Werte kleiner als 0 sind, wird 0 zurückgegeben.
+	 */
+	static public int maxMindestensNull(final int a, final int b) {
+		return Math.max(0, Math.max(a, b));
+	}
+
+	/**
+	 * Umkehrung der Reihenfolge aller durch einzelne Leerzeichen getrennten Worte eines Satzes. Beispiele:
+	 * 
+	 * <ol>
+	 *   <li><b>"Dies ist gut an der HdM"</b> wird zu <b>"HdM der gut ist Dies"</b></li>
+	 *   <li><b>"Ein Test"</b> wird zu <b>"Test Ein"</b></li>
+	 * </ol>
+	 * 
+	 * @param satz
+	 * 		Ein Satz aus Worten, welche durch einzelne Leerzeichen (" " bzw. ' ') voneinander getrennt sind.
+	 * @return
+	 *      Die Worte des Satzes in umgekehrter Reihenfolge.
+	 *      Ein null Wert oder eine leere Zeichenkette werden identisch zurückgegeben.
+	 *      
+	 * <p  style="color: red;font-weight: bold;">Tip: Nutzen Sie die Methode {@link String#split(String)} mit " " als Trennsymbol zur Zerlegung des Satzes in Worte.</p>
+	 */
+	static public String getUmgekehrteReihenfolge(final String satz) {
+
+		if (null == satz) {
+			return null;
+		} else {
+			final String[] worte = satz.split(" ");
+			final StringBuffer umkehrung = new StringBuffer(worte[worte.length - 1]);
+			for (int i = worte.length - 2; 0 <=i; i--) {
+				umkehrung.append(' ').append(worte[i]);
+			}
+			return umkehrung.toString();
+		}
+	}
+
+	/**
+	 * Erzwinge Großbuchstaben für den jeweils ersten Buchstaben aller Worte eines Satzes. Worte bestehen aus denjenigen char Zeichen,
+	 * für welche die Methode {@link Character#isLetterOrDigit(char)} wahr ist. Insbesondere dürfen Worte auch Ziffern enthalten.
+	 * Sonderzeichen sind hingegen ausgeschlossen und gelten als Worttrenner. Beispiele:
+	 * 
+	 * <ol>
+	 *   <li><b>"source Code kennt das Konzept des CamelCase"</b> wird zu <b>"Source Code Kennt Das Konzept Des CamelCase"</b></li>
+	 *   <li><b>"miles o'Brien"</b> wird zu <b>"Miles O'Brien"</b></li>
+	 *   <li><b>"Das Kunstwort just4all"</b> wird zu <b>"Das Kunstwort Just4all"</b></li>
+	 * </ol>
+	 * 
+	 * @param input Der Eingabesatz
+	 * @return Der potentiell umgewandelte Satz. Für die Eingabe null oder "" ändert sich nichts.
+	 * 
+	 * <p  style="color: red;font-weight: bold;">Tip: Nutzen Sie die Methode {@link String#toCharArray()} zur Zerlegung des Satzes in einzelne Zeichen.
+	 * Erzeugen Sie daraus das Ergebnis unter Verwendung von {@link Character#isLetterOrDigit(char)} und {@link Character#toUpperCase(char)}.</p>
+	 */
+	static public String capitalize(final String input) {
+
+		if (null == input || 0 == input.length()) {
+			return input;
+		} else {
+			final char[] c = input.toCharArray();
+
+			final StringBuffer result = new StringBuffer();
+			result.append(Character.toUpperCase(c[0]));
+
+			for (int i = 1; i < c.length; i++) {
+				if (Character.isLetterOrDigit(c[i - 1])) {
+					result.append(c[i]);
+				} else {
+					result.append(Character.toUpperCase(c[i]));
+				}
+			}
+			return result.toString();
+		}
+	}
+
+	/**
+	 * Funktionalität ähnlich zu {@link Integer#parseInt(String)}. Allerdings wird im Fall einer nicht umwandelbaren Eingabe
+	 *    das Werfen einer {@link NumberFormatException} durch Rückgabe des Werts 0 ersetzt. Beispiele:
+	 *
+	 *    <dl>
+	 *    	<dt>Normalfall: String repräsentiert eine Ganzzahl</dt>
+	 *      <dd>z.B. input == "42", Rückgabe 42 (int)</dd>
+	 *      
+	 *    	<dt>Ausnahmefall: String repräsentiert keine Ganzzahl</dt>
+	 *      <dd>z.B. input == "Geht nicht" oder input == null: Rückgabe 0</dd>
+	 *    </dl>
+	 * 
+	 * @param input Eine beliebige Zeichenkette oder null
+	 * @return 0, falls input == null ist oder input nicht in einen int Wert umgewandelt werden kann. Ansonsten den durch input
+	 *     festgelegten int Wert.
+	 *    
+	 *    <p  style="color: red;font-weight: bold;">Tip: Nutzen Sie die Methode {@link Integer#parseInt(String)} und behandeln Sie allfällige Ausnahmen.</p>
+	 */
+	static public int parseIntOhneAusnahme(final String input) {
+		if (null == input) {
+			return 0;
+		} else {
+			try {
+				return Integer.parseInt(input);
+			} catch (final NumberFormatException e) {
+				return 0;
+			}
+		}
+	}
+
+	/**
+	 * <p>Rotiere die Werte eines Feldes zyklisch nach "rechts". Der letzte Feldwert wird an den Anfang verschoben. Beispiel:</p>
+	 *  
+	 *  <p><b>{1, 2, 3, 4, 5, 6}</b> wird zu <b>{6, 1, 2, 3, 4, 5}</b> </p>
+	 *  
+	 * @param values Das zu verschiebende Feld aus Werten. Die Werte werden beim Aufruf zyklisch nach "rechts" verschoben. Falls
+	 *    das Feld null oder leer ist, erfolgt keine Aktion. 
+	 */
+	static public void zyklischRechtsRotieren(final int[] values) {
+		if (null != values && 1 < values.length) { 
+			final int letzterWert = values[values.length - 1];
+			for (int i = values.length - 1; 0 < i; i--) {
+				values[i] = values[i - 1];
+			}
+			values[0] = letzterWert;
+		}
+	}
+}
\ No newline at end of file
diff --git a/Klausuren/Sd1/2016summer.failed/Solution/src/main/java/de/hdm_stuttgart/sw1/klausur/angebot/Angebot.java b/Klausuren/Sd1/2016summer.failed/Solution/src/main/java/de/hdm_stuttgart/sw1/klausur/angebot/Angebot.java
new file mode 100644
index 0000000000000000000000000000000000000000..9eaf386ffacaa33f2a65903f879f6fe61b9782f7
--- /dev/null
+++ b/Klausuren/Sd1/2016summer.failed/Solution/src/main/java/de/hdm_stuttgart/sw1/klausur/angebot/Angebot.java
@@ -0,0 +1,87 @@
+package de.hdm_stuttgart.sw1.klausur.angebot;
+
+/**
+ * Erstellung von Angeboten für Dienstleistungen eines Handwerksbetriebs. Erfaßt werden:
+ * 
+ * <ul>
+ *   <li>Bodenverlegung in Räumen: Kosten für Boden und Fußleisten</li>
+ *   <li>Berücksichtigung der Anzahl von Anfahrtswegen</li>
+ * </ul>
+ * 
+ * <p>Im Hinblick auf den Kostenanteil für Anfahrtswege wird der Kilometerpreis über den Konstruktor
+ * des jeweiligen Angebots festgelegt.</p>
+ *
+ */
+public class Angebot {
+
+	private StringBuffer raeume = new StringBuffer(),
+			anfahrten = new StringBuffer();
+	
+	private final int kostenProKilometer;
+	private int gesamtKosten = 0;
+	
+	/**
+	 * @param kostenProKilometer Kosten pro Kilometer Anfahrtsweg.
+	 */
+	public Angebot(int kostenProKilometer) {
+		this.kostenProKilometer = kostenProKilometer;
+	}
+	
+	/**
+	 * Kosten für die Bodenverlegung in einem einzelnen, rechteckigen Raum. Diese ergeben sich einerseits aus der Fläche des verlegten Bodens über den Preis pro Quadratmeter.
+	 * Andererseits bestimmt der Umfang des Raumes die Länge der benötigten Bodenleisten, welche über den Preis pro Meter zu den Kosten beiträgt. 
+	 * 
+	 * @param laenge Länge des Raums
+	 * @param breite Breite des Raums
+	 * @param preisProQuadratmeter Kosten des gewählten Bodens (Laminat, Parkett,...) pro Quadratmeter.
+	 * @param preisProMeter Kosten für die gewählte Art der Fußleiste pro Meter. Türaussparungen etc. werden vernachlässigt.
+	 * 
+	 * <p style="color: red;font-weight: bold;">Tip: Im Hinblick auf die Ausgabe der Angebotsdetails in {@link #getAngebotDetails()} können Sie alle benötigten Informationen in einer {@link StringBuffer} 
+	 * Instanzvariablen sammeln. Sinngemäß gilt dies auch für die Gesamtkosten.</p>
+	 */
+	public void addiereRaum(int laenge, int breite, int preisProQuadratmeter, int preisProMeter) {
+		final int kosten = laenge * breite * preisProQuadratmeter + 2 * (laenge + breite) * preisProMeter;
+		raeume.append("Raum ").append(laenge).append(" x ").append(breite).append(": ").append(kosten).append("€\n");
+		gesamtKosten += kosten;
+	}
+	
+	/**
+	 * Kosten für eine oder mehrere Anfahrten. Der Preis pro Kilometer wird bereits im Konstruktor {@link #Angebot(int)} festgelegt.
+	 * 
+	 * @param anzahl Anzahl benötigter Anfahrten
+	 * @param kilometer Entfernung pro Anfahrt.
+	 * 
+	 * <p style="color: red;font-weight: bold;"> Tip: Im Hinblick auf die Ausgabe der Angebotsdetails in {@link #getAngebotDetails()} können Sie alle benötigten Informationen
+	 * in einer (weiteren) {@link StringBuffer} Instanzvariablen sammeln. Sinngemäß gilt dies auch für die Gesamtkosten.</p>
+	 */
+	public void addiereAnfahrt(int anzahl, int kilometer) {
+		final int kosten = anzahl * kilometer * kostenProKilometer; 
+		anfahrten.append(anzahl).append(" x ").append(" Anfahrt ").append(kilometer).append(" Km: ").append(kosten).append("€\n");
+		gesamtKosten += kosten;
+	}
+	
+	/**
+	 * Die Kosten ergeben sich durch alle vorherigen Aufrufe von {@link #addiereRaum(int, int, int, int)} und {@link #addiereAnfahrt(int, int)} in Verbindung
+	 * mit dem im Konstruktor {@link #Angebot(int)} festgesetzten Kilometerpreis.
+	 * 
+	 * @return Kosten für Bodenverlegung und Anfahrt
+	 */
+	public int getGesamtKosten() {
+		return gesamtKosten;
+	}
+	
+	/**
+	 * Die Angebotsdetails ergeben sich durch alle vorherigen Aufrufe von {@link #addiereRaum(int, int, int, int)} und {@link #addiereAnfahrt(int, int)} in Verbindung
+	 * mit dem im Konstruktor {@link #Angebot(int)} festgesetzten Kilometerpreis. Die Testapplikation {@link DummyAngebot#main(String[])} erzeugt eine typische Ausgabe:
+	 * 
+	 * <pre><code>Raum 2 x 4: 172€
+	 *Raum 3 x 5: 439€
+     *3 x  Anfahrt 44 Km: 264€
+     *Summe: 875€</code></pre>
+	 * 
+	 * @return Erläuternder Angebotstext zum Ausdrucken
+	 */
+	public String getAngebotDetails() {
+		return raeume.toString() + anfahrten.toString() + "Summe: " + gesamtKosten + "€";
+	}
+}
diff --git a/Klausuren/Sd1/2016summer.failed/Solution/src/main/java/de/hdm_stuttgart/sw1/klausur/angebot/DummyAngebot.java b/Klausuren/Sd1/2016summer.failed/Solution/src/main/java/de/hdm_stuttgart/sw1/klausur/angebot/DummyAngebot.java
new file mode 100644
index 0000000000000000000000000000000000000000..f41c15c6c0ee575af87e912461288cc04ba370e2
--- /dev/null
+++ b/Klausuren/Sd1/2016summer.failed/Solution/src/main/java/de/hdm_stuttgart/sw1/klausur/angebot/DummyAngebot.java
@@ -0,0 +1,24 @@
+package de.hdm_stuttgart.sw1.klausur.angebot;
+
+/**
+ * Demo zur Verwendung der Klasse {@link Angebot}. Beachten Sie bitte die
+ * zugehörigen Junit Tests.
+ *
+ */
+public class DummyAngebot {
+
+	public static void main(String[] args) {
+		
+		final int preisProKilometer = 2;
+		
+		final Angebot angebot = new Angebot(preisProKilometer);
+		
+		angebot.addiereRaum(2, 4, 17, 3);
+		angebot.addiereRaum(3, 5, 25, 4);
+
+		angebot.addiereAnfahrt(3, 44);
+		
+		System.out.println(angebot.getAngebotDetails());
+	}
+
+}
diff --git a/Klausuren/Sd1/2016summer.failed/Solution/src/main/resources/log4j2.xml b/Klausuren/Sd1/2016summer.failed/Solution/src/main/resources/log4j2.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e4bd6e38899c495a0a6c363b44847059063a2e23
--- /dev/null
+++ b/Klausuren/Sd1/2016summer.failed/Solution/src/main/resources/log4j2.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration>
+    <Appenders>
+        <File name="A1" fileName="A1.log" append="false">
+            <PatternLayout pattern="%t %-5p %c{2} - %m%n"/>
+        </File>
+        <Console name="STDOUT" target="SYSTEM_OUT">
+            <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
+        </Console>
+    </Appenders>
+    <Loggers>
+
+        <!-- You my want to define class or package level per-logger rules -->
+        <Logger name="q.w.App" level="debug">
+            <AppenderRef ref="A1"/>
+        </Logger>
+        <Root level="info">
+            <AppenderRef ref="STDOUT"/>
+        </Root>
+    </Loggers>
+</Configuration>
\ No newline at end of file
diff --git a/Klausuren/Sd1/2016summer.failed/Solution/src/test/java/de/hdm_stuttgart/sw1/klausur/test/ShowReachedPoints.java b/Klausuren/Sd1/2016summer.failed/Solution/src/test/java/de/hdm_stuttgart/sw1/klausur/test/ShowReachedPoints.java
new file mode 100644
index 0000000000000000000000000000000000000000..8c0f20e8cd8f7f0ffa42888237ce180a8100cdbe
--- /dev/null
+++ b/Klausuren/Sd1/2016summer.failed/Solution/src/test/java/de/hdm_stuttgart/sw1/klausur/test/ShowReachedPoints.java
@@ -0,0 +1,15 @@
+package de.hdm_stuttgart.sw1.klausur.test;
+
+import de.hdm_stuttgart.mi.exam.unitmarking.RunTests;
+
+public class ShowReachedPoints {
+
+   /**
+    * Execution reveals the number of reached points.
+    * 
+    * @param args Unused
+    */
+   public static void main(String[] args) {
+      RunTests.exec(Test_Helper.class, Test_Angebot.class);
+   }
+}
diff --git a/Klausuren/Sd1/2016summer.failed/Solution/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_Angebot.java b/Klausuren/Sd1/2016summer.failed/Solution/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_Angebot.java
new file mode 100644
index 0000000000000000000000000000000000000000..4f901e9abe427acdbd9191c0f144a6cbb242bf74
--- /dev/null
+++ b/Klausuren/Sd1/2016summer.failed/Solution/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_Angebot.java
@@ -0,0 +1,135 @@
+package de.hdm_stuttgart.sw1.klausur.test;
+
+import org.junit.Assert;
+import org.junit.FixMethodOrder;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.DisableOnDebug;
+import org.junit.rules.TestRule;
+import org.junit.rules.Timeout;
+import org.junit.runners.MethodSorters;
+
+import de.hdm_stuttgart.mi.exam.unitmarking.Marking;
+import de.hdm_stuttgart.sw1.klausur.angebot.Angebot;
+
+@SuppressWarnings({ "javadoc" })
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+public class Test_Angebot {
+
+	// Kill test if tests last longer than 1000 milliseconds unless in debugging mode
+	@Rule
+	public final TestRule timeout = new DisableOnDebug(Timeout.millis(1000));
+
+	/**
+	 * Tests zu {@link Angebot#Angebot(int)} und {@link Angebot#getGesamtKosten()}
+	 */
+	@Test
+   @Marking(points=3)
+	public void test_200_konstruktorKosten() {
+		
+		final int preisProKilometer = 2;
+		final Angebot angebot = new Angebot(preisProKilometer);
+
+		final int anzahlFahrten = 3, kilometer = 5;
+		angebot.addiereAnfahrt(anzahlFahrten, kilometer);
+		
+		Assert.assertEquals(
+				anzahlFahrten * kilometer * preisProKilometer,
+				angebot.getGesamtKosten());
+	}
+
+	@Test
+   @Marking(points=3)
+	public void test_210_konstruktorDetails() {
+		
+		final int preisProKilometer = 2;
+		final Angebot angebot = new Angebot(preisProKilometer);
+
+		final int anzahlFahrten = 3, kilometer = 5;
+		angebot.addiereAnfahrt(anzahlFahrten, kilometer);
+		
+		Assert.assertEquals(
+				"3 x  Anfahrt 5 Km: 30€" + "\n" +
+                "Summe: 30€",
+                angebot.getAngebotDetails());
+	}
+
+	/**
+	 * Tests zu {@link Angebot#addiereRaum(int, int, int, int)}
+	 */
+	@Test
+   @Marking(points=3)
+	public void test_220_einRaumKosten() {
+
+		final Angebot angebot = new Angebot(12345);
+
+		final int laenge = 5, breite = 3, preisProQuadratmeter = 11, preisProMeter = 2;
+		angebot.addiereRaum(laenge, breite, preisProQuadratmeter, preisProMeter);
+
+		Assert.assertEquals(
+				laenge * breite * preisProQuadratmeter + 2 * preisProMeter * (laenge + breite),
+				angebot.getGesamtKosten());
+	}
+
+	@Test
+   @Marking(points=3)
+	public void test_230_einRaumDetails() {
+
+		final Angebot angebot = new Angebot(12345);
+
+		final int laenge = 5, breite = 3, preisProQuadratmeter = 11, preisProMeter = 2;
+		angebot.addiereRaum(laenge, breite, preisProQuadratmeter, preisProMeter);
+
+		Assert.assertEquals(
+				"Raum 5 x 3: 197€"+ "\n" +
+		        "Summe: 197€",
+		        angebot.getAngebotDetails());
+	}
+	
+	@Test
+   @Marking(points=4)
+	public void test_240_2RaeumeUndAnfahrtKosten() {
+
+		final int preisProKilometer = 1;
+		final Angebot angebot = new Angebot(preisProKilometer);
+
+		final int laenge1 = 5, breite1 = 3, preisProQuadratmeter1 = 17, preisProMeter1 = 3;
+		angebot.addiereRaum(laenge1, breite1, preisProQuadratmeter1, preisProMeter1);
+
+		final int laenge2 = 8, breite2 = 1, preisProQuadratmeter2 = 13, preisProMeter2 = 2;
+		angebot.addiereRaum(laenge2, breite2, preisProQuadratmeter2, preisProMeter2);
+
+		final int anzahlFahrten = 7, kilometer = 19;
+		angebot.addiereAnfahrt(anzahlFahrten, kilometer);
+		
+		Assert.assertEquals(
+				laenge1 * breite1 * preisProQuadratmeter1 + 2 * preisProMeter1 * (laenge1 + breite1) +
+				laenge2 * breite2 * preisProQuadratmeter2 + 2 * preisProMeter2 * (laenge2 + breite2) +
+				anzahlFahrten * kilometer * preisProKilometer,
+				angebot.getGesamtKosten());
+	}
+	
+	@Test
+   @Marking(points=4)
+	public void test_250_2RaeumeUndAnfahrtDetails() {
+
+		final int preisProKilometer = 1;
+		final Angebot angebot = new Angebot(preisProKilometer);
+
+		final int laenge1 = 5, breite1 = 3, preisProQuadratmeter1 = 17, preisProMeter1 = 3;
+		angebot.addiereRaum(laenge1, breite1, preisProQuadratmeter1, preisProMeter1);
+
+		final int laenge2 = 7, breite2 = 2, preisProQuadratmeter2 = 17, preisProMeter2 = 2;
+		angebot.addiereRaum(laenge2, breite2, preisProQuadratmeter2, preisProMeter2);
+
+		final int anzahlFahrten = 7, kilometer = 19;
+		angebot.addiereAnfahrt(anzahlFahrten, kilometer);
+		
+		Assert.assertEquals(
+				"Raum 5 x 3: 303€" + "\n" +
+                "Raum 7 x 2: 274€" + "\n" +
+			    "7 x  Anfahrt 19 Km: 133€" + "\n" +
+                "Summe: 710€",
+                angebot.getAngebotDetails());
+	}
+}
\ No newline at end of file
diff --git a/Klausuren/Sd1/2016summer.failed/Solution/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_Helper.java b/Klausuren/Sd1/2016summer.failed/Solution/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_Helper.java
new file mode 100644
index 0000000000000000000000000000000000000000..dc1ab0936f64743fad39daac3dc9e2bd868d9d4f
--- /dev/null
+++ b/Klausuren/Sd1/2016summer.failed/Solution/src/test/java/de/hdm_stuttgart/sw1/klausur/test/Test_Helper.java
@@ -0,0 +1,202 @@
+package de.hdm_stuttgart.sw1.klausur.test;
+
+import org.junit.Assert;
+import org.junit.FixMethodOrder;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.DisableOnDebug;
+import org.junit.rules.TestRule;
+import org.junit.rules.Timeout;
+import org.junit.runners.MethodSorters;
+
+import de.hdm_stuttgart.mi.exam.unitmarking.Marking;
+import de.hdm_stuttgart.sw1.klausur.Helper;
+
+import static de.hdm_stuttgart.sw1.klausur.Helper.*;
+
+@SuppressWarnings({"javadoc"})
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+public class Test_Helper {
+
+	// Kill test if tests last longer than 1000 milliseconds unless in debugging mode
+	@Rule
+    public final TestRule timeout = new DisableOnDebug(Timeout.millis(1000));
+
+	/**
+	 * Tests zu {@link Helper#maxMindestensNull(int, int)}
+	 */
+	@Test
+	@Marking(points=3)
+	public void test_080_maxMindestensNull_positiv() {
+		Assert.assertEquals(3, maxMindestensNull(1, 3));
+		Assert.assertEquals(3, maxMindestensNull(3, 1));
+	}
+
+	@Test
+   @Marking(points=2)
+	public void test_090_maxMindestensNull_negativ() {
+		Assert.assertEquals(0, maxMindestensNull(-1, -3));
+		Assert.assertEquals(0, maxMindestensNull(-3, -1));
+	}
+
+	@Test
+   @Marking(points=2)
+	public void test_100_maxMindestensNull_gemischt() {
+		Assert.assertEquals(5, maxMindestensNull(-1, 5));
+		Assert.assertEquals(5, maxMindestensNull(5, -1));
+	}
+
+	@Test
+   @Marking(points=2)
+	public void test_100_maxMindestensNull_gemischt2() {
+		Assert.assertEquals(0, maxMindestensNull(-1, 0));
+		Assert.assertEquals(0, maxMindestensNull(0, -4));
+		Assert.assertEquals(0, maxMindestensNull(0, 0));
+	}
+
+	/**
+	 * Tests zu {@link Helper#getUmgekehrteReihenfolge(String)}
+	 */
+	@Test
+   @Marking(points=3)
+	public void test_110_getUmgekehrteReihenfolge () {
+		Assert.assertTrue("Test dieser ist Gut".equals(getUmgekehrteReihenfolge("Gut ist dieser Test")));
+	}
+
+	@Test
+   @Marking(points=2)
+	public void test_115_getUmgekehrteReihenfolge () {
+		Assert.assertTrue("Worte drei Nur".equals(getUmgekehrteReihenfolge("Nur drei Worte")));
+	}
+
+	@Test
+   @Marking(points=2)
+	public void test_120_getUmgekehrteReihenfolge () {
+		Assert.assertTrue("Test".equals(getUmgekehrteReihenfolge("Test")));
+	}
+
+	@Test
+   @Marking(points=2)
+	public void test_130_getUmgekehrteReihenfolge () {
+		Assert.assertEquals(null,  getUmgekehrteReihenfolge(null));
+	}
+
+	/**
+	 * Tests zu {@link Helper#capitalize(String)}
+	 */
+	@Test
+   @Marking(points=2)
+	public void test_150_capitalize () {
+		Assert.assertEquals("Source Code Kennt Das Konzept Des CamelCase", capitalize("source Code kennt das Konzept des CamelCase"));
+	}
+
+	@Test
+   @Marking(points=3)
+	public void test_155_capitalize () {
+		Assert.assertEquals("Miles O'Brien", capitalize("miles o'Brien"));
+	}
+
+	@Test
+   @Marking(points=2)
+	public void test_160_capitalize () {
+		Assert.assertEquals("Das Kunstwort Just4all", capitalize("Das Kunstwort just4all"));
+	}
+
+	@Test
+   @Marking(points=2)
+	public void test_165_capitalize () {
+		Assert.assertEquals("", capitalize(""));
+	}
+
+	@Test
+   @Marking(points=2)
+	public void test_167_capitalize () {
+		Assert.assertEquals(null, capitalize(null));
+	}
+
+	@Test
+   @Marking(points=2)
+	public void test_169_capitalize () {
+		Assert.assertEquals("A", capitalize("a"));
+		Assert.assertEquals("A", capitalize("A"));
+	}
+
+	@Test
+   @Marking(points=2)
+	public void test_172_capitalize () {
+		Assert.assertEquals(".", capitalize("."));
+		Assert.assertEquals("2", capitalize("2"));
+		Assert.assertEquals("4all", capitalize("4all"));
+	}
+
+	/**
+	 * Tests zu {@link Helper#parseIntOhneAusnahme(String)}
+	 */
+	@Test
+   @Marking(points=2)
+	public void test_180_parseIntOhneAusnahme_positiv () {
+		Assert.assertEquals(42, parseIntOhneAusnahme("42"));
+		Assert.assertEquals(-42, parseIntOhneAusnahme("-42"));
+	}
+
+	@Test
+   @Marking(points=3)
+	public void test_190_parseIntOhneAusnahme_negativ () {
+		Assert.assertEquals(0, parseIntOhneAusnahme("Geht nicht!"));
+		Assert.assertEquals(0, parseIntOhneAusnahme("4.3"));
+		Assert.assertEquals(0, parseIntOhneAusnahme(""));
+	}
+
+	@Test
+   @Marking(points=2)
+	public void test_200_parseIntOhneAusnahme_null () {
+		Assert.assertEquals(0, parseIntOhneAusnahme(null));
+	}
+
+	/**
+	 * Tests zu {@link Helper#zyklischRechtsRotieren(int[])}
+	 */
+	@Test
+   @Marking(points=1)
+	public void test_220_zyklischRechtsRotieren_null () {
+		final int[] in = new int[]{};
+		zyklischRechtsRotieren(in);
+		Assert.assertArrayEquals(new int[]{}, in);
+	}
+
+	@Test
+   @Marking(points=1)
+	public void test_230_zyklischRechtsRotieren_leer () {
+		final int[] in = new int[]{};
+		zyklischRechtsRotieren(in);
+		Assert.assertArrayEquals(new int[]{}, in);
+	}
+
+	@Test
+   @Marking(points=1)
+	public void test_240_zyklischRechtsRotieren_eins () {
+		final int[] in = new int[]{1};
+		zyklischRechtsRotieren(in);
+		Assert.assertArrayEquals(new int[]{1}, in);
+	}
+
+	@Test
+   @Marking(points=3)
+	public void test_250_zyklischRechtsRotieren_zwei () {
+		final int[] in = new int[]{7, 8},
+           expected = new int[]{8, 7};
+		zyklischRechtsRotieren(in);
+
+		Assert.assertArrayEquals(expected, in);
+	}
+
+	@Test
+   @Marking(points=4)
+	public void test_260_zyklischRechtsRotieren_sieben () {
+		final int[] in = new int[]{7, 6, 5, 4, 3, 2, 1},
+           expected = new int[]{1, 7, 6, 5, 4, 3, 2};
+		zyklischRechtsRotieren(in);
+
+		Assert.assertArrayEquals(expected, in);
+	}
+}
\ No newline at end of file