diff --git a/erpnext/public/js/education/lms/components/CourseCard.vue b/erpnext/public/js/education/lms/components/CourseCard.vue
index 31ca773..921ad9f 100644
--- a/erpnext/public/js/education/lms/components/CourseCard.vue
+++ b/erpnext/public/js/education/lms/components/CourseCard.vue
@@ -33,8 +33,16 @@
 import AButton from './Button.vue';
 
 export default {
-    props: ['course', 'courseMeta', 'program_name'],
+    props: ['course', 'program_name'],
     name: "CourseCard",
+    data() {
+        return {
+            courseMeta: {}
+        }
+    },
+    mounted() {
+        this.getCourseMeta().then(data => this.courseMeta = data)
+    },
     components: {
         AButton
     },
@@ -68,7 +76,12 @@
             if(content_type == 'Video') return 'fa fa-play'
             if(content_type == 'Article') return 'fa fa-file-text-o'
             if(content_type == 'Quiz') return 'fa fa-question-circle-o'
-        }
+        },
+        getCourseMeta() {
+			return lms.call('get_course_meta', {
+					course_name: this.course.name
+				})
+		}
     }
 };
 </script>
diff --git a/erpnext/public/js/education/lms/pages/ProgramPage.vue b/erpnext/public/js/education/lms/pages/ProgramPage.vue
index 1c90f73..65bb9a6 100644
--- a/erpnext/public/js/education/lms/pages/ProgramPage.vue
+++ b/erpnext/public/js/education/lms/pages/ProgramPage.vue
@@ -3,7 +3,7 @@
 	<TopSection v-bind:title="program.program_name" v-bind:description="program.description">
     </TopSection>
 	<CardList :title="'Courses'" :description="''">
-        <CourseCard slot="card-list-slot" v-for="course in course_data" :course="course.course" :program_name="program_name" :courseMeta="course.meta" :key="course.course.name + course.meta.flag"/>
+        <CourseCard slot="card-list-slot" v-for="course in courseData" :course="course" :program_name="program_name" :key="course.name"/>
     </CardList>
 </div>
 </template>
@@ -24,7 +24,7 @@
 	data() {
 		return {
 			program: {},
-			course_data: []
+			courseData: [],
 		}
 	},
     beforeMount() {
@@ -32,11 +32,10 @@
     },
 	mounted() {
 		this.getProgramDetails().then(data => this.program = data);
-		this.getCourses().then(data => this.course_data = data);
-		
+		this.getCourses().then(data => this.courseData = data);
 		// lms.on(`course-completed`, (course_name) => {
-		// 	const course = this.course_data.findIndex(c => c.name === course_name);
-		// 	this.course_data[course].completed = true;
+		// 	const course = this.courseData.findIndex(c => c.name === course_name);
+		// 	this.courseData[course].completed = true;
 		// });
 	},
 	methods: {
diff --git a/erpnext/www/lms.py b/erpnext/www/lms.py
index 01fb323..10d2948 100644
--- a/erpnext/www/lms.py
+++ b/erpnext/www/lms.py
@@ -64,8 +64,7 @@
 def get_courses(program_name):
 	program = frappe.get_doc('Program', program_name)
 	courses = program.get_course_list()
-	course_data = [{'meta':get_course_meta(utils.get_course_enrollment(item.name)), 'course':item} for item in courses]
-	return course_data
+	return courses
 
 @frappe.whitelist()
 def get_next_content(content, content_type, course):
@@ -171,7 +170,7 @@
 	course = frappe.get_doc('Course', course_enrollment.course)
 	contents = course.get_contents()
 	progress = []
-	for index, content in enumerate(contents):
+	for content in contents:
 		if content.doctype in ('Article', 'Video'):
 			status = check_content_completion(content.name, content.doctype, course_enrollment.name)
 			progress.append({'content': content.name, 'content_type': content.doctype, 'is_complete': status})
@@ -192,16 +191,18 @@
 	status = bool(len(attempts) == quiz.max_attempts)
 	score = None
 	result = None
-	if attempts and quiz.grading_basis == 'Last Highest Score':
-		attempts = sorted(attempts, key = lambda i: int(i.score), reverse=True)
-	score = attempts[0]['score']
-	result = attempts[0]['status']
-	if result == 'Pass':
-		status = True
+	if attempts:
+		if quiz.grading_basis == 'Last Highest Score':
+			attempts = sorted(attempts, key = lambda i: int(i.score), reverse=True)
+		score = attempts[0]['score']
+		result = attempts[0]['status']
+		if result == 'Pass':
+			status = True
 	return status, score, result
-
-
-def get_course_meta(course_enrollment):
+	
+@frappe.whitelist()
+def get_course_meta(course_name):
+	course_enrollment = utils.get_course_enrollment(course_name)
 	# course_enrollment = frappe.get_doc("Course Enrollment", course_enrollment_name)
 	progress = get_course_progress(course_enrollment)
 	count = sum([act['is_complete'] for act in progress])
