This is a personal hobby and learning project. Code and educational drafts were developed with substantial assistance from AI coding tools.
Repository: dylanstechmann/uniStemCourseSimulators. All 25 existing course plans have usable routes for their scheduled components, including projects; see the course-plan index. The semester-course authoring pass adds 66 foundations and 86 connected assignments across 24 courses and audits the developed Cell Biology core. That record distinguishes delivered instruction from remaining depth and review limits. Every package is partial and unreviewed; open practice does not establish full-course depth or academic credit. The progress review records AI-assisted development and validation.
Interactive, source-grounded courses across science, mathematics, engineering, computing, and biomedicine.
An independent open-source learning platform under development. It does not confer academic credit, accreditation, degrees, or university prerequisite equivalency. Pathway mappings do not establish admission eligibility or transfer credit. Institutional references identify scope comparators; they do not imply affiliation or endorsement.
| Status | Packages | Meaning |
|---|---|---|
| catalog-only | 0 | Catalog metadata only |
| outlined | 0 | Structured plan without developed teaching |
| partial | 25 | Authored readings, connected coursework and formative checks; depth and review remain limited |
| beta | 0 | Developed course awaiting required review/gates |
| complete | 0 | All full-course gates satisfied |
| externally reviewed | 0 | Qualified named reviewer examined a specified version |
No current package meets the complete-course standard. The repository contains 25 partial packages with 634 lessons, 3,537 formative questions, 2,131 retrieval cards and 151 self-assessed case prompts. These counts measure authored material; they do not establish semester depth, measured workload, scientific review or university equivalence.
The packages span life sciences, chemistry, mathematics, physics, statistics, computing and engineering. Original readings, worked examples, synthetic datasets and practice are available in each subject, with uneven coverage and depth. See the package inventory, measured content gaps, and MIT OpenCourseWare scope audit for the current boundaries and priorities. Detailed development history belongs in the progress review.
Development now proceeds across the repository in bounded instructional batches. Follow-up priorities address demonstrated instructional gaps, broader course boundaries and learner evidence identified against official MIT OpenCourseWare syllabi and calendars. New material is original and attributed; references compare scope and expectations without claiming affiliation, copied course delivery, or equivalent credit. Metadata and review-report refreshes are bundled with substantive changes.
The curriculum map adds 37 catalog-only subject nodes and 8 pathway maps beside the 25 partial course packages. Catalog-only entries describe planned study areas and dependencies; they contain no authored lessons and cannot be enrolled in. Mapped prerequisite order is planning guidance and does not establish university equivalency.
See the audit, quality standard, and remaining work.
Install Docker with Compose, then from the repository root:
docker compose up --buildOpen http://localhost:8080. Startup generates a database credential in a private Docker volume, starts PostgreSQL, applies Alembic migrations and serves the React reader through a same-origin API proxy. No API key, database password, cloud account or .env is required for a fresh development installation. Existing installations must preserve their Compose project identity before updating to the renamed defaults; see rename migration. .env.example documents optional settings. Ports bind to localhost; HTTP cookies are a development setting. Production needs HTTPS and operator-supplied secrets.
- React/TypeScript reader with public catalog, explicit maturity/limitations, syllabus, lesson objectives and prerequisite lists. Lesson Markdown renders tables (remark-gfm) and LaTeX mathematics with KaTeX (remark-math and rehype-katex, MIT licensed), loaded as a separate chunk only for text that contains math.
- FastAPI/Pydantic with PostgreSQL SQLAlchemy/Alembic, server guest sessions, account registration/login/logout and guest-to-account preservation.
- Enrollment, private notes, bookmarks and learner-marked reading progress stored on the server; the React notebook searches saved note text across current enrolled courses and links each result back to its lesson. Lesson pages include self-assessment retrieval cards with revealable answers.
- Immutable choice, numeric, symbolic, data-interpretation, structured-rubric, fixed-axis graph-coordinate and bounded CSV-table formative practice attempts with diagnosis, hints, next steps, lesson links, and independent criterion scores. The graph exercise plots learner coordinates against supplied replicate data and awards coordinate-level credit; it does not grade axis choice, uncertainty bars, interpolation or interpretation. A cell-biology upload scores replicate counts and means from UTF-8 CSV as inert data with cell-level credit. It does not run uploaded files or grade free-form reasoning; correct results do not establish sound reasoning or mastery.
- Course-level public formative practice sets delivered from version-pinned manifests through answer-free API DTOs. The week-8 cell-biology cumulative rehearsal is labeled ungraded and not a midterm, and the week-14 cumulative final review (25 questions, 13 of them new integrative items on a synthetic clone dataset) is labeled ungraded and not a final exam; weeks 9–14 also have topic practice sets. Biochemistry has eight open homework practice sets, a week-7 midterm review and a week-14 cumulative final review practice set, each labeled ungraded and not an exam, plus a project rehearsal. Their authoring keys remain openly visible in the repository and are not secure exam materials.
- Separate formative practice gradebook and configured weighted-assignment gradebook, attempt/feedback history and an objective-level study indicator based on distinct items, published thresholds and best reviewed formative scores. Graded submissions are deterministic, version/source-pinned, and limited to a strict deadline. Learners can request one human review per formative or graded attempt; operator-provisioned instructors can record a separate score adjustment while the automatic result stays immutable. Graded adjustments affect the weighted calculation and appear in learner history. None of the 25 current packages contains graded work, so none displays a course grade.
- Spaced retrieval review: enrolled learners self-rate revealed retrieval cards, the server schedules each card with a documented deterministic interval rule, and a course Review queue lists due, new and upcoming cards. Ratings are self-assessments and never change practice scores or objective evidence.
- Learner JSON export and confirmed account deletion, keyboard focus/skip link, larger text/high-contrast controls and safe Markdown rendering, including tables.
- Docker development/production examples, reverse proxy, CI and automated content/security-boundary tests.
Single-choice, multiple-select, numeric, bounded symbolic-expression, narrow data-interpretation, structured-rubric, fixed-axis graph-coordinate and constrained CSV numeric-table graders are deterministic. The same supported response formats can be used in versioned graded-assignment submissions; question DTOs omit answer keys, source files are SHA-256 checked, and the API enforces release, attempt and strict-deadline rules. A separate read-only private assessment mount supports server-only private:// answer packages; no current course references one, and no graded assignment is shipped. When a graded plan is pinned, the exact source bytes are also stored in a private database archive keyed by course version, assignment and digest. Instructor appeals reconstruct the original prompt and form from that archive, including after a course update; non-decline decisions fail closed if its digest or saved grader specification cannot be verified. Database backups therefore contain answer keys and require the same access controls as private assessment files. The automatic score is never rewritten. The tested graded flow uses synthetic fixtures: current catalog packages contain no graded assignments. Numeric grading supports constrained unit conversions, dimensional checks, absolute and relative tolerances, and significant figures. Symbolic grading compares rational expressions through a restricted grammar; it does not execute Python or accept arbitrary SymPy syntax. Structured items map criteria to exact keyed responses; they do not score prose or keyword overlap. The graph grader scores coordinates on fixed axes and does not assess axis choice or scientific interpretation. CSV uploads are size-limited, parsed as UTF-8 and scored only against authored numeric output cells; file contents are never executed. Practice attempts and graded assignments pin question/source specifications. Alembic 0011 also stores a deterministic snapshot of every public course-package file at enrollment and version upgrade, with per-file SHA-256 values and same-version edit rejection; private answer sources are excluded, and existing enrollments are not automatically backfilled. The operator-only report/apply command can recover a legacy archive only with an independently verified package SHA-256; a version-string match alone is insufficient. Enrolled learners can browse saved versions and open them in a read-only view that uses answer-free course and lesson DTOs. Numeric parameter generation, broader data rubrics, arbitrary CSV analysis, historical regrading from archived course-package versions, protected exams and isolated code execution remain unfinished. Instructors receive access only through the operator CLI. This does not make public practice questions secure exams. Course-version changes preserve historical records. Unsupported specifications fail explicitly. Code execution and LLM providers are disabled. The eight pathway maps and broad catalog layer are planning aids. Every week of the proposed fourteen-week biology schedule has authored lessons; eight open homework companions, three synthetic labs, week-8 and week-14 cumulative reviews, and an optional integrative project (a guide, rehearsal practice and five Case studio milestone self-checks) provide ungraded practice. Reviewed graded homework/lab packages, summative exams and a graded project remain unfinished. See the roadmap.
The React reader now includes six scientific calculators under Study tools, available without enrollment: dilution, buffer pH, enzyme kinetics, RC charging, diffusion timescale, and Ohm's law. Each shows units and model assumptions and links to related courses. Calculator scratch work is ungraded.
The React Case studio also exposes the authored prompts and self-check criteria across all 25 partial courses. Enrolled learners can save a private written response and checklist marks; drafts stay bound to the course version and prompt, remain available in account exports, and do not affect grades. Archived cases are read-only.
The previous calculators, cards, case self-assessment and browser notebook remain preserved in legacy/; the React reader now has its own searchable notebook over server-saved lesson notes. To use the old reader separately:
python -m http.server 4173 --directory legacyOpen http://localhost:4173. Valid previous storage is copied to a uniStemCourseSimulators key with a retained backup. Browser scores stay unverified; they are not silently imported as server grades. The default web image does not serve the legacy reader or authoring answers. The separate local reader intentionally exposes its public practice solutions and is unsuitable for secure exams.
| Directory | Purpose |
|---|---|
frontend/ |
React/TypeScript application, Vitest and Playwright |
backend/ |
FastAPI, SQLAlchemy, Alembic and Pytest |
content/ |
Original Markdown, schemas, manifests, public authoring specifications and provenance |
legacy/ |
Preserved static teaching/study reader |
tools/ |
Content validation and credential/bundle checks |
docs/ |
Audit, design, quality, deployment and validation evidence |
No third-party instructional assets have been imported. Public repository authoring solutions remain discoverable; a production operator must store restricted exam keys privately. Learner DTOs and default frontend bundles exclude assessment answer specifications and unreleased solution feedback. Educational worked examples remain public readings.
pip install -r requirements-dev.txt -r backend/requirements.txt
python tools/validate_content.py
python -m pytest tests -q
npm run test:legacy
cd backend
python -m pytest -q
ruff check .
cd ../frontend
npm ci
npm run lint
npm test
npm run build
npx playwright install --with-deps chromium
npm run test:e2eStart Compose before E2E. Run python tools/check_security.py --bundle frontend/dist from the root after building. python tools/validate_content.py --check-links performs network probes; earlier checks recorded HTTP 403 responses from two JHU pages, so those checks did not establish that all live links passed. Offline schema/content validation reports zero errors and zero explicit limitation/depth warnings. Detailed commands, test counts and boundaries are in VALIDATION_REPORT.md. Browser QA of the protected, graded mode, which runs outside Docker against a throwaway fixture, is described in QA_PROTECTED_GRADED.md. Production guidance: DEPLOYMENT.md.
Read CONTRIBUTING.md. To review a lesson, or to understand what reader feedback, AI-assisted checks and subject-matter review can each change, read the reviewer guide; AI-assisted check records are in docs/reviews/ai-assisted. Software retains MIT. Educational licensing is separate in LICENSE-CONTENT and content/SOURCES_AND_LICENSES.md. Historical MIT grants remain valid. Adapted OCW material requires applicable CC BY-NC-SA 4.0 attribution/ShareAlike conditions and asset-level checks; JHU catalogs are alignment references only.
Security: SECURITY.md. Test evidence: docs/VALIDATION_REPORT.md.