diff --git a/src/code_templates/mod.rs b/src/code_templates/mod.rs
index 4d17482e3673de7fd69bf301c186e239daa516a3..3f89b914a0d59af91b848e4d2d18a810d7ad320b 100644
--- a/src/code_templates/mod.rs
+++ b/src/code_templates/mod.rs
@@ -49,6 +49,23 @@ pub fn template_for_main(path_to_hfile: String) -> CodeBuffer {
     return buffer;
 }
 
+pub fn template_for_examfile() -> CodeBuffer {
+    let mut buffer = CodeBuffer::new(4);
+
+    buffer.println("#include <stdio.h>");
+    buffer.println("#include <stdlib.h>");
+    buffer.println("#include <stdbool.h>");
+    buffer.println("#include <string.h>");
+    buffer.println("");
+    buffer.println("int main()");
+    buffer.println("{");
+    buffer.println("");
+    buffer.println_right("return 0;");
+    buffer.println_left("}");
+
+    return buffer;
+}
+
 pub fn template_for_makefile_algo(mut hfile_name: String, mut main_name: String) -> CodeBuffer {
     let mut buffer = CodeBuffer::new(4);
 
@@ -92,3 +109,31 @@ pub fn template_for_makefile_algo(mut hfile_name: String, mut main_name: String)
 
     return buffer;
 }
+
+pub fn template_for_makefile_exam(mut main_filename: String) -> CodeBuffer {
+    let mut buffer = CodeBuffer::new(4);
+
+    // Removing extensions
+    for _ in 0..2 {
+        // hfile_name.pop();
+        main_filename.pop();
+    }
+
+    buffer.println("# This file was automatically generated by `create-prog-app`");
+    buffer.println("CC:=gcc");
+    buffer.println("CFLAGS:=-Wall -Wextra -g -pedantic -fsanitize=address -fsanitize=leak");
+    buffer.println("LIBS:=-lm");
+    buffer.println("VPATH:=struct");
+    buffer.println("# Due to the oddity of MAKE and the fact you cannot generate \"true\" tabs,");
+    buffer.println("# the \"tab\" character is replaced by spaces.");
+    buffer.println("# `create-prog-app` STRONGLY advises you not to change/modify the line below");
+    buffer.println(".RECIPEPREFIX:=$(.RECIPEPREFIX) ");
+    buffer.println("");
+    buffer.println(format!("{0}: {0}.c", main_filename.to_lowercase()).as_str());
+    buffer.println_right("$(CC) $(CFLAGS) $(LIBS) $^ -o $@");
+    buffer.println_left("");
+    buffer.println("clean:");
+    buffer.println_right(format!("rm -f *.o {}", main_filename.to_lowercase()).as_str());
+
+    return buffer;
+}