diff --git a/erpnext/education/doctype/course_enrollment/course_enrollment.py b/erpnext/education/doctype/course_enrollment/course_enrollment.py
index 2a2837d..b57745f 100644
--- a/erpnext/education/doctype/course_enrollment/course_enrollment.py
+++ b/erpnext/education/doctype/course_enrollment/course_enrollment.py
@@ -20,7 +20,7 @@
 		topics = course.get_topics()
 		progress = []
 		for topic in topics:
-				progress.append(student.get_topic_progress(self.name, topic))
+			progress.append(student.get_topic_progress(self.name, topic))
 		return reduce(lambda x,y: x+y, progress) # Flatten out the List
 
 	def validate_duplication(self):
diff --git a/erpnext/education/utils.py b/erpnext/education/utils.py
index 7a61ae5..93b44e9 100644
--- a/erpnext/education/utils.py
+++ b/erpnext/education/utils.py
@@ -68,7 +68,7 @@
 		student_id = frappe.get_all("Student", {"student_email_id": email}, ["name"])[0].name
 		return frappe.get_doc("Student", student_id)
 	except (IndexError, frappe.DoesNotExistError):
-		frappe.throw(_("Student with email {0} does not exist.".format(email)))
+		return None
 
 def check_super_access():
 	current_user = frappe.get_doc('User', frappe.session.user)
@@ -83,7 +83,7 @@
 	if not student:
 		return None
 	else:
-		enrollment = frappe.get_all("Program Enrollment", filters={'student':student, 'program': program_name})
+		enrollment = frappe.get_all("Program Enrollment", filters={'student':student.name, 'program': program_name})
 		if enrollment:
 			return enrollment[0].name
 		else:
@@ -96,7 +96,7 @@
 
 def get_course_enrollment(course_name):
 	student = get_current_student()
-	enrollment_name = frappe.get_all("Course Enrollment", filters={'student': student, 'course':course_name})
+	enrollment_name = frappe.get_all("Course Enrollment", filters={'student': student.name, 'course':course_name})
 	try:
 		name = enrollment_name[0].name
 		enrollment = frappe.get_doc("Course Enrollment", name)
@@ -118,8 +118,7 @@
 	return student
 
 def enroll_in_course(course_name, program_name):
-	student_id = get_current_student()
-	student = frappe.get_doc("Student", student_id)
+	student = get_current_student()
 	return student.enroll_in_course(course_name=course_name, program_enrollment=get_program_enrollment(program_name))
 
 def check_activity_exists(enrollment, content_type, content):
diff --git a/erpnext/www/lms.py b/erpnext/www/lms.py
index 85a4c58..f669543 100644
--- a/erpnext/www/lms.py
+++ b/erpnext/www/lms.py
@@ -91,15 +91,17 @@
 		return None
 
 	enrollment = utils.get_course_enrollment(course_name).name
-	quiz_status = {}
-	quiz_status['is_complete'], quiz_status['score'], quiz_status['result']  = utils.check_quiz_completion(quiz, enrollment)
+	quiz_progress = {}
+	quiz_progress['is_complete'], quiz_progress['score'], quiz_progress['result']  = utils.check_quiz_completion(quiz, enrollment)
 	quiz_output = [{'name':question.name, 'question':question.question, 'type': question.type, 'options':[{'name': option.name, 'option':option.option} for option in question.options]} for question in questions]
-	return { 'quizData': quiz_output, 'status': quiz_status}
+	return { 'quizData': quiz_output, 'status': quiz_progress}
 
 @frappe.whitelist()
 def evaluate_quiz(course, quiz_response, quiz_name):
 	"""LMS Function: Evaluates a simple multiple choice quiz.
+	:param course: name of the course
 	:param quiz_response: contains user selected choices for a quiz in the form of a string formatted as a dictionary. The function uses `json.loads()` to convert it to a python dictionary.
+	:param quiz_name: Name of the quiz attempted
 	"""
 	import json
 	quiz_response = json.loads(quiz_response)
