diff --git a/CCI_Java/CCI_Java/src/td13/exo1/CharUtils.java b/CCI_Java/CCI_Java/src/td13/exo1/CharUtils.java
new file mode 100644
index 0000000000000000000000000000000000000000..cb122b1c877f9f7dcb5f8ff3708f4e6b76d25a82
--- /dev/null
+++ b/CCI_Java/CCI_Java/src/td13/exo1/CharUtils.java
@@ -0,0 +1,66 @@
+package td13.exo1;
+
+
+public class CharUtils{
+
+	public static void print(char t[]){
+		for(char c : t)
+			System.out.print(c + " ");
+		System.out.println("");
+	}
+	
+	public static void print(int t[]){
+		for(int idx = 0; idx < t.length; idx++)
+			if(idx >8)
+				System.out.print(" " + t[idx] + " ");
+			else
+				System.out.print(t[idx] + " ");
+//		for(int i : t)
+//			System.out.print(i + " ");
+		System.out.println("");
+	}
+	
+	public static void swap(char t[], int index1, int index2){
+		char c1 = t[index1];
+		t[index1] = t[index2];
+		t[index2] = c1;
+	}
+	
+	static void fillWithRandomRGB(char t[]){
+//		t[0] =(char) (Math.random() * 255);
+//		t[1] =(char) (Math.random() * 255);
+//		t[2] =(char) (Math.random() * 255);
+		
+		for (int idx = 0; idx < t.length; idx++){
+			int num = (int)(Math.random() * 2 + 0.5);
+			if (num == 0) t[idx] = 'R';
+			if (num == 1) t[idx] = 'G';
+			if (num == 2) t[idx] = 'B';
+		}
+		
+	}
+	
+	static void mystery(char t[]) {
+		int i = 0;
+		int j = 0;
+		int k = t.length - 1;
+		while (j <= k) {
+			if (t[j] == 'R') {
+				swap(t, i, j);
+				i++;
+				j++;
+			} else if (t[j] == 'G') {
+				j++;
+			} else {
+				swap(t, j, k);
+				k--;
+			}
+		}
+	}
+	
+
+
+
+
+
+}
diff --git a/CCI_Java/CCI_Java/src/td13/exo1/TestCharUtils.java b/CCI_Java/CCI_Java/src/td13/exo1/TestCharUtils.java
new file mode 100644
index 0000000000000000000000000000000000000000..08fd18b5b64d44e23e3c4a0d87fd2ad97df6127e
--- /dev/null
+++ b/CCI_Java/CCI_Java/src/td13/exo1/TestCharUtils.java
@@ -0,0 +1,21 @@
+package td13.exo1;
+
+import java.util.Scanner;
+
+public class TestCharUtils {
+
+	public static void main(String[] args) {
+
+		Scanner scanner = new Scanner(System.in);
+		System.out.println("donnes moi la taille!");
+		int taille = scanner.nextInt();
+		
+		char[] t = new char[taille];
+		CharUtils.fillWithRandomRGB(t);
+		CharUtils.print(t);
+		CharUtils.mystery(t);
+		CharUtils.print(t);
+
+	}
+
+}
\ No newline at end of file
diff --git a/CCI_Java/CCI_Java/src/td13/exo2/Calculator.java b/CCI_Java/CCI_Java/src/td13/exo2/Calculator.java
new file mode 100644
index 0000000000000000000000000000000000000000..381b4bf774bfb2ba6778869decaadd53ef490683
--- /dev/null
+++ b/CCI_Java/CCI_Java/src/td13/exo2/Calculator.java
@@ -0,0 +1,23 @@
+package td13.exo2;
+
+public class Calculator {
+
+	public static void main(String[] args) {
+
+		int num1 = Integer.valueOf(args[0]);
+		int num2 = Integer.valueOf(args[2]);
+//		char sign = (char) Integer.valueOf(args[1]).intValue();
+		int num3 = 0;
+		if (args[1].equals("+")) {
+			num3 = num1 + num2;
+		}
+		if (args[1].equals("-")) {
+			num3 = num1 - num2;
+		}
+		if (args[1].equals("*")) {
+			num3 = num1 * num2;
+		}
+		System.out.println(args[0]+ " " +args[1]  + " " +args[2] + " = " + num3);
+
+	}
+}
diff --git a/CCI_Java/CCI_Java/src/td13/exo3/SortUtils.java b/CCI_Java/CCI_Java/src/td13/exo3/SortUtils.java
new file mode 100644
index 0000000000000000000000000000000000000000..1365c620422a488c4040322798b084b2009fa7a8
--- /dev/null
+++ b/CCI_Java/CCI_Java/src/td13/exo3/SortUtils.java
@@ -0,0 +1,50 @@
+package td13.exo3;
+
+import java.util.HashSet;
+import java.util.Random;
+
+public class SortUtils {
+
+	public static void initializeRandomly(char[] letters) {
+		for (int idx = 0; idx < letters.length; idx++) {
+			Random rand = new Random();
+			letters[idx] = (char) ('a' + rand.nextInt(26));
+		}
+	}
+
+	public static char[] initializeRandomly(int size) {
+		char[] letters = new char[size];
+		for (int idx = 0; idx < letters.length; idx++) {
+			Random rand = new Random();
+			letters[idx] = (char) ('a' + rand.nextInt(26));
+		}
+		return letters;
+	}
+
+	public static int[] initializeOccurenceArray(char[] array) {
+		HashSet<Character> set = new HashSet<Character>();
+		for (char c : array)
+			set.add(c);
+		return new int[set.size()];
+	}
+
+	public static int[] initializeOccurenceArray(int size) {
+		return new int[size];
+	}
+
+	public static void countOccurrences(char[] letters, int[] occurrences) {
+		for (char c : letters)
+			occurrences[c - 'a']++;
+	}
+
+	public static void fillSortedResult(int[] occurrences, char[] result) {
+		int k = 0;
+		for (int idx = 0; idx < occurrences.length; idx++) {
+			for (int num = 0; num < occurrences[idx]; num++) {
+				result[k] = (char) (idx + 'a');
+				k++;
+			}
+		}
+	}
+
+}
diff --git a/CCI_Java/CCI_Java/src/td13/exo3/TestSortUtils.java b/CCI_Java/CCI_Java/src/td13/exo3/TestSortUtils.java
new file mode 100644
index 0000000000000000000000000000000000000000..cb882003ed0bf567cfaa4bef473dac8c5db0813c
--- /dev/null
+++ b/CCI_Java/CCI_Java/src/td13/exo3/TestSortUtils.java
@@ -0,0 +1,22 @@
+package td13.exo3;
+
+import td13.exo1.CharUtils;
+
+public class TestSortUtils {
+
+	public static void main(String[] args) {
+		int size = 10;
+		char[] ccc = SortUtils.initializeRandomly(size);
+		CharUtils.print(ccc);
+		int[] occurrences = SortUtils.initializeOccurenceArray(26);
+		SortUtils.countOccurrences(ccc, occurrences);
+		CharUtils.print(occurrences);
+		for (int i = 1; i <= 26; i++)
+			System.out.print(i + " ");
+		System.out.println();
+		char[] result = new char[size];
+		SortUtils.fillSortedResult(occurrences, result);
+		CharUtils.print(result);
+	}
+
+}
diff --git a/CCI_Java/CCI_Java/src/td13/exo3/fiddling.java b/CCI_Java/CCI_Java/src/td13/exo3/fiddling.java
new file mode 100644
index 0000000000000000000000000000000000000000..2fd2bc0375a6bfbcfd00a476e5bc1d0f94572ebf
--- /dev/null
+++ b/CCI_Java/CCI_Java/src/td13/exo3/fiddling.java
@@ -0,0 +1,12 @@
+package td13.exo3;
+
+public class fiddling {
+
+	public static void main(String[] args) {
+		int[] array = new int[3];
+		for(int i : array)
+			System.out.println(i);
+
+	}
+
+}
diff --git a/CCI_Java/CCI_Java/src/td13/exo4/NumberEater.java b/CCI_Java/CCI_Java/src/td13/exo4/NumberEater.java
new file mode 100644
index 0000000000000000000000000000000000000000..5133093c828ec5308899a1a87f1d77a57b46a1c4
--- /dev/null
+++ b/CCI_Java/CCI_Java/src/td13/exo4/NumberEater.java
@@ -0,0 +1,21 @@
+package td13.exo4;
+
+public class NumberEater {
+	private final int number;
+	NumberEater successor;
+
+	public NumberEater(int number) {
+		this.number = number;
+		System.out.print(number + " ");
+		successor = null;
+	}
+
+	public void eat(int other) {
+		if(other % number !=0 && successor == null) {
+			successor = new NumberEater(other);				
+		}
+		if(other % number !=0 && successor != null)
+			successor.eat(other);
+	}
+
+}
diff --git a/CCI_Java/CCI_Java/src/td13/exo4/TestNumberEater.java b/CCI_Java/CCI_Java/src/td13/exo4/TestNumberEater.java
new file mode 100644
index 0000000000000000000000000000000000000000..d52a6b9129657ca897c965145a372ce741c85d9f
--- /dev/null
+++ b/CCI_Java/CCI_Java/src/td13/exo4/TestNumberEater.java
@@ -0,0 +1,18 @@
+package td13.exo4;
+
+import java.util.Scanner;
+
+public class TestNumberEater {
+
+	public static void main(String[] args) {
+
+		Scanner scanner = new Scanner(System.in);
+		System.out.println("donnes moi une integer > 2");
+		int fin = scanner.nextInt();
+		NumberEater eater1 = new NumberEater(2);
+		for(int i = 3; i <= fin; i++) {
+			eater1.eat(i);
+		}
+	}
+
+}
diff --git a/CCI_Java/CCI_Java/src/td13/exo5/Fraction.java b/CCI_Java/CCI_Java/src/td13/exo5/Fraction.java
new file mode 100644
index 0000000000000000000000000000000000000000..96f0e52102a1d1a6b3299957bcb1061903d2d462
--- /dev/null
+++ b/CCI_Java/CCI_Java/src/td13/exo5/Fraction.java
@@ -0,0 +1,74 @@
+package td13.exo5;
+
+import java.math.BigInteger;
+
+public class Fraction {
+
+	BigInteger numerator;
+	BigInteger denominator;
+
+	public Fraction(BigInteger numerator, BigInteger denominator) {
+		this.numerator = numerator;
+		this.denominator = denominator;
+	}
+
+	public Fraction(int numerator, int denominator) {
+		this.numerator = BigInteger.valueOf(numerator);
+		this.denominator = BigInteger.valueOf(denominator);
+	}
+
+	public Fraction(int numerator) {
+		this.numerator = BigInteger.valueOf(numerator);
+		this.denominator = BigInteger.ONE;
+	}
+
+	public Fraction add(Fraction f) {
+		if (this.denominator == f.denominator)
+			return new Fraction(this.numerator.add(f.numerator), this.denominator);
+		BigInteger numTmp = (this.numerator.multiply(f.denominator)).add(f.numerator.multiply(this.denominator));
+		BigInteger denTmp = this.denominator.multiply(f.denominator);
+
+		for (BigInteger factor = numTmp.min(denTmp); factor.compareTo(BigInteger.ONE) >= 0; factor = factor
+				.subtract(BigInteger.ONE)) {
+			boolean compNum = numTmp.mod(factor) == BigInteger.ZERO;
+			boolean compDen = denTmp.mod(factor) == BigInteger.ZERO;
+			if (compNum && compDen)
+				return new Fraction(numTmp.divide(factor), denTmp.divide(factor));
+		}
+		return null;
+	}
+
+	public Fraction substract(Fraction f) {
+		if (this.denominator == f.denominator)
+			return new Fraction(this.numerator.subtract(f.numerator), this.denominator);
+		BigInteger numTmp = (this.numerator.multiply(f.denominator)).subtract(f.numerator.multiply(this.denominator));
+		BigInteger denTmp = this.denominator.multiply(f.denominator);
+
+		for (BigInteger factor = numTmp.min(denTmp); factor.compareTo(BigInteger.ONE) >= 0; factor = factor
+				.subtract(BigInteger.ONE)) {
+			boolean compNum = numTmp.mod(factor) == BigInteger.ZERO;
+			boolean compDen = denTmp.mod(factor) == BigInteger.ZERO;
+			if (compNum && compDen)
+				return new Fraction(numTmp.divide(factor), denTmp.divide(factor));
+		}
+		return null;
+	}
+
+	public Fraction multiply(Fraction f) {
+		return new Fraction(this.numerator.multiply(f.numerator), this.denominator.multiply(f.denominator));
+	}
+
+	public Fraction divide(Fraction f) {
+		return new Fraction(this.numerator.multiply(f.denominator), this.denominator.multiply(f.numerator));
+	}
+
+	@Override
+	public String toString() {
+		return numerator + " / " + denominator;
+	}
+
+	public double doubleValue() {
+		BigInteger frac = numerator.multiply(BigInteger.valueOf(1000)).divide(denominator);
+		return frac.doubleValue() / 1000;
+	}
+}
diff --git a/CCI_Java/CCI_Java/src/td13/exo5/TestFraction.java b/CCI_Java/CCI_Java/src/td13/exo5/TestFraction.java
new file mode 100644
index 0000000000000000000000000000000000000000..71325d9c04dab4278234e9355734fcaef333ab7d
--- /dev/null
+++ b/CCI_Java/CCI_Java/src/td13/exo5/TestFraction.java
@@ -0,0 +1,24 @@
+package td13.exo5;
+
+import java.math.BigInteger;
+
+public class TestFraction {
+
+	public static void main(String[] args) {
+		BigInteger big1= BigInteger.valueOf(5);
+		BigInteger big2= big1.add(BigInteger.valueOf(2));
+		BigInteger big3= BigInteger.valueOf(2);
+		System.out.println(big1.multiply(BigInteger.TEN).divide(big3));
+		System.out.println(big1.divide(big3).doubleValue());
+
+		
+		// test add
+		
+		Fraction f1 = new Fraction(BigInteger.valueOf(8), BigInteger.valueOf(6));
+		Fraction f2 = new Fraction(BigInteger.valueOf(6), BigInteger.valueOf(4));
+		System.out.println(f1.add(f2));
+		
+	
+	}
+
+}
diff --git a/CCI_Java/CCI_Java/src/td13/hallo.java b/CCI_Java/CCI_Java/src/td13/hallo.java
new file mode 100644
index 0000000000000000000000000000000000000000..7ac3bf4a030899229d42dd8f9737d8a8f18b4efa
--- /dev/null
+++ b/CCI_Java/CCI_Java/src/td13/hallo.java
@@ -0,0 +1,8 @@
+public class hallo {
+
+	public static void main(String[] args) {
+		for (String str : args)
+            System.out.println(str);
+		System.out.println("test");
+	}
+}
\ No newline at end of file