LSU Course Planner
Documentation
Open the planner

How the course planner works

The planner tracks your progress toward one or more programs, checks every requirement of each, and can lay out all your remaining courses across your semesters at the press of a button. This page explains where its data comes from, how it decides what counts toward what (including what your advisors have said), how it estimates workload, and the rules it always follows when it builds a plan. It is written for students, advisors and faculty who want the full picture.

Catalog year: 2026-27 (the newest; more can be added)Programs: Electrical Engineering, Biological Engineering (Standard and Pre-med), five Computer Science concentrations, Robotics minor
01

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.

02

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.

03

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 sayExample
a course counts as another courseEE 2130 counts as EE 2950 for Biological Engineering
a kind of course counts for a requirement4000-level EE design electives count as BE design electives
a kind of course does not countComputer Science senior design does not count for EE senior design
who may enrol in a courseMATH 2090 is not open to students whose only major is EE (a warning)
a prerequisite is skipped, or a requirement waivedSomething 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.

04

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:

TierFactorA 3-credit course is worthTypical courses
General education0.9×2.7 ptsGen-ed slots, free electives, English composition
Standard1.0×3.0 ptsMost major and science courses
Difficult1.5×4.5 ptsCalculus, Differential Equations, Organic Chemistry, Microbiology
Very difficult2.0×6.0 ptsStatics, 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.

CourseCounts asPoints for its 3 credits
Senior Design I2× its credits6.0 pts
Senior Design II3× its credits9.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.

05

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.

06

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.

07

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.

08

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:

Near-
absolute
Stay within credit bandsEach fall and spring semester should land between 12 and 18 credits, and each summer should stay at 6 or under. This carries so much weight that the auto-arranger treats it as all but mandatory, bending only if a plan truly cannot fit any other way.
Strong
Pre-med timing (pre-med track only)Medical school prerequisites should be finished by the end of Year 3 Fall, ahead of a typical MCAT. Anything that slips past that is penalized, and more so the later it lands.
Strong
Spread out design electivesNo more than one design elective per semester. The list of design electives on offer in any given semester is fairly short, so fitting several of them into one semester, around your core courses and among the ones that actually interest you, is often impractical.
Strong
Keep senior design in placeSenior design is pinned to its recommended year far more firmly than any other course, so the workload balancing cannot quietly drag the capstone earlier.
Moderate
Keep labs with their lecturesA lab and the lecture it pairs with should sit in the same semester rather than being split across two.
Moderate
Spread out gen-edsAll else equal, no more than one general education course per semester. This is the same idea as the design-elective rule, at half the strength (since there are many more gen-ed courses to choose from).
Moderate
Balance the workloadEven out the difficulty points across all of your semesters as far as the other priorities allow, and when summers are open, move load into them, since a summer is a natural place to take pressure off a packed year. This is the part that uses difficulty points rather than raw credits.
Gentle
Stay close to the recommended sequenceAll else equal, keep each course close to its flowchart position. This one is kept gentle on purpose, so the balancing above has room to work, and it only applies to courses whose order actually matters academically (the next sections get into which).
09

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.
10

Current settings

The table below lists the planner's main settings and the values they are set to now.

SettingCurrent valueWhat it controls
Difficult multiplier1.5×How much heavier a "difficult" course counts than its credit hours when balancing semesters.
Very difficult multiplier2.0×The same, for the hardest tier.
General-education weight0.9×How much lighter a gen-ed counts than its credit hours.
Senior design weight2× / 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/spring12–18The target credit range per regular semester.
Credit band, summer≤ 6The target cap per summer semester.
Design-elective spacing1 / semesterThe preferred maximum number of design electives in one semester.
Gen-ed spacing1 / semesterThe preferred maximum number of general education courses in one semester (enforced at half the strength of design electives).
Design-elective standing60 creditsCredits that must be earned before a design elective may be placed.
Pre-med targetYear 3 FallThe semester by which medical school prerequisites should be complete.
Maximum plan length6 yearsHow far out the planner allows a degree to stretch.
11

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.

12

Saving, sharing and old links

Your plan is saved in your browser as you edit it. Copy link puts the whole plan, including your own rules, into a link that reopens exactly that plan; it reads the link's contents, checks them, and refuses a link that looks truncated or damaged instead of showing part of a plan. Viewing someone's link never overwrites your own saved plan until you change something.

Every older link and bookmark still works. Links and saved plans from the earlier Biological Engineering / pre-med planner (?p=, ?data=) and from the Electrical Engineering / double-major planner (?plan=), the old ee.html and premed.html pages, and plans saved in your browser by either of them are converted when they are opened. A plan is carried over as it was: it keeps any problems it had, and the audit now shows requirements those planners did not check.

You can also link to a selection directly, for example index.html?programs=CSC-CYB, and More → Download backup saves the plan as a file.

13

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 under data/authored/<year>/programs/ for a program with no flowchart), run npm run build:data, and the program appears in the picker. Requirement nodes carry stable ids such as BE-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:presets recomputes 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."
}
14

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.