Instructors

{#if course.instructors.length > 0}
{#each course.instructors as instructor} {instructor.displayName} {#if 'rmpRating' in instructor && instructor.rmpRating} {@const rating = instructor.rmpRating as number} {rating.toFixed(1)}โ˜… {/if}
{instructor.displayName}
{#if instructor.isPrimary}
Primary instructor
{/if} {#if 'rmpRating' in instructor && instructor.rmpRating}
{(instructor.rmpRating as number).toFixed(1)}/5 ({(instructor as any).rmpNumRatings ?? 0} ratings)
{/if} {#if instructor.email} {/if}
{/each}
{:else} Staff {/if}

Meeting Times

{#if course.meetingTimes.length > 0}
    {#each course.meetingTimes as mt}
  • {#if isMeetingTimeTBA(mt) && isTimeTBA(mt)} TBA {:else}
    {#if !isMeetingTimeTBA(mt)} {formatMeetingDaysLong(mt)} {/if} {#if !isTimeTBA(mt)} {formatTime(mt.begin_time)}–{formatTime(mt.end_time)} {:else} Time TBA {/if}
    {/if} {#if mt.building || mt.room}
    {mt.building_description ?? mt.building}{mt.room ? ` ${mt.room}` : ""}
    {/if}
    {formatDate(mt.start_date)} – {formatDate(mt.end_date)}
  • {/each}
{:else} TBA {/if}

Delivery

{course.instructionalMethod ?? "โ€”"} {#if course.campus} ยท {course.campus} {/if}

Credits

{formatCreditHours(course)}
{#if course.attributes.length > 0}

Attributes

{#each course.attributes as attr} {attr} {/each}
{/if} {#if course.crossList}

Cross-list

{course.crossList} {#if course.crossListCount != null && course.crossListCapacity != null} {course.crossListCount}/{course.crossListCapacity} {/if} Group {course.crossList} {#if course.crossListCount != null && course.crossListCapacity != null} โ€” {course.crossListCount} enrolled across {course.crossListCapacity} shared seats {/if}
{/if} {#if course.waitCapacity > 0}

Waitlist

{course.waitCount} / {course.waitCapacity}
{/if}