diff --git a/resources/vue/components/courseware/CoursewareShelfDialogCopy.vue b/resources/vue/components/courseware/CoursewareShelfDialogCopy.vue
index 9695df3368bd604b7a7266f090e8f5d4d6533831..1010d9b3349f123c19d95090f64bad4c65e42f36 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 556d0085f50cf90fae6146464c1cf3e6568191a2..f961f5717ca8f6590ba71533f9b1a9ba13d9e80e 100644
--- a/resources/vue/components/courseware/CoursewareStructuralElementDialogCopy.vue
+++ b/resources/vue/components/courseware/CoursewareStructuralElementDialogCopy.vue
@@ -352,7 +352,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;
             });