The delegate method for the CourseListViewController should be named
func courseListViewController(viewController: NSViewController, didSelectCourse: Course?) -> Void because it is called after the viewcontroller did something.
Just look at basically any delegate method from Cocoa.
Apple even has naming suggestions/conventions for this:
Of course the method signature itself would look like this then: