Add project files including OpenSpec configuration, Claude skills/commands, and specialization evaluation document.
395 lines
21 KiB
Markdown
395 lines
21 KiB
Markdown
# Specialization Evaluation: Problem, Constraints & Approach
|
||
|
||
## 1. Problem Overview
|
||
|
||
The J27 EMBA program offers **46 elective courses** organized into **12 elective sets** across three terms (Spring, Summer, Fall). Students select **one course per set** — 12 electives total, 30 credits. Each course is worth **2.5 credits**.
|
||
|
||
The program defines **14 specializations**. A specialization is earned by accumulating **9 or more credits** (i.e., at least 4 qualifying courses) in that specialization. Courses qualify for zero or more specializations, as indicated in a mapping matrix.
|
||
|
||
The evaluation problem: given a student's course selections (partial or complete), determine which specializations are achieved, which remain achievable, and how to optimally allocate credits.
|
||
|
||
### Why This Is an Optimization Problem
|
||
|
||
Credits **do not duplicate** across specializations. When a course qualifies for multiple specializations, its 2.5 credits must be **allocated** (potentially split) among them. This transforms the evaluation from a simple counting exercise into a **credit allocation optimization problem**: given selected courses, find the allocation of credits to specializations that maximizes the number of specializations achieved (reaching the 9-credit threshold).
|
||
|
||
---
|
||
|
||
## 2. Data Model
|
||
|
||
### 2.1 Elective Sets
|
||
|
||
| # | Set Name | Term | Courses |
|
||
|---|----------|------|---------|
|
||
| 1 | Spring Elective Set 1 | Spring | 3 |
|
||
| 2 | Spring Elective Set 2 | Spring | 4 |
|
||
| 3 | Spring Elective Set 3 | Spring | 4 |
|
||
| 4 | Spring Elective Set 4 | Spring | 4 |
|
||
| 5 | Spring Elective Set 5 | Spring | 4 |
|
||
| 6 | Summer Elective Set 1 | Summer | 3 |
|
||
| 7 | Summer Elective Set 2 | Summer | 4 |
|
||
| 8 | Summer Elective Set 3 | Summer | 4 |
|
||
| 9 | Fall Elective Set 1 | Fall | 4 |
|
||
| 10 | Fall Elective Set 2 | Fall | 4 |
|
||
| 11 | Fall Elective Set 3 | Fall | 4 |
|
||
| 12 | Fall Elective Set 4 | Fall | 4 |
|
||
|
||
Students select exactly one course from each set. Spring Set 1 and Summer Set 1 offer the same three courses (different term, same choices).
|
||
|
||
### 2.2 Specializations
|
||
|
||
1. Banking
|
||
2. Brand Management
|
||
3. Corporate Finance
|
||
4. Entertainment, Media, and Technology
|
||
5. Entrepreneurship and Innovation
|
||
6. Finance
|
||
7. Financial Instruments and Markets
|
||
8. Global Business
|
||
9. Leadership and Change Management
|
||
10. Management
|
||
11. Marketing
|
||
12. Management of Technology and Operations
|
||
13. Sustainable Business and Innovation
|
||
14. Strategy
|
||
|
||
### 2.3 Course-Specialization Matrix
|
||
|
||
Each cell contains the marker type: **`■`** (standard qualifying), **`S1`** (Strategy tier 1), **`S2`** (Strategy tier 2), or blank (does not qualify).
|
||
|
||
Abbreviations for column headers:
|
||
**BNK** = Banking, **BRM** = Brand Management, **CRF** = Corporate Finance, **EMT** = Entertainment/Media/Technology, **ENT** = Entrepreneurship/Innovation, **FIN** = Finance, **FIM** = Financial Instruments/Markets, **GLB** = Global Business, **LCM** = Leadership/Change Management, **MGT** = Management, **MKT** = Marketing, **MTO** = Management of Technology/Operations, **SBI** = Sustainable Business/Innovation, **STR** = Strategy
|
||
|
||
#### Spring Elective Set 1
|
||
|
||
| Course | BNK | BRM | CRF | EMT | ENT | FIN | FIM | GLB | LCM | MGT | MKT | MTO | SBI | STR |
|
||
|--------|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|
|
||
| Global Immersion Experience II | | | | | | | | ■ | | | | | | |
|
||
| Collaboration, Conflict and Negotiation | | | | | | | | | ■ | ■ | | | | |
|
||
| Conquering High Stakes Communication | | | | | | | | | ■ | | | | | |
|
||
|
||
#### Spring Elective Set 2
|
||
|
||
| Course | BNK | BRM | CRF | EMT | ENT | FIN | FIM | GLB | LCM | MGT | MKT | MTO | SBI | STR |
|
||
|--------|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|
|
||
| Consumer Behavior | | ■ | | | | | | | | | ■ | | | |
|
||
| The Business of Health & Medical Care | | | | | | | | | | | | | | S2 |
|
||
| Human Rights and Business | | | | | | | | ■ | | | | | ■ | |
|
||
| The Financial Services Industry | ■ | | ■ | | | ■ | ■ | | | | | | | |
|
||
|
||
#### Spring Elective Set 3
|
||
|
||
| Course | BNK | BRM | CRF | EMT | ENT | FIN | FIM | GLB | LCM | MGT | MKT | MTO | SBI | STR |
|
||
|--------|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|
|
||
| Mergers & Acquisitions | | | ■ | | | ■ | | | ■ | | | | | S1 |
|
||
| Digital Strategy | | | | ■ | | | | | | | | ■ | | S2 |
|
||
| Managing a High Tech Company: The CEO Perspective | | | | ■ | | | | | | ■ | | ■ | | S2 |
|
||
| Analytics & Machine Learning for Managers | | | | | | | | | | | | ■ | | |
|
||
|
||
#### Spring Elective Set 4
|
||
|
||
| Course | BNK | BRM | CRF | EMT | ENT | FIN | FIM | GLB | LCM | MGT | MKT | MTO | SBI | STR |
|
||
|--------|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|
|
||
| Foundations of Fintech | | | | | | ■ | | | | | | | | |
|
||
| Sustainability for Competitive Advantage* | | | | | | | | | ■ | | | | ■ | S1 |
|
||
| Pricing | | ■ | | | | | | | | | ■ | ■ | | |
|
||
| Foundations of Entrepreneurship* | | | | | ■ | | | | | ■ | | | | S1 |
|
||
|
||
#### Spring Elective Set 5
|
||
|
||
| Course | BNK | BRM | CRF | EMT | ENT | FIN | FIM | GLB | LCM | MGT | MKT | MTO | SBI | STR |
|
||
|--------|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|
|
||
| Corporate Finance | | | ■ | | | ■ | | | | | | | | |
|
||
| Consulting Practice: Process and Problem Solving | | | | | | | | | | ■ | | | | S1 |
|
||
| Global Strategy | | | | | | | | ■ | | ■ | | | | S1 |
|
||
| Customer Insights | | ■ | | | | | | | | | ■ | | | |
|
||
|
||
#### Summer Elective Set 1
|
||
|
||
| Course | BNK | BRM | CRF | EMT | ENT | FIN | FIM | GLB | LCM | MGT | MKT | MTO | SBI | STR |
|
||
|--------|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|
|
||
| Global Immersion Experience II | | | | | | | | ■ | | | | | | |
|
||
| Collaboration, Conflict and Negotiation | | | | | | | | | ■ | ■ | | | | |
|
||
| Conquering High Stakes Communication | | | | | | | | | ■ | | | | | |
|
||
|
||
#### Summer Elective Set 2
|
||
|
||
| Course | BNK | BRM | CRF | EMT | ENT | FIN | FIM | GLB | LCM | MGT | MKT | MTO | SBI | STR |
|
||
|--------|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|
|
||
| Managing Growing Companies | | | | | ■ | | | | ■ | ■ | | | | S1 |
|
||
| Social Media and Mobile Technology | | ■ | | ■ | | | | | | | ■ | | | |
|
||
| Leading in the Age of AI | | | | | | | | | ■ | ■ | | ■ | | |
|
||
| Business Drivers | | | | | | | | | | | | | | S1 |
|
||
|
||
#### Summer Elective Set 3
|
||
|
||
| Course | BNK | BRM | CRF | EMT | ENT | FIN | FIM | GLB | LCM | MGT | MKT | MTO | SBI | STR |
|
||
|--------|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|
|
||
| Valuation | ■ | | ■ | | | ■ | ■ | | | | | | | |
|
||
| Entertainment and Media Industries* | | | | ■ | | | | | | | ■ | | | S2 |
|
||
| Advanced Corporate Strategy | | | | | | | | | | ■ | | | | S1 |
|
||
| Power and Professional Influence | | | | | | | | | ■ | ■ | | | | |
|
||
|
||
#### Fall Elective Set 1
|
||
|
||
| Course | BNK | BRM | CRF | EMT | ENT | FIN | FIM | GLB | LCM | MGT | MKT | MTO | SBI | STR |
|
||
|--------|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|
|
||
| Operations Strategy | | | | | | | | | | | | ■ | | |
|
||
| Private Equity | ■ | | ■ | | | ■ | ■ | | | | | | | S2 |
|
||
| Managing Change | | | | | | | | | ■ | ■ | | | | S2 |
|
||
| Social Entrepreneurship | | | | | ■ | | | | | ■ | | | ■ | |
|
||
|
||
#### Fall Elective Set 2
|
||
|
||
| Course | BNK | BRM | CRF | EMT | ENT | FIN | FIM | GLB | LCM | MGT | MKT | MTO | SBI | STR |
|
||
|--------|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|
|
||
| Real Estate Investment Strategy | | | | | | ■ | ■ | | | | | | | |
|
||
| Decision Models and Analytics | | | | | | | | | | ■ | | ■ | | |
|
||
| Behavioral Finance and Market Psychology | ■ | | ■ | | | ■ | ■ | | | | | | | |
|
||
| Crisis Management | | | | | | | | | ■ | ■ | | | | |
|
||
|
||
#### Fall Elective Set 3
|
||
|
||
| Course | BNK | BRM | CRF | EMT | ENT | FIN | FIM | GLB | LCM | MGT | MKT | MTO | SBI | STR |
|
||
|--------|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|
|
||
| Corporate Governance | | | | | | | | | ■ | ■ | | | ■ | S1 |
|
||
| Climate Finance | ■ | | ■ | | | ■ | ■ | ■ | | | | | ■ | |
|
||
| Emerging Tech and Business Innovation | | ■ | | ■ | ■ | | | | | | | ■ | | S2 |
|
||
| Technology, Innovation, and Disruption in Media | | ■ | | ■ | | | | | | | ■ | ■ | | |
|
||
|
||
#### Fall Elective Set 4
|
||
|
||
| Course | BNK | BRM | CRF | EMT | ENT | FIN | FIM | GLB | LCM | MGT | MKT | MTO | SBI | STR |
|
||
|--------|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|
|
||
| Turnaround, Restructuring and Distressed Investments | ■ | | ■ | | | ■ | ■ | | | | | | | |
|
||
| The Financial Services Industry | ■ | | ■ | | | ■ | ■ | | | | | | | |
|
||
| Game Theory | | | | | | | | | | ■ | | | | S1 |
|
||
| Brand Strategy* | | ■ | | | | | | | | | ■ | | | |
|
||
|
||
### 2.4 Specialization Reachability Summary
|
||
|
||
Maximum credits available per specialization (counting only one course per set):
|
||
|
||
| Specialization | Qualifying Courses | Across Sets | Max Credits |
|
||
|---|---|---|---|
|
||
| Management | 16 | 11 | 27.5 |
|
||
| Strategy | 17 | 9 | 22.5 |
|
||
| Leadership and Change Management | 12 | 9 | 22.5 |
|
||
| Finance | 11 | 9 | 22.5 |
|
||
| Corporate Finance | 9 | 8 | 20.0 |
|
||
| Marketing | 7 | 7 | 17.5 |
|
||
| Banking | 7 | 6 | 15.0 |
|
||
| Brand Management | 7 | 6 | 15.0 |
|
||
| Financial Instruments and Markets | 8 | 6 | 15.0 |
|
||
| Management of Technology and Operations | 9 | 6 | 15.0 |
|
||
| Global Business | 5 | 5 | 12.5 |
|
||
| Entertainment, Media, and Technology | 6 | 4 | 10.0 |
|
||
| Entrepreneurship and Innovation | 4 | 4 | 10.0 |
|
||
| Sustainable Business and Innovation | 5 | 4 | 10.0 |
|
||
|
||
The "Across Sets" column is the binding constraint because a student can take at most one course per set. The three most constrained specializations (EMT, E&I, SBI) have qualifying courses in only 4 sets, giving exactly 10.0 credits of headroom above the 9.0 threshold — any course taken for a different purpose leaves no room for error.
|
||
|
||
---
|
||
|
||
## 3. Constraints
|
||
|
||
### 3.1 Credit Non-Duplication
|
||
|
||
Each course contributes exactly **2.5 credits total**. These credits must be **allocated** among the specializations the course qualifies for. Credits may be split fractionally (e.g., 1.5 to Banking + 1.0 to Corporate Finance), but the sum allocated from any single course must not exceed 2.5.
|
||
|
||
This is the core constraint that makes the problem non-trivial. Without it, a course qualifying for 4 specializations would contribute 2.5 credits to each — but that would mean a single course generates 10 credits of value, which the program does not allow.
|
||
|
||
**Implication:** A student with 12 courses has exactly **30 credits** to distribute. Achieving `n` specializations requires at least `9n` credits allocated, so the theoretical maximum is **3 specializations** (27 credits), with 3 credits remaining. Achieving 4 would require 36 credits — more than the 30 available.
|
||
|
||
### 3.2 Required Courses
|
||
|
||
Four courses are marked with `*`, indicating they are **required for a particular specialization**. A specialization cannot be earned unless its required course is among the student's selections, regardless of credit totals.
|
||
|
||
| Required Course | Set | Required For |
|
||
|---|---|---|
|
||
| Sustainability for Competitive Advantage* | Spring Set 4 | Sustainable Business and Innovation |
|
||
| Foundations of Entrepreneurship* | Spring Set 4 | Entrepreneurship and Innovation |
|
||
| Entertainment and Media Industries* | Summer Set 3 | Entertainment, Media, and Technology |
|
||
| Brand Strategy* | Fall Set 4 | Brand Management |
|
||
|
||
Note that Sustainability for Competitive Advantage* and Foundations of Entrepreneurship* are in the **same set** (Spring Set 4). A student can take at most one, making it **impossible to earn both** Sustainable Business and Innovation **and** Entrepreneurship and Innovation.
|
||
|
||
Similarly, these required courses qualify for other specializations too (listed in the matrix), but the required-course constraint only applies to the primary specialization listed above.
|
||
|
||
### 3.3 Strategy S1/S2 System
|
||
|
||
The Strategy specialization uses a two-tier marker system instead of `■`:
|
||
|
||
- **S1** (10 courses): Count toward Strategy without restriction.
|
||
- **S2** (7 courses): At most **one** S2-marked course may contribute credits toward Strategy.
|
||
|
||
This means if a student selects 3 S2-qualifying courses, only the one that produces the best overall allocation result should count. The remaining S2 courses' credits cannot be allocated to Strategy (though they may still contribute to other specializations they qualify for via `■`).
|
||
|
||
**S1 courses:** Mergers & Acquisitions, Sustainability for Competitive Advantage*, Foundations of Entrepreneurship*, Consulting Practice, Global Strategy, Managing Growing Companies, Business Drivers, Advanced Corporate Strategy, Corporate Governance, Game Theory
|
||
|
||
**S2 courses:** The Business of Health & Medical Care, Digital Strategy, Managing a High Tech Company, Entertainment and Media Industries*, Private Equity, Managing Change, Emerging Tech and Business Innovation
|
||
|
||
### 3.4 Mutual Exclusions (Same-Set Conflicts)
|
||
|
||
Since only one course per set can be selected, some specialization combinations are structurally difficult or impossible:
|
||
|
||
- **Spring Set 4** forces a choice between Sustainability for Competitive Advantage* (required for SBI) and Foundations of Entrepreneurship* (required for E&I). Cannot earn both.
|
||
- **Fall Set 4** contains Brand Strategy* (required for Brand Management). Taking Game Theory (the only Strategy S1 in that set) means forgoing Brand Management.
|
||
- **Spring Set 1 / Summer Set 1** offer identical courses. If a student picks different courses from each, they get 2 selections from this pool. If they pick the same course in both terms, they still get credit (it appears in both sets independently).
|
||
|
||
---
|
||
|
||
## 4. Analysis Approach
|
||
|
||
### 4.1 Problem Formulation
|
||
|
||
**Given:** A set of selected courses (0 to 12, one per set)
|
||
**Find:** An allocation of credits from each selected course to its qualifying specializations
|
||
**Maximize:** The number of specializations reaching the 9-credit threshold
|
||
**Subject to:**
|
||
- Each course's total allocation ≤ 2.5
|
||
- Allocations are non-negative
|
||
- Only qualifying specializations receive credits from a course
|
||
- Required course constraint per specialization
|
||
- At most 1 S2 course contributes to Strategy
|
||
|
||
### 4.2 Greedy Allocation Algorithm
|
||
|
||
The optimizer uses a greedy heuristic that processes specializations in order of "tightness" — those with the least slack above the 9-credit threshold are processed first, since they have the least flexibility in which courses can supply their credits.
|
||
|
||
```
|
||
function optimizeAllocation(selectedCourses):
|
||
// Track remaining credit capacity per course (starts at 2.5 each)
|
||
capacity = { course: 2.5 for each selected course }
|
||
|
||
// Compute upper bound per specialization (sum of 2.5 × qualifying courses)
|
||
// For Strategy: count S1 courses + min(1, S2 count)
|
||
upperBound = computeUpperBounds(selectedCourses)
|
||
|
||
// Filter to candidate specializations:
|
||
// - upperBound >= 9
|
||
// - all required courses present in selections
|
||
candidates = filter(specializations, canAchieve)
|
||
|
||
// Sort candidates by tightness (ascending upper bound)
|
||
sort(candidates, by: upperBound ascending)
|
||
|
||
achieved = []
|
||
for spec in candidates:
|
||
// Get qualifying courses with remaining capacity
|
||
qualifyingCourses = getQualifying(spec, selectedCourses)
|
||
.filter(course => capacity[course] > 0)
|
||
.sort(by: number of eligible specializations, ascending)
|
||
// ↑ "exclusivity sort" — use specialized courses first,
|
||
// preserving multi-eligible courses for other specs
|
||
|
||
// Check feasibility before committing
|
||
availableCredits = sum(capacity[c] for c in qualifyingCourses)
|
||
if availableCredits < 9:
|
||
continue // Skip — would waste credits on a failed spec
|
||
|
||
// Allocate credits greedily
|
||
needed = 9
|
||
for course in qualifyingCourses:
|
||
if needed <= 0: break
|
||
alloc = min(capacity[course], needed)
|
||
capacity[course] -= alloc
|
||
allocation[course][spec] += alloc
|
||
needed -= alloc
|
||
|
||
if needed <= 0:
|
||
achieved.append(spec)
|
||
|
||
return achieved, allocation
|
||
```
|
||
|
||
**Key design decisions:**
|
||
|
||
1. **Tightness-first ordering** ensures the most constrained specializations get first pick of course credits. A specialization with upper bound = 10 (just barely achievable) should be processed before one with upper bound = 20.
|
||
|
||
2. **Exclusivity sort** within each specialization prefers courses that qualify for fewer other specializations. This preserves "versatile" courses for later specializations that may need them.
|
||
|
||
3. **Feasibility check** before allocating prevents wasting credits on a specialization that can't reach 9 with remaining capacity. Without this, failed allocations consume course capacity that could help other specializations.
|
||
|
||
### 4.3 Strategy S2 Enumeration
|
||
|
||
Because the S2 constraint (at most 1 S2 course counts toward Strategy) interacts with the allocation, the optimizer must consider multiple scenarios:
|
||
|
||
```
|
||
s2Courses = selectedCourses.filter(c => c.strategyMarker == 'S2')
|
||
options = [null, ...s2Courses] // null = no S2 course counts
|
||
|
||
bestResult = null
|
||
for s2Choice in options:
|
||
// When computing Strategy's qualifying courses:
|
||
// - All S1 courses qualify
|
||
// - Only s2Choice (if non-null) qualifies among S2 courses
|
||
result = runGreedyAllocation(selectedCourses, s2Choice)
|
||
if result.achievedCount > bestResult.achievedCount:
|
||
bestResult = result
|
||
```
|
||
|
||
With at most 7 S2 courses and typically 0-3 selected, this adds negligible computational cost.
|
||
|
||
### 4.4 Targeted Optimization
|
||
|
||
When the user specifies target specializations, the algorithm prioritizes them in the greedy ordering:
|
||
|
||
1. Place target specializations first (still sorted by tightness among themselves)
|
||
2. Then remaining candidate specializations (sorted by tightness)
|
||
|
||
This ensures the optimizer allocates credits to user-preferred specializations before considering others, at the potential cost of achieving fewer total specializations.
|
||
|
||
### 4.5 Status Determination
|
||
|
||
After optimization, each specialization receives a status:
|
||
|
||
| Status | Condition |
|
||
|--------|-----------|
|
||
| `achieved` | Allocated credits ≥ 9 **and** all required courses are in the selections |
|
||
| `achievable` | Not achieved, but earned credits + potential from open (unselected) sets ≥ 9, and any missing required courses are available in open sets |
|
||
| `missing_required` | Enough credits are theoretically possible, but a required course is not selected and is not available in any open set |
|
||
| `unreachable` | Maximum possible credits (from all selected + all open sets) < 9, or optimizer allocated credits elsewhere with insufficient remaining potential |
|
||
|
||
**Key nuance:** When all 12 sets are selected (no open sets), every non-achieved specialization is `unreachable` — there are no future course picks to change the outcome.
|
||
|
||
**Remaining opportunities:** For each `achievable` specialization, the system lists which courses in open sets could contribute credits. This helps users make informed future selections.
|
||
|
||
### 4.6 Per-Specialization Metrics
|
||
|
||
For each specialization, the evaluation produces:
|
||
|
||
- **earnedCredits**: Credits allocated by the optimizer (respects sharing constraints)
|
||
- **maxPotentialCredits**: Theoretical upper bound = (qualifying selected courses × 2.5) + (open sets with qualifying courses × 2.5). Ignores sharing — used for reachability determination, not for allocation.
|
||
- **qualifyingCourses**: Selected courses that qualify for this specialization
|
||
- **allocation**: How the optimizer distributed credits from each qualifying course to this specialization
|
||
- **requiredCoursesStatus**: Which required courses are met vs. missing
|
||
- **remainingOpportunities**: Courses in open sets that qualify, organized by set
|
||
|
||
---
|
||
|
||
## 5. Web Application Design Considerations
|
||
|
||
### 5.1 User Interaction Model
|
||
|
||
The application presents all 12 elective sets. For each set, the user selects one course (or leaves it open). The evaluation runs after each change, providing immediate feedback.
|
||
|
||
**Primary view:** A dashboard showing all 14 specializations with their current status, earned credits, and progress toward the 9-credit threshold.
|
||
|
||
**Key information the user needs:**
|
||
- Which specializations are currently achieved
|
||
- Which are still achievable and what courses would help
|
||
- How credits are allocated across specializations (to understand trade-offs)
|
||
- The impact of changing a selection on specialization outcomes
|
||
|
||
### 5.2 Data Embedding
|
||
|
||
The complete course-specialization matrix (46 courses, 14 specializations, ~100 non-empty markers) is small enough to embed directly in the application as static data. No backend or xlsx parsing is required at runtime.
|
||
|
||
### 5.3 Performance
|
||
|
||
The greedy algorithm with S2 enumeration processes at most 14 specializations × 12 courses × 8 S2 options = ~1,344 operations per evaluation. This is instantaneous and can run on every user interaction without debouncing.
|
||
|
||
### 5.4 Reference Implementation
|
||
|
||
A working Node.js implementation exists at `evaluate_specializations.mjs` in this directory. It reads from the xlsx file and provides `list`, `matrix`, and `evaluate` CLI commands. The web application should replicate its allocation logic with embedded static data.
|