diff --git a/.gitignore b/.gitignore
index e660fd93d3196215552065b1e63bf6a2f393ed86..660ecff6e1f18e3aff01b2b65d6262ae5b958e83 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,3 @@
 bin/
+*.cmi
+*.cmo
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..c36511e5c40a56025429fd0b2a3422ce79a55284
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,7 @@
+all:
+	ocamlc -c polynome.ml 
+	ocamlc -c main.ml 
+	ocamlc -o bin/main nums.cma polynome.cmo main.cmo
+clean:
+	rm -f *.cm[iox] *~ .*~ #*#
+	rm -f bin/main
diff --git a/main.ml b/main.ml
new file mode 100644
index 0000000000000000000000000000000000000000..3bfe56edf60e7f9589cc60ae66248749b4054834
--- /dev/null
+++ b/main.ml
@@ -0,0 +1,2 @@
+(*projet AP Edouard Paris 2016*)
+open Polynome;;
diff --git a/polynome.ml b/polynome.ml
new file mode 100644
index 0000000000000000000000000000000000000000..d547bb60db60c23794fd20c0c9d9ea08a08db6cf
--- /dev/null
+++ b/polynome.ml
@@ -0,0 +1,22 @@
+(*Projet AP Edouard Paris 2016*)
+
+open Big_int;;
+
+module type Polynomes =
+  sig
+    type polynome
+    val print_pol: polynome -> string
+  end
+;;
+
+module Polynome : Polynomes =
+  struct
+    type polynome =
+      |Null
+      |NotNull of big_int*int*polynome
+    let rec print_pol p = match p with
+      |Null -> "0"
+      |NotNull (coeff, degree, polynome)->
+	(string_of_big_int coeff)^"X^"^(string_of_int degree)^"+"^(print_pol polynome)
+  end
+;;