## Overview

The undergraduate and graduate information pages are a particular case of static pages (except for the course description pages). Here we briefly describe their structure, focusing on undergraduate pages (the structure of the graduate pages is very similar and we will not discuss it).

## Static pages

• main pages
• information pages
• policy pages
• course description pages (see below)

There are two main pages, one called undergraduate_main_page.md with permalink /undergraduate/, and the other called undergraduate_policy_page.md with permalink /undergraduate/policies/. These pages are orange headers in the sidebar (another orange header is the course description page below), and they also correspond to the subentries in the top navigation bar, under the “Undergraduate” dropdown menu.

The information and policy pages can be added as needed. Their top configuration variables look as follows, for example (the file is DMP.md):

All fields are self-explanatory, but just in case let us describe them.

• title is shown in the sidebar and in the page title
• layout: ug_page means that the page will be grouped under the undergraduate pages
• ug_policy: true shows that this is an undergraduate policy page (ug_info would correspond to an information page)
• permalink in this case is chosen for compatibility with the old website
• nav_parent: Undergraduate highlights the corresponding top navigation bar entry
• nav_weight: 10 corresponds to the ordering in the sidebar (as always, smaller nav_weight corresponds to higher position)

After the top configuration variables there is the main content of the page, which can be either in markdown or in HTML. Math formulas are supported, as usual. The extension can be either .md or .html, there are slight differences between them but both are supported.

## Course description pages

There is a yaml “database” file _data/courses.yml (link to GitHub) which contains all the course descriptions. It is mined from this page at the Lou’s list (which is itself is mined from the UVA SIS) by the python script /script/lou_course_descriptions.py (link to GitHub). This script is a part of the source code.

Note: You can make changes to this database file _data/courses.yml but running the script will overwrite it.

Note: The current (upcoming) semester is hardcoded into the script, so it needs to be changed to the correct one to correctly display that the course is offered in the current semester.

The course description pages use this database file to list all courses, undergraduate (/courses/undergrad/) or graduate (/courses/graduate/). The difference is that the graduate courses have an additional graduate: true field, while the undergraduate courses do not need it. (The script will check if the number of the course is $\ge 5000$ then it lists it as a graduate.)

Note: There is a combined course description page with permalink /courses/ which is not linked from the undergraduate or graduate pages but is kept for compatibility with the old website.