diff --git a/erpnext/education/doctype/course_enrollment/course_enrollment.json b/erpnext/education/doctype/course_enrollment/course_enrollment.json
index 303cb0d..686f2c1 100644
--- a/erpnext/education/doctype/course_enrollment/course_enrollment.json
+++ b/erpnext/education/doctype/course_enrollment/course_enrollment.json
@@ -156,7 +156,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2018-10-15 16:26:39.216071", 
+ "modified": "2018-10-19 17:46:46.595749", 
  "modified_by": "Administrator", 
  "module": "Education", 
  "name": "Course Enrollment", 
@@ -181,6 +181,25 @@
    "share": 1, 
    "submit": 0, 
    "write": 1
+  }, 
+  {
+   "amend": 0, 
+   "cancel": 0, 
+   "create": 1, 
+   "delete": 0, 
+   "email": 1, 
+   "export": 1, 
+   "if_owner": 0, 
+   "import": 0, 
+   "permlevel": 0, 
+   "print": 1, 
+   "read": 1, 
+   "report": 1, 
+   "role": "LMS User", 
+   "set_user_permissions": 0, 
+   "share": 1, 
+   "submit": 0, 
+   "write": 1
   }
  ], 
  "quick_entry": 1, 
diff --git a/erpnext/education/doctype/quiz/quiz.py b/erpnext/education/doctype/quiz/quiz.py
index 0c3dd30..4bb6a78 100644
--- a/erpnext/education/doctype/quiz/quiz.py
+++ b/erpnext/education/doctype/quiz/quiz.py
@@ -16,10 +16,9 @@
 	def evaluate(self, response_dict):
 		self.get_questions()
 		answers = {q.name:q.get_answer() for q in self.get_questions()}
-		print(response_dict)
-		print(type(response_dict))
-		print(answers)
-		print(type(answers))
+		correct_answers = [{'question':question,'selected_option':response_dict[question],'result':(answers[question] == response_dict[question])} for question in response_dict.keys()]
+		print(correct_answers)
+		return correct_answers, (sum(answer['result'] for answer in correct_answers) * 100 ) / len(answers)
 
 
 	def get_questions(self):
diff --git a/erpnext/education/doctype/quiz_activity/quiz_activity.json b/erpnext/education/doctype/quiz_activity/quiz_activity.json
index 53a213d..29086f1 100644
--- a/erpnext/education/doctype/quiz_activity/quiz_activity.json
+++ b/erpnext/education/doctype/quiz_activity/quiz_activity.json
@@ -196,7 +196,7 @@
    "label": "Quiz", 
    "length": 0, 
    "no_copy": 0, 
-   "options": "Content", 
+   "options": "Quiz", 
    "permlevel": 0, 
    "precision": "", 
    "print_hide": 0, 
@@ -351,7 +351,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2018-10-15 17:51:34.273703", 
+ "modified": "2018-10-19 16:27:05.321554", 
  "modified_by": "Administrator", 
  "module": "Education", 
  "name": "Quiz Activity", 
@@ -376,6 +376,25 @@
    "share": 1, 
    "submit": 0, 
    "write": 1
+  }, 
+  {
+   "amend": 0, 
+   "cancel": 0, 
+   "create": 1, 
+   "delete": 1, 
+   "email": 1, 
+   "export": 1, 
+   "if_owner": 0, 
+   "import": 0, 
+   "permlevel": 0, 
+   "print": 1, 
+   "read": 1, 
+   "report": 1, 
+   "role": "LMS User", 
+   "set_user_permissions": 0, 
+   "share": 1, 
+   "submit": 0, 
+   "write": 1
   }
  ], 
  "quick_entry": 1, 
diff --git a/erpnext/education/utils.py b/erpnext/education/utils.py
index ba54c90..a3763c1 100644
--- a/erpnext/education/utils.py
+++ b/erpnext/education/utils.py
@@ -52,16 +52,6 @@
 		else:
 			unique_students.append(stud.student)
 
-def get_student_name(email=None):
-	"""Returns student user name, example EDU-STU-2018-00001 (Based on the naming series).
-
-	:param user: a user email address
-	"""
-	try:
-		return frappe.get_all('Student', filters={'student_email_id': email}, fields=['name'])[0].name
-	except IndexError:
-		return None
-
 @frappe.whitelist()
 def evaluate_quiz(quiz_response, **kwargs):
 	"""LMS Function: Evaluates a simple multiple choice quiz.  It recieves arguments from `www/lms/course.js` as dictionary using FormData[1].
@@ -73,25 +63,33 @@
 	import json
 	quiz_response = json.loads(quiz_response)
 	quiz_name = kwargs.get('quiz')
+	course_name = kwargs.get('course')
 	try:
 		quiz = frappe.get_doc("Quiz", quiz_name)
-		result = quiz.evaluate(quiz_response)
-		return "Hello"
+		result, score = quiz.evaluate(quiz_response)
+		add_quiz_activity(course_name, quiz_name, result, score)
+		return score
 	except frappe.DoesNotExistError:
 		frappe.throw("Quiz {0} does not exist".format(quiz_name))
-	# correct_answers = [frappe.get_value('Question', name, 'correct_options') for name in quiz_response.keys()]
-	# selected_options = quiz_response.values()
-	# result = [selected == correct for selected, correct in zip(selected_options, correct_answers)]
-	# try:
-	# 	score = int((result.count(True)/len(selected_options))*100)
-	# except ZeroDivisionError:
-	# 	score = 0
+		return None
 
-	# kwargs['selected_options'] = selected_options
-	# kwargs['result'] = result
-	# kwargs['score'] = score
-	# add_activity('Quiz', **kwargs)
-	# return score
+
+def add_quiz_activity(course, quiz, result, score):
+	print(course, quiz, result, score)
+	enrollment = get_course_enrollment(course, frappe.session.user)
+	if not enrollment:
+		enrollment = add_course_enrollment(course, frappe.session.user)
+	activity = frappe.get_doc({
+		"doctype": "Quiz Activity",
+		"enrollment": enrollment.name,
+		"quiz": quiz,
+		"score": score,
+		# "date": frappe.getdate(),
+		})
+	for response in result:
+		activity.append("result", response)
+	activity.save()
+	frappe.db.commit()
 
 @frappe.whitelist()
 def add_activity(content_type, **kwargs):
@@ -144,24 +142,6 @@
 	else:
 		return None, frappe.get_doc("Course Activity", activity_name)
 
-def get_contents_in_course(course_name):
-	try:
-		course_doc = frappe.get_doc("Course", {"name":course_name, "is_published": True})
-		return [frappe.get_doc("Content", content.content) for content in course_doc.get_all_children()]
-	except frappe.DoesNotExistError:
-		return None
-
-def get_courses_in_program(program):
-	try:
-		program_doc = frappe.get_doc("Program", program)
-		if program_doc.is_published:
-			course_list = [frappe.get_doc("Course", course.course_name) for course in program_doc.get_all_children()]
-			return [course for course in course_list if course.is_published == True]
-		else:
-			return None
-	except frappe.DoesNotExistError:
-		return None
-
 def get_program():
 	program_list = frappe.get_list("Program", filters={"is_published": is_published})
 	if program_list:
@@ -184,7 +164,8 @@
 		enrollment = frappe.get_doc({
 			"doctype": "Course Enrollment",
 			"student": student_id,
-			"course": course
+			"course": course,
+			"enrollment_date": frappe.getdate()
 		})
 		enrollment.save()
 		frappe.db.commit()
@@ -197,43 +178,14 @@
 	except IndexError:
 		return None
 
-def get_student_id(email):
-	"""Returns Student ID, example EDU-STU-2018-00001 from email address
+def get_student_id(email=None):
+	"""Returns student user name, example EDU-STU-2018-00001 (Based on the naming series).
 
-	:params email: email address of the student"""
+	:param user: a user email address
+	"""
 	try:
-		return frappe.get_list('Student', filters={'student_email_id': email})[0].name
+		print("email is",email)
+		return frappe.get_all('Student', filters={'student_email_id': email}, fields=['name'])[0].name
 	except IndexError:
-		frappe.throw("Student Account with email:{0} does not exist".format(email))
-
-def get_quiz(content):
-	try:
-		quiz_doc = frappe.get_doc("Content", content)
-		if quiz_doc.content_type != "Quiz":
-			frappe.throw("<b>{0}</b> is not a Quiz".format(content))
-		quiz = [frappe.get_doc("Question", item.question_link) for item in quiz_doc.questions]
-		return quiz
-	except frappe.DoesNotExistError:
-		frappe.throw("The quiz \"{0}\" does not exist".format(content))
-
-def get_quiz_as_dict(content):
-	"""Helper Function to get questions for a quiz
-
-	:params content: name of a Content doctype with content_type quiz"""
-	try:
-		quiz_doc = frappe.get_doc("Content", content)
-		if quiz_doc.content_type != "Quiz":
-			frappe.throw("<b>{0}</b> is not a Quiz".format(content))
-
-		import json
-		quiz = [frappe.get_doc("Question", item.question_link) for item in quiz_doc.questions]
-		data = []
-		for question in quiz:
-			d = {}
-			d['id'] = question.name
-			d['question'] = question.question
-			d['options'] = [item.option for item in quiz[0].options]
-			data.append(d)
-		return data
-	except frappe.DoesNotExistError:
-		frappe.throw("The quiz \"{0}\" does not exist".format(content))
+		frappe.throw("Student with email {0} does not exist".format(email))
+		return None
\ No newline at end of file
