Enrollment Projections
Saved course-demand projections with visible historical evidence
Open Registration > Projections to inspect the latest validated demand artifacts for the pooled ABQ and EA course market. The page includes courses in the Gen Ed monitoring scope that passed the pressure screen plus the always-monitored FYEX and gateway list. Branch campuses are not included.
CEDAR publishes one projection per season — a Spring target and a Fall target — and neither replaces the other. Use Target term to choose which one you are reading; the page opens on the nearest one, and the scope stripe always names the term actually loaded. The two are not directly comparable as forecasts of the same thing: the nearer target can read the term that has already happened for its Fall deltas, while the further one carries the spine and the saturation floor alone. A further-out target therefore shows thinner evidence depth and no deltas — which means that evidence was unavailable, not that nothing changed.
The page opens to Always monitored. Use Target term, Course group, Department, Course, Stability, and Reliability to narrow the saved rows. The table expands to show every matching row and scrolls with the page. These controls do not fit or rerun a model.
Four blue boxes above the table each answer one question; the title says which:
| Box | Answers |
|---|---|
| Reading the table: what each column means | Every column, and how Reliability and Seat consistency read together |
| How a course’s plan is built, step by step | From last year’s registrations to sections, and why each step is there |
| Where forecast error comes from | Past misses by cause, measured on the loaded projection’s past forecasts |
| Which courses are on this page | The monitored list, the screen that adds near-full courses, and what is left out |
Below the table, Projection methods: the two forecasts, and how one is chosen describes the two forecasting methods. The Draft schedule tab has its own box, How the draft comparison works.
Saved enrollment projections. Saved Spring and Fall projections estimate ever-registered class-list demand for the pooled Albuquerque and online market as prior same-season demand, plus the students still waiting when that term was full on the first day of classes, moved by Fall enrollment changes where they beat the plain baseline on earlier aftcasts; planning sections are sized for projected registrations, which run above first-day enrollment by design, plus a labelled pressure bump for a course near full in every recent term (10%, or the students left waiting if more) unless its feeders just fell, and expected first-day enrollment is shown beside them.
Exclusions. Unmonitored courses and unsupported target seasons are outside this model. Shiny does not fit or select models during a session. Fall deltas use enrollments, never grades. A waiting student already on the market's class list on either campus is counted once, in the spine.
- Stability, depth, and reliability (the accuracy axis, High, Moderate, or Low) are reported as three separate axes, with seat consistency beside reliability; Unrated and None remain visible. Low reliability with steady seats is the forecast's own miss; with moving seats, most of the miss followed the schedule. Accuracy is the realised error of the selection rule replayed at each past term, so it is out of sample but still no guarantee of future coverage.
- First-day enrollment is reconstructed from registration status dates. A term whose class lists carry no status dates (Fall 2024 and Spring 2025) has no first-day count; it is not judged full or not full, and census is not substituted.
- Capacity counts as reached, and an overprojection as Capacity-bounded, when first-day enrollment filled 98% or more of the scheduled seats; seats pooled over many sections rarely fill to the last one.
- A saturated prior term with no retained waitlist rows reports the spine as its own floor; class lists retain waitlist rows only from Summer 2026, so the floor has almost no past-term aftcasts to be tested against.
- The waiting students are a lower bound on unserved demand, not an estimate of it; a student who gave up without joining a waitlist leaves no record.
- Sections are planned for registrations, not first-day seats, because running short of seats costs more than an empty one. In past aftcasts, first-day sizing fell short of the seats filled on day one 61% of the time and registration sizing 32%.
- The pressure bump is an allowance, not a measurement. A near-full course's registrations follow its seats, so its count understates demand; until retained waitlists can measure the shortfall, a flat 10% (or the students left waiting, if more) is added to the plan, never to the forecast or its accuracy.
- The definition version describes the metric. The bundle's separate model_version and schema_version identify the actual calculation and artifact format.
Reliability and seat consistency
Most past forecast error came from terms whose seats changed: a course that is always full registers about as many students as it has seats, so when the schedule adds or cuts seats, registrations follow and last year’s number misses. Reliability says how close past forecasts landed; Seat consistency says whether the seats held steady in those same terms. Read them together:
| Reliability | Seat consistency | What it means |
|---|---|---|
| High | any | Past forecasts landed close; plan to it. |
| Low | Low or Moderate | The misses came when the seats moved. They follow the schedule more than demand, so the projection holds if the seats hold. |
| Low | High | The course missed with steady seats. That miss is the forecast’s: look before planning to it. Flagged “Off 20%+ with steady seats”. |
| Moderate | any | Usable for planning, not for a precise seat count. |
| Unrated | — | Too few past forecasts to tell. |
The Where forecast error comes from box gives the breakdown for the loaded projection: how much error came from seat changes, from missing data, from full courses whose seats held, and from courses with room whose seats held. Only that last group tests the forecast of demand itself.
Compare to the draft schedule
The Draft schedule tab sets each course’s plan beside the target term’s schedule as it stands. The schedule is pulled from MyReports with the rest of the data, and the tab says when. It is a draft until registration settles: departments edit it, and the comparison follows at the next refresh.
Each course gets one verdict:
- Short of day-one seats: the draft has fewer seats than the students expected in the room when classes begin. Fix these first.
- Covers day one, short of the plan: only the planning margin or the pressure bump is missing.
- Covers the plan, or seats beyond the plan when it has more than a section to spare. In a course that is always full, spare seats are likely to fill: when such courses were given more seats, the new seats filled.
- Not in the draft schedule: a monitored course with a projection and no sections yet.
The table also shows the draft’s sections (with each campus’s share), its seats, the expected day-one seats, the planned registrations (including any pressure bump), the plan’s sections, the gap, students registered so far once registration opens, and the course’s reliability and seat consistency. Click a course for its full evidence. Until the target term’s schedule is in the data, the tab says so instead of showing a table.
Scenario: growing a population
The Scenario sub-tab answers a planning question the projection table cannot: if one group of students grows, what happens to the courses they take?
Pick a Population (for example, Health Professions (Clinical)), an annual growth rate, and a horizon, and the table shows each course year by year — as students, as sections needed, or as sections beyond what is scheduled today.
Three things to know before quoting a number from it:
- The first year is the published projection, unchanged, whatever growth rate you choose. Growth applies to the years after it.
- Later years are arithmetic, not forecasts. They carry no aftcast accuracy, because no aftcast has ever been run against a hypothetical. They answer “what would this course need if that growth happened”, not “what will happen”.
- Only the chosen population grows. Every other student in the course is held flat. That is why each row shows the population’s share of the course: 10% growth on a course that is 13% health-professions students is a 1.3% change in that course, not 10%.
A course whose population cohort is too small to scale is listed underneath with the reason rather than dropped, so a thin population reads as thin evidence and not as an absence of demand.
Seats are judged on the first day of classes
Whether a course was full is read on the first day of classes: the students holding a seat when classes began, reconstructed from each student’s registration and drop dates. A course counts as full when 98% or more of its seats were taken that day. Census comes on the 15th day of classes (the third Friday), after three weeks of drops, so a course that turned students away on day one can read 95% at census.
Sections are planned for registrations
Sections are planned for everyone expected to register, not only the students expected in their seats on the first day. Registrations run about 8% above the first day, because a student who drops early frees a seat someone else takes. That margin is deliberate: running short of seats costs more than an empty one. In past terms, planning for first-day seats alone would have fallen short of the seats actually filled on day one in 61% of courses; planning for registrations, in 32%. Expected first-day seats are shown beside the plan.
The pressure bump
A course that is always full turns students away, so last year’s registrations undercount what it would draw. When near-full courses were given 10% or more seats, the new seats filled; when their seats were held flat, registrations stayed flat; when seats were cut, registrations fell by the cut.
So a course near full on the first day in every recent same-season term with a first-day count (at least two of the last three) is planned for 10% more than it registered last time, or for the students left waiting if that is more. It is not bumped if its feeder courses’ enrollment fell 5% or more in the term just finished. When that term has not happened yet, the feeder check cannot run and the course’s note says to recheck.
The bump is an allowance, not a measurement, and it is always shown separately:
- The Pressure bump column gives the registrations added and, beneath them, the sections that adds.
- The line above the table totals what the bump adds across the courses shown.
- A course’s detail says why it got the bump, or why not.
- The registration forecast and its accuracy never include it.
As waitlists accumulate, the flat 10% will be replaced by a measured allowance.
Some terms’ class lists were exported without status dates, so their first day is unknown; Admin > Data & Usage lists which. Those terms show a dash and are never judged full or not full; they are not filled in from census.
Below the table, expand Projection methods for the method map. There are two candidates:
- Prior same-season, the spine and the default: last comparable season’s class-list demand. When the schedule holds still it is within about 6%.
- Prior same-season + floor + Fall deltas: the same number, plus the students still waiting for a seat at the end of that term when it was saturated (90% or more of the seats filled on the first day), plus the change in the course’s own enrollment and in its feeder courses’ enrollment during the term just finished, each scaled by the share that historically carried into this course. It uses Fall enrollments, not grades, because grades are not posted when the schedule is built.
Prior same-season is the default for every course. The adjusted candidate replaces it only after beating it by a margin on earlier aftcast terms the two share. The rule is replayed at every past term with only the evidence available then, so the accuracy you see is what that rule would actually have delivered, not the fit of the winner on the terms that chose it. A course’s detail gives the evidence behind its current method.
The Only courses that need a look box narrows the course table to rows that were full on the first day last term, moved sharply in the term just finished, or whose past forecasts were more than 20% off.
The table is sized to fit a laptop window:
| Column | Meaning |
|---|---|
| Course | The course, with its department beneath. |
| Sections | Registrations plus any pressure bump, divided by the section size (the target schedule’s average when it exists, otherwise the recent median), rounded up. “Plan at least” when last term filled its seats. |
| Pressure bump | Registrations added to the plan because the course was near full on the first day in every recent same-season term, and beneath them the sections that adds. A dash means no bump; the course’s detail says why. |
| Registrations | Everyone expected to sign up, including students who drop before or after classes begin: the class-list demand the model forecasts, and the number sections are planned for. Beneath it, the range past forecasts for this course usually landed in and the change on the last same-season term’s registrations. |
| Seats (day 1) | Students expected to hold a seat when classes begin: registrations times the share of this course’s registrants still enrolled on the first day in recent terms. Context, not the planning number. |
| First day / sections | The last four same-season terms: students enrolled on the first day over the sections scheduled. A dash means the course was not offered, or the first day cannot be reconstructed; hover for which. |
| Flags | Plain-language reasons to look: near full last term (90% of seats filled on the first day), students left waiting, a big change in the term just finished, a volatile history, past forecasts more than 20% off (“with steady seats” or “as seats moved”), or the two candidates disagreeing. |
| Stability | Stable, Moderate, Volatile, or Unrated: whether the course is predictable from its own history at all, measured with no model |
| Depth | Deep, Moderate, Thin, or None: how many comparable rolling-selection aftcasts stand behind the published method |
| Reliability | High, Moderate, Low, or Unrated: how close past forecasts for this course landed (within 10%, 10 to 20%, more than 20%), each made with only the evidence available then |
| Seat consistency | High, Moderate, Low, or Unrated: how steady the course’s seats were in those same past terms (held within 10% every time, moved once, moved more) |
Clicking a row opens the course’s evidence in a window over the table; close it to return to the same place in the list. The evidence opens with one sentence that says what to plan and why, then the selected method and why it was selected, the three axes, seat consistency and what it says beside reliability, why the course is listed, the pressure bump, the planning recommendation, and the floor, Fall delta, regime, and capacity checks. The method plot, movement diagnostic, and candidate table sit under Analyst detail.
The plot compares every forecasting method against historical ever-registered, first-day, census, and final/last-day enrollment. It is restricted to the selected target’s term type: Spring is compared only with prior Spring terms, Fall only with Fall, and Summer only with Summer. Method selection, WAPE, and the accuracy axis are judged against ever-registered demand; first-day, census and final enrollment provide lifecycle context rather than alternative accuracy targets.
The detail also shows the last four same-season terms’ registrations, first-day enrollment, census, sections, capacity, first-day fill, the method the selection rule would have published that term and its aftcast, signed error, capacity-bounded status, and potential explanation. Three rows describe the adjustment whichever candidate was published: Saturation floor (whether the prior term was full on the first day, the waitlist left on it, and what happened the last times saturated courses in this market were given more seats), Fall deltas (the enrollment changes and carry-through rates behind the repeat and feeder terms), and Regime check, which flags a course whose own enrollment in the term just finished moved 25% or more from the year before. The check changes nothing; it says look. Its full What this means text separates historical fit from structural caveats: a method can fit observed enrollment consistently while a seat ceiling still prevents that fit from proving unconstrained demand.
Expand Enrollment movement diagnostic in the course detail to compare each same-season enrollment movement with scheduled capacity and three possible upstream indicators from the preceding term: enrolled-student population, pooled ABQ/EA market population, and first-semester freshman population. These are distinct enrolled students in the class-list data, not official institutional headcount measures. The diagnostic also reports the course’s canonical DFW count/rate in that preceding term and, after the fact, how many of those students enrolled in the same course in the following term. A DFW source term beyond the graded data edge is shown as unavailable rather than calculated from partial grades.
These comparisons are clues, not attribution. Capacity may have followed anticipated demand; university growth may affect courses unevenly; and the next-term repeater count is known only after that next term begins. The signals remain diagnostic because leakage-safe testing did not justify adding separate incoming-freshman or DFW forecasting methods.
The context stripe states the target, historical data window, pooled campus scope, and model version. Hover the information icon beside the model version to see its Git state. The saved artifact carries hashes and the exact normalized model source for analyst audit and future comparisons.
Capacity-bounded means first-day enrollment filled 98% or more of the scheduled seats that term (a few empty seats spread over many section times still leave the course full to a student choosing one), so an estimate above the observed ever-registered demand cannot be fully judged as an error. A term whose first day cannot be reconstructed is never capacity-bounded. It does not mean zero error, and ever-registered demand above capacity on its own does not make a term capacity-bounded: seats that turned over were never all occupied at once. Potential explanation identifies measured changes that coincide with a miss; it is not a causal claim.
The page is a planning aid rather than an automatic scheduling decision. Review stability, depth, reliability, seat consistency, capacity status, and recent evidence before acting on a section recommendation.