diff --git a/server.py b/server.py
index 91c79e5407c07eed159bd98fd4a10b1e40786b49..1e5a1a27e6d1eadfcedb5a6c70a5216ed81c8c42 100644
--- a/server.py
+++ b/server.py
@@ -348,7 +348,7 @@ def index():
 @app.route('/courses')
 @register_navbar('Videos', icon='film')
 def courses():
-	courses = query('SELECT * FROM courses WHERE (? OR (visible AND listed)) ORDER BY title', ismod())
+	courses = query('SELECT * FROM courses WHERE (? OR (visible AND listed)) ORDER BY semester, title', ismod())
 	for course in courses:
 		if course['semester'] == '':
 			course['semester'] = 'zeitlos'
diff --git a/templates/courses.html b/templates/courses.html
index 9c8ff488b527cdbfa9132c39122d10b6b27ac93d..f5ff99eb97de36c1679bae38c2a99b205d411442 100644
--- a/templates/courses.html
+++ b/templates/courses.html
@@ -63,7 +63,7 @@
 			</a>
 		</div>
 		<ul class="{% if not ismod() %}courses-list {% endif %}list-group panel-collapse collapse in" id="{{g.grouper|tagid}}">
-			{% for i in g.list|sort(attribute='title') %}
+			{% for i in g.list %}
 				{% if groupedby == 'semester' %}
 					{{ course_list_item(i) }}
 				{% else %}