Custom Post Type Archive template not being called

Everything you describe is expected behavior based on your post type registration settings. A page isn’t going to load an archive template, I’m not sure why you’d expect it to. Your rewrite argument slug is only for single posts. Setting has_archive to true uses the post type slug as archive location, which is ttwi_course. If you want the archive to be courses, then set has_archive to courses.