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:
https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CodingGuidelines/Articles/NamingMethods.html
Of course the method signature itself would look like this then: