\label{Domain_Configuration_Cataloging_Courses} LON-CAPA courses can be both self-cataloging, and also manually cataloged. Self-cataloging uses the institutional course code assigned to the course when it is first created, or when the course is modified by a Domain Coordinator via \char`\"{}Modify a course\char`\"{}. If a course has no institutional code it will not appear in the category: Official courses (with institutional codes). A hierarchy of categories and sub-categories can be defined which are independent of institutional course codes. These categories might be used to catalog courses in the domain to which the \char`\"{}official courses\char`\"{} designation does not apply, or they might be used to provide alternative ways of cataloging official courses. Besides definition of the hierarchy of categories and sub-categories, the \char`\"{}cataloging of courses\char`\"{} screen provides two options to be set for the domain by a Domain Coordinator, which control: \begin{itemize} \item Who may hide a course from the course catalog, if the course would ordinarily appear by virtue of having an institutional course code, or having been assigned to a custom category/sub-category. \item Who may assign a custom category/subcategory to a course \end{itemize} In both cases, the choice is between a Domain Coordinator and a Course Coordinator. For the former, hiding of courses and assignment of categories will be via \char`\"{}Modify Course\char`\"{}, while for the latter these operations will be via \char`\"{}Modify Parameters\char`\"{} (\char`\"{}Set Course Environment\char`\"{} option in sub-menu). Definition of custom categories is by the Domain Coordinator. The \char`\"{}Cataloging of courses\char`\"{} interface allows custom categories and sub-categories to be defined and reordered. There is one category listed at the top level in the hierarchy which behaves differently to the others - the category: \char`\"{}Official courses (with institutional codes)\char`\"{}. This is the category which is used for self-cataloged courses: the option is to either display or not display. Although sub-categories can not be defined via this interface for this \char`\"{}system\char`\"{} category (unlike the other \char`\"{}custom\char`\"{} categories), customization of two routines in localenroll.pm - \&instcode\_defaults() and \&instcode\_format() are used to automatically generate linked select boxes which will be displayed when the course catalog is shown to allow users to include limits to their searches for official courses. If these routines have not been customized, the catalog for official courses will display all courses with institutional codes, which have not been specifically hidden. When \&instcode\_format() has been customized it will populate perl structures (hashes and arrays) which LON-CAPA will use to generate the Javascript code embedded in the course catalog page which is used in the functioning of the linked select boxes. The contents of the hashes and arrays are determined from the complete list of institutional course codes used in the domain. For example at MSU, the following linked select boxes are displayed for the official courses catalog: Year, Semester, Department, Number. The course catalog is useful in domains where Course Coordinators have opted to allow self-enrollment in their courses. In such cases, students can include a flag to only display courses allowing self enrollment when they display courses from the catalog. Course Coordinators will be advised, when enabling self-enrollment, if a courses is currently unlisted in the course catalog (and therefore difficult for students to locate), and the action to take to rectify the reason why there is no listing, which could be because: \begin{itemize} \item the course is hidden \item the course has no institutional code \item the course has not been assigned to any custom categories \item the course has an institutional code, but display of the official courses catalog is disabled \end{itemize}