--- import { departmentEvents, EVENT_CATEGORY_LABELS, EVENT_CATEGORY_STYLES, pastEvents, upcomingEvents, type EventCategory, } from "@/data/events"; import DefaultLayout from "@/layouts/DefaultLayout.astro"; import { ArrowRight, CalendarDays, Search, Sparkles } from "lucide-react"; const categoryOrder: EventCategory[] = [ "conference", "school", "workshop", "symposium", "course", ]; const categoryCounts = categoryOrder .map((category) => ({ category, count: departmentEvents.filter((event) => event.category === category) .length, })) .filter(({ count }) => count > 0); const groupedPastEvents = Object.entries( pastEvents.reduce>((groups, event) => { groups[event.year] ??= []; groups[event.year].push(event); return groups; }, {}), ).sort(([a], [b]) => Number(b) - Number(a)); const isExternalUrl = (url: string) => /^https?:\/\//.test(url); ---

Schools, workshops, and conferences

Events

Department-hosted schools, workshops, short courses, conferences, and community-facing programs from the CSE events archive.

{ categoryCounts.map(({ category, count }) => ( )) }

Showing {departmentEvents.length} events.

Future-dated public event listings as of 1 Jun 2026.

{ upcomingEvents.length === 0 ? (

No upcoming events listed right now.

Recently completed 2026 events are available in the archive below.

) : upcomingEvents.map((event) => (
{event.displayDate}

{event.title}

{event.description}

{event.sourceUrl && ( {event.sourceLabel ?? "Event website"} )} {(event.organizer || event.collaborators) && (
{event.organizer && ( <>
Organizer
{event.organizer}
)} {event.collaborators && ( <>
With
{event.collaborators}
)}
)}
)) }
{ departmentEvents .filter((event) => event.featured) .slice(0, 9) .map((event) => ( )) }

Archive

Administrative placeholders and excluded upcoming-sheet items are not shown in this public listing.

{ groupedPastEvents.map(([year, events]) => (

{year}

{events.map((event) => (

{event.displayDate}

{event.title}

{event.description}

{event.sourceUrl && ( {event.sourceLabel ?? "Event website"} )}
{event.organizer && ( <>

Organizer

{event.organizer}

)} {event.collaborators && (

With {event.collaborators}

)}
))}
)) }