diff --git a/part1/.classpath b/part1/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..145a6719a9e10a10e1655c85a25bba4df334717b
--- /dev/null
+++ b/part1/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/part1/.project b/part1/.project
new file mode 100644
index 0000000000000000000000000000000000000000..ec3ae6a60c3ffea57d99f6d4e9087413334bd9a0
--- /dev/null
+++ b/part1/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>part1</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/part1/.settings/org.eclipse.jdt.core.prefs b/part1/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000000000000000000000000000000000000..ec1937b3f30e922b06a79700ca21836dbf53bf2f
--- /dev/null
+++ b/part1/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.release=disabled
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/part1/bin/triangle/InvalidTriangleException.class b/part1/bin/triangle/InvalidTriangleException.class
new file mode 100644
index 0000000000000000000000000000000000000000..47f03a5e8bccb1509b8bcf20fe2faaac493da538
Binary files /dev/null and b/part1/bin/triangle/InvalidTriangleException.class differ
diff --git a/part1/bin/triangle/Main.class b/part1/bin/triangle/Main.class
new file mode 100644
index 0000000000000000000000000000000000000000..87a894aaafc16fd817312b5ea6e49664a1e5d039
Binary files /dev/null and b/part1/bin/triangle/Main.class differ
diff --git a/part1/bin/triangle/Triangle$TriangleType.class b/part1/bin/triangle/Triangle$TriangleType.class
new file mode 100644
index 0000000000000000000000000000000000000000..821990969f6f05a19c69fbc20db186a3f9ef906a
Binary files /dev/null and b/part1/bin/triangle/Triangle$TriangleType.class differ
diff --git a/part1/bin/triangle/Triangle.class b/part1/bin/triangle/Triangle.class
new file mode 100644
index 0000000000000000000000000000000000000000..1d98e0f4e605be48a4033adfa0218743551b6355
Binary files /dev/null and b/part1/bin/triangle/Triangle.class differ
diff --git a/part1/bin/triangle/TriangleTest.class b/part1/bin/triangle/TriangleTest.class
new file mode 100644
index 0000000000000000000000000000000000000000..1ff7d086e36d4dc5bbc665d2665475d97eb17956
Binary files /dev/null and b/part1/bin/triangle/TriangleTest.class differ
diff --git a/part1/src/triangle/InvalidTriangleException.java b/part1/src/triangle/InvalidTriangleException.java
new file mode 100644
index 0000000000000000000000000000000000000000..e4226af27dc0b4e587d9c6fa5bb88b5fd8dda0c2
--- /dev/null
+++ b/part1/src/triangle/InvalidTriangleException.java
@@ -0,0 +1,5 @@
+package triangle;
+
+public class InvalidTriangleException extends Exception {
+
+}
diff --git a/part1/src/triangle/Main.java b/part1/src/triangle/Main.java
new file mode 100644
index 0000000000000000000000000000000000000000..592aacfadd07267a112d2a15f38fcd9e584503c9
--- /dev/null
+++ b/part1/src/triangle/Main.java
@@ -0,0 +1,37 @@
+package triangle;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.Arrays;
+
+public class Main {
+
+	public static void main(String[] args) throws InvalidTriangleException {
+		System.out.print("Enter the triangle side lengths: ");
+		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+		final Triangle triangle = new Triangle();
+		try {
+			final String readLine = br.readLine();
+			System.out.println(readLine);
+			final String[] split = readLine.split("\\s+");
+			int[] intSides = new int[split.length];
+			int i = 0;
+			for (String string : split) {
+				try {
+					intSides[i++] = Integer.parseInt(string);
+				}catch(NumberFormatException e) {
+					System.err.println("invalid Input");
+				}
+			}
+			triangle.setSides(intSides);
+			System.out.println(triangle.getType());
+		} catch (InvalidTriangleException e) {
+			System.err.println("invalid triangle");
+		} catch (IOException e) {
+			System.err.println("could not read from stdin");
+		}
+
+	}
+
+}
diff --git a/part1/src/triangle/Triangle.java b/part1/src/triangle/Triangle.java
new file mode 100644
index 0000000000000000000000000000000000000000..2edd6fc41306b9a887cc6ab3b9f8e3c1210f31f3
--- /dev/null
+++ b/part1/src/triangle/Triangle.java
@@ -0,0 +1,63 @@
+package triangle;
+
+
+public class Triangle {
+
+	public enum TriangleType {
+		Isosceles, Equilateral, Scalene, NaT;
+
+		public String toString() {
+			return name();
+		};
+	}
+
+	private int[] sides;
+	
+	public TriangleType getType() throws InvalidTriangleException
+	{
+		TriangleType result = TriangleType.NaT;
+
+		if (sides.length != 3) {
+			//throw new InvalidTriangleException();
+			return result;
+		}
+		
+		if (sides[0] > sides[1])
+			swap(sides, 0, 1);
+
+		if (sides[0] > sides[2])
+			swap(sides, 0, 2);
+
+		if (sides[1] > sides[2])
+			swap(sides, 1, 2);
+		
+		if (sides[0] <= 0 || sides[2] - sides[0] >= sides[1]) {
+			throw new InvalidTriangleException();
+		}
+
+		if (sides[0] == sides[2]) {
+			result = TriangleType.Equilateral;
+		} else if (sides[0] == sides[1] || sides[1] == sides[2]) {
+			result = TriangleType.Isosceles;
+		} else {
+			result = TriangleType.Scalene;
+		}
+
+		return result;
+	}
+
+	private static void swap(int s[], int i, int j) {
+		int tmp = s[i];
+		s[i] = s[j];
+		s[j] = tmp;
+	}
+
+	public int[] getSides() {
+		return sides;
+	}
+
+	public void setSides(int[] sides) {
+		this.sides = sides;
+	}
+
+}
diff --git a/part1/src/triangle/TriangleTest.java b/part1/src/triangle/TriangleTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..b7bcb14739c011cdc447df6fc4091fca14099333
--- /dev/null
+++ b/part1/src/triangle/TriangleTest.java
@@ -0,0 +1,49 @@
+package triangle;
+
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+public class TriangleTest {
+	private triangle.Triangle triangle;
+
+	@BeforeEach
+	public void setUp() {
+		triangle = new triangle.Triangle();
+	}
+
+	@Test
+	public void testException() throws InvalidTriangleException {
+		final int[] is = new int[]{1, -1, 1};
+		triangle.setSides(is);
+		Assertions.assertThrows(InvalidTriangleException.class, ()->triangle.getType());
+	}
+	
+	@Test
+	public void testEquilateral() throws InvalidTriangleException {
+		final int[] is = new int[]{1, 1, 1};
+		triangle.setSides(is);
+		Assertions.assertEquals(triangle.getType(), Triangle.TriangleType.Equilateral);
+	}
+	
+	@Test
+	public void testIsosceles() throws InvalidTriangleException{
+		final int[] is = new int[]{3, 3, 2};
+		triangle.setSides(is);
+		Assertions.assertEquals(triangle.getType(), Triangle.TriangleType.Isosceles);
+	}
+	
+	@Test
+	public void testScalene() throws InvalidTriangleException{
+		final int[] is = new int[]{4, 5, 6};
+		triangle.setSides(is);
+		Assertions.assertEquals(triangle.getType(), Triangle.TriangleType.Scalene);
+	}
+	
+	@Test
+	public void testNat() throws InvalidTriangleException{
+		final int[] is = new int[]{1, 1, 2, 5};
+		triangle.setSides(is);
+		Assertions.assertEquals(triangle.getType(), Triangle.TriangleType.NaT);
+	}
+}