diff --git a/resources/vue/components/courseware/CoursewareShelfDialogCopy.vue b/resources/vue/components/courseware/CoursewareShelfDialogCopy.vue
index a9c177f6a37db2bb09f076a875062feec0494420..12515118a12445c5c09e8af18e9831fcbd1de752 100644
--- a/resources/vue/components/courseware/CoursewareShelfDialogCopy.vue
+++ b/resources/vue/components/courseware/CoursewareShelfDialogCopy.vue
@@ -328,7 +328,7 @@ export default {
             semesters.every(semester => {
                 view.loadSemester({id: semester}).then( () => {
                     view.semesterMap.push(view.semesterById({id: semester}));
-                    view.semesterMap.sort((a, b) => a.attributes.start < b.attributes.start);
+                    view.semesterMap.sort((a, b) => new Date(b.attributes.start) - new Date(a.attributes.start));
                 });
                 return true;
             });
diff --git a/resources/vue/components/courseware/CoursewareStructuralElementDialogCopy.vue b/resources/vue/components/courseware/CoursewareStructuralElementDialogCopy.vue
index aec65adef47556209f7a78f57bb5ea68c07a2719..c352dda0155672be57c25dabeaa12d1323c27843 100644
--- a/resources/vue/components/courseware/CoursewareStructuralElementDialogCopy.vue
+++ b/resources/vue/components/courseware/CoursewareStructuralElementDialogCopy.vue
@@ -381,7 +381,7 @@ export default {
             semesters.every(semester => {
                 view.loadSemester({id: semester}).then( () => {
                     view.semesterMap.push(view.semesterById({id: semester}));
-                    view.semesterMap.sort((a, b) => a.attributes.start < b.attributes.start);
+                    view.semesterMap.sort((a, b) => new Date(b.attributes.start) - new Date(a.attributes.start));
                 });
                 return true;
             });