Programs and course data
The planner is not built around one degree. It reads a list of programs (majors, minors, concentrations and tracks) from data files, and you choose any combination: a single major, a double major, a major and a minor. Each program has a colour, a progress bar, and a section in the degree audit. Adding a new program to the planner means adding a data file; no code changes.
Every program is tied to a catalog year, because students follow the catalog of the year they entered. The newest year is the default. Program structure (what each degree requires, and the recommended semester-by-semester plan) comes from the official College of Engineering flowcharts for that year.
How much of the data is verified
Each course record says where it came from. A record can be verified against an LSU source (the catalog or Workday), it can come from the previous planner's hand-typed data (kept as a stand-in and marked unverified), or it can be a stub known only from a flowchart. For a stub the planner does not have the prerequisites yet; it says requisites not obtained yet and does not check them. It never treats missing prerequisite data as "no prerequisites". The banner under the program card and the About the course data dialog show the current numbers, and every course's details end with a Data line.
Why so much is still unverified
The General Catalog site does not allow automated access, so verifying every course means either a data feed from LSU or checking pages one at a time. The planner is built so that course data can be replaced or upgraded file by file as it is verified; nothing about the rest of the planner changes when that happens.
Requirements and the degree audit
The audit turns each program into a list of individual requirements: one per required course, one per elective slot, one per breadth course, and so on. It then matches the courses in your plan to those requirements.
- A course fills one requirement per program. Taking a course once cannot satisfy two requirements of the same program. Across programs, one course can count toward each, unless a rule says otherwise. That is how a double major shares Calculus and Chemistry.
- The required course itself always wins. A course that is exactly the requirement claims it first, so a broad elective rule can never take a course away from the requirement it belongs to. The result does not depend on the order requirements are listed in.
- Placeholders. A dashed tile such as "Design Elect" stands for a course you have not chosen yet. It fills its slot in the audit as still to choose, not as done. Choose course replaces it with a real course, and the choice is marked your choice.
- Placeholders can count for another program. If everything a placeholder could become would also be accepted by a slot in your other program (the same kind of gen-ed, or a course an advisor rule accepts), it counts there too and the audit marks it shared.
- Breadth needs enough groups, not just enough courses. The EE breadth electives need courses from at least four of the five groups; unresolved placeholders are reported as unresolved, not counted as satisfied.
A badge on each tile shows every program it counts toward. A § on the badge means the course counts through an advisor rule, a shared placeholder or your own choice; click it to see exactly which and where it came from.
Advisor and custom rules
Some facts that decide what you can take and what counts are not in the General Catalog. They live in Workday, in department policy, or with advisors. For example, a course can count as credit toward another course even though you cannot enrol in it, and a department can accept another department's senior design. The planner keeps these facts as rules that are applied while it checks prerequisites and audits requirements. Rules never change the course data, and anything a rule changes is marked rule in your plan.
| A rule can say | Example |
|---|---|
| a course counts as another course | EE 2130 counts as EE 2950 for Biological Engineering |
| a kind of course counts for a requirement | 4000-level EE design electives count as BE design electives |
| a kind of course does not count | Computer Science senior design does not count for EE senior design |
| who may enrol in a course | MATH 2090 is not open to students whose only major is EE (a warning) |
| a prerequisite is skipped, or a requirement waived | Something an advisor approved for you personally |
| an advisory note | "EE may not accept BE senior design; plan on EE 4810/4820" |
Every rule shows its source and how sure we are
A rule carries a confidence (confirmed, reported or unverified), the role of who said it (never a name) and the date, and any open question. The Advisor and custom rules section under the audit lists every rule that applies to your programs. Guidance that is ambiguous is stored as unverified rather than guessed.
Your own rules
For something only your own advisor approved (a substitution, a waived prerequisite, credit for a particular course), use Add a rule. Your rules stay in your browser and travel inside the links you share; they are always labelled as yours and never change the shared data or anyone else's plan. You can export and import them as a file.
Credit hours vs. difficulty points
Every course in the planner carries two numbers. One of them is official and on display. The other works quietly in the background, and it is the reason the auto-arrange feature can do anything useful.
Credit hours are the official figure. They count toward the credits your programs require, and they are what the progress bars and the per-semester credit totals report.
Difficulty points are an estimate of how much work a course is, which is a different question from how many credits it carries. A three-credit thermodynamics course and a three-credit elective look identical on a transcript, but they do not take the same toll on a given week. Difficulty points let the planner even out that real workload across your semesters instead of just evening out credit counts. You never see a difficulty-point number anywhere in the tool. What you see is the balanced plan it produces, plus a plain difficult or very difficult label on the heavier courses.
A course's difficulty points are its credit hours times a factor that depends on its tier:
| Tier | Factor | A 3-credit course is worth | Typical courses |
|---|---|---|---|
| General education | 0.9× | 2.7 pts | Gen-ed slots, free electives, English composition |
| Standard | 1.0× | 3.0 pts | Most major and science courses |
| Difficult | 1.5× | 4.5 pts | Calculus, Differential Equations, Organic Chemistry, Microbiology |
| Very difficult | 2.0× | 6.0 pts | Statics, Dynamics, Thermodynamics, Fluid Mechanics, the calculus-based physics sequence |
General-education courses sit a little under a full credit hour for two reasons. They tend to be lighter at the same credit count, and the small discount also lets the auto-arranger tell a gen-ed apart from a major course of the same weight when it has to break a tie. The tier of each course is recorded in the course data and assigned by hand.
Senior design is weighted on purpose
Senior design gets a higher weight that is set by hand rather than read off the tiers above. Capstone design is mostly project work, and the team meetings, prototyping, and testing that go into it eat up far more time than three credit hours would suggest, most of it outside of class. To leave room for that, the planner counts the first course of a senior design sequence as twice its credits and the second as three times its credits, which pushes the auto-arranger to keep the rest of the senior year on the lighter side. Which courses form a sequence is part of each program's data.
| Course | Counts as | Points for its 3 credits |
|---|---|---|
| Senior Design I | 2× its credits | 6.0 pts |
| Senior Design II | 3× its credits | 9.0 pts |
Because these weights are plain multiples of credits, senior design does not belong to a difficulty tier and carries no difficulty label. The extra weight is just a way to nudge the auto-arranger, not a claim that the course is academically harder than anything else in the curriculum.
The recommended plans
For a single program the planner starts from the department's recommended eight-semester sequence, matching the official flowchart. From there, you can rearrange courses by hand, mark off work you have already finished (AP and transfer credit included, which are automatically marked as completed), and add summer semesters or a fifth and sixth year.
With two programs, the advisor rules shrink the plan
For a double major the recommended plan is not the two flowcharts stacked together. The planner merges them, then tries dropping each course or placeholder in turn and keeps the drop only when the audit still finds every requirement of both programs filled and no course gets a new prerequisite problem. With the current rules, the Biological Engineering + Electrical Engineering plan:
- needs one senior design sequence (EE 4810/4820), because the BE department accepts EE senior design;
- drops EE 2950, because the BE department substitutes EE 2130;
- counts the EE design electives as the BE design electives, and shares gen-ed placeholders between the two programs;
- lets any other course stand in for the BE elective.
Each drop is recorded with the rule that justified it. The technical elective is not dropped: BE accepts "any STEM course", but the STEM list lives in Workday and has not been obtained, so the planner will not guess. As more of the data is verified, plans shrink automatically. The result is then balanced by the same optimizer as the Auto-arrange button; the default combination is pre-computed so the planner opens instantly on it.
The recommended sequence is also the layout the auto-arranger leans back toward when nothing else argues for moving a course. The rest of this page is about what the auto-arranger does.
The auto-arranger
The Auto-arrange button takes every course you have not yet finished and drops it into the semesters you have open. It does not shuffle the flowchart or fall back on rules of thumb. It works the whole plan out from scratch, searching through the valid arrangements for the one that scores best against the priorities laid out below.
It works from wherever your plan already is. Anything you have marked complete stays put and counts as a prerequisite for what comes after it, and any semester you have opened is fair game, summers and extra years included. From there, it treats the job as two layers: a set of rules it will not break, and a set of preferences it balances as well as it can. Advisor rules shape both: a course an advisor says can stand in for a prerequisite satisfies it here too.
Check off your completed semesters first
The auto-arranger will place courses into any open semester, including ones you have already been through. Before you run it, make sure every semester you have finished is fully checked off, with all of its courses marked complete. That tells the auto-arranger those semesters are done, so it leaves them alone instead of dropping new courses into them.
Rules it never breaks
These are hard constraints. The auto-arranger will not return a plan that violates any of them:
- Prerequisites. A course is always placed in a later semester than every prerequisite it requires. Where a prerequisite reads "credit or registration in", the course may be taken in the same semester.
- Corequisites. A course is placed in the same semester as its corequisite, or later.
- Semester availability. A course only lands in a semester it is actually offered in, whether that is fall, spring, or summer. Offering terms are labelled verified, curated (read from a flowchart) or assumed.
- Sequences. Courses a program declares as back to back, such as Senior Design I and II, are always in consecutive semesters, fall then the following spring.
- Junior/senior standing for design electives. A design elective is only placed once at least 60 credits have been earned in earlier semesters (counting AP and transfer credit).
Because these are enforced directly, the resulting plan is always internally valid. The same checks that flag a problem when you drag a course into the wrong place come up clean after an auto-arrange. Prerequisites the data could not interpret are never enforced; the course is listed under Requisites not checked instead.
What it balances, in order
Everything that is a preference rather than a hard rule is rolled into a single score. A plan picks up penalty points whenever it falls short of one of these preferences, weighted by how much that preference matters, and the auto-arranger hunts for the valid plan with the lowest total. In practice, that sets up a priority order: when two preferences pull in opposite directions, the stronger one wins. Strongest first:
absolute
How the optimization works
Laying out a few dozen courses across up to about a dozen semesters opens up an astronomical number of possible arrangements, far too many to check one at a time. Rather than guess, the planner solves the problem exactly, with a method called mixed-integer linear programming.
The whole problem gets turned into math. Every question of the form "does this course go in this semester?" becomes a yes or a no, written as a 1 or a 0. The hard rules become equations and inequalities those answers have to satisfy, and the scorecard above becomes a single number to drive as low as possible. A solver then chews through all of it. The planner uses HiGHS, a well-regarded open-source optimizer. It does not look at every arrangement one by one. It uses mathematical bounds to rule out entire families of options that cannot beat the best one it has already found, throwing them out in bulk, and that is how an otherwise impossible search finishes in a few seconds (a couple of dozen for a double major).
A few things follow from doing it this way:
- It is effectively optimal. The solver stops as soon as it can prove the plan is within a small margin, about 5%, of the theoretical best. That trades a little quality for a lot of speed, and for arranging courses, the result is indistinguishable from optimal.
- It is deterministic. The same starting plan always produces the same result. Nothing about it is random.
- It handles a late start or a fifth year. The "stay close to the recommended sequence" preference looks only at where a course sits relative to the rest of your plan, not at the calendar year it falls in. If you begin partway through the sequence or spread the degree over five or six years, the whole thing can slide together at no cost. Only real reorderings get charged.
Current settings
The table below lists the planner's main settings and the values they are set to now.
| Setting | Current value | What it controls |
|---|---|---|
| Difficult multiplier | 1.5× | How much heavier a "difficult" course counts than its credit hours when balancing semesters. |
| Very difficult multiplier | 2.0× | The same, for the hardest tier. |
| General-education weight | 0.9× | How much lighter a gen-ed counts than its credit hours. |
| Senior design weight | 2× / 3× | The first course of a senior design sequence counts as twice its credits and the second as three times, set directly to keep the rest of the senior year lighter. |
| Credit band, fall/spring | 12–18 | The target credit range per regular semester. |
| Credit band, summer | ≤ 6 | The target cap per summer semester. |
| Design-elective spacing | 1 / semester | The preferred maximum number of design electives in one semester. |
| Gen-ed spacing | 1 / semester | The preferred maximum number of general education courses in one semester (enforced at half the strength of design electives). |
| Design-elective standing | 60 credits | Credits that must be earned before a design elective may be placed. |
| Pre-med target | Year 3 Fall | The semester by which medical school prerequisites should be complete. |
| Maximum plan length | 6 years | How far out the planner allows a degree to stretch. |
Other design decisions
Gen-eds and free electives float freely
General education slots, free electives and the English-composition courses are not tied to their flowchart position. Where they fall in the sequence does not carry the academic meaning that the core science and engineering chain does, so the auto-arranger can put them wherever balances the plan best. It still respects their hard rules, like the prerequisite tying the two English courses together. Every other required course, and the upper-level slots (breadth, design and technical electives), stays gently near its recommended place in the sequence instead, so an upper-level elective is not placed in a freshman semester and a sophomore course does not drift to the last semester.
Summers are relief valves
The auto-arranger never puts courses into a summer on its own. Opening a summer semester is a deliberate move on your part. Once one is open, though, it becomes the preferred place to offload work, which is what makes genuinely lighter fall and spring semesters possible. With no summer semester at all, the regular semesters are already close to full just to fit a complete degree, so there is not much room to lighten any single one of them.
Tracks, such as Pre-med
A program can have tracks. The Pre-med track of Biological Engineering carries a different course set: it adds the medical school prerequisites and uses Orgo II and its lab for the technical elective and the elective, and it brings in the timing preference described above so those prerequisites land before the MCAT window. Switching tracks keeps your work on each, and any course you have checked off is shared across both.
Difficulty flags you do see
Although the point values stay behind the scenes, each course's tier still shows up as a small flag on difficult and very difficult courses, and each semester shows a count of how many heavy courses it holds. That gives you a quick read on whether a semester is loaded with hard material.
Adding a program, a rule or a year
Everything the planner knows lives in data/, and the checks in npm test catch a mistake before it ships. You need Node.js only for these developer tools; the site itself is plain files.
- A program. Add its transcription under
tools/flowcharts/(or a hand-authored file underdata/authored/<year>/programs/for a program with no flowchart), runnpm run build:data, and the program appears in the picker. Requirement nodes carry stable ids such asBE-BSBE/senior-design/BE4390; rules point at them. - A rule. Add an entry to a pack in
data/rules/<year>/with a type, a scope (programs and catalog years), a confidence, a role-level source and a date, then add a test. Rules that point at a requirement or course that does not exist fail the checks. - Course data. Records under
data/catalog/<year>/(read from the catalog or Workday) replace the stand-ins when the dataset is rebuilt; nothing else changes. - A catalog year. A new
data/<year>/folder appears in the year selector once the manifest is rebuilt. - Pre-computed plans.
npm run build:presetsrecomputes the balanced plans for the common combinations; a test fails if one is stale.
{
"id": "be-ee2950-via-ee2130",
"type": "equivalent",
"scope": { "programs": ["BE-BSBE"], "catalogYears": ["2026-2027"] },
"course": "EE2130", "satisfies": "EE2950",
"confidence": "confirmed",
"source": { "kind": "advisor", "label": "BE undergraduate program director (email)", "recordedOn": "2026-09-28" },
"note": "The BE department substitutes the EE circuits course for EE 2950."
}
Scope, privacy & caveats
This is an advising aid, not your official degree audit
The planner reflects the recommended curriculum and the rules above, but it is not a substitute for the General Catalog or a degree audit. Confirm the details that matter, like exact requirement options, course substitutions, and what is actually being offered, with your advisor and the catalog. Advisor rules are only as reliable as their confidence label says.
Everything stays on your device
The planner runs entirely in your browser. No plan is ever sent to a server, and the auto-arranger does all its work on your own machine. Your plan is saved locally, and you can share it with an advisor through a link that carries the entire plan inside the URL. Nothing is stored on our end.
The difficulty tiers are a rough guide
The difficulty tiers are loosely based on what students have reported over the years. They are a rough guide to relative workload, not a precise prediction of how hard any one course will turn out to be for any one student.
Originally developed for the College of Engineering by Dr. Bruno Rego.