← All projects

Learning software / C & ESP32

Embedded Learning

Embedded Learning is the application I built around my C and ESP32 study. It keeps lessons, practice, submitted work, and review history in one place. The first unit runs on a Mac without hardware, so the learner can work on C before adding a board and toolchain.

  • React
  • TypeScript
  • Express
  • SQLite
  • C
My part
I developed the application, its initial curriculum, the progression rules, and the tutor integration.
Local application
Unit 1 is implemented. Later units are a roadmap; hardware integration and educational effectiveness still need evaluation.

Embedded Learning progression

  1. LearnLesson + practice
  2. TryCode + explanation
  3. CheckIndependent evidence
  4. Review2 / 7 / 21 days
Embedded Learning: assisted practice and independent evidence are recorded separately.

The learning record

A React interface talks to a local Express service. SQLite stores drafts, submissions, assistance, feedback, and assessment events. Progress is derived from those records, which makes it possible to inspect how a skill received its current status.

The learner writes and runs C in an external editor and terminal. The app accepts code, output, and an explanation as submitted evidence. It does not execute learner code or install the ESP32 toolchain.

When a skill counts

Skills have prerequisites. The learner begins with a diagnostic and then moves through guided work, independent practice, transfer problems, and review. Opening a solution or using a hint records assistance.

Independent mastery requires two distinct unassisted checks, including a transfer task. Repeating a problem after seeing its answer cannot supply that evidence. When the reasoning is unclear, the assessment can request an explanation rather than award a pass.

Reviews return after 2, 7, and 21 days. A failed review adds targeted practice while retaining the earlier evidence. Two conceptual failures lead to a different explanation and smaller practice. These are explicit teaching rules, not a statistically calibrated model of learning.

The tutor’s job

The tutor connects through the local Codex app-server process using subscription authentication. It can explain material, generate practice, and assess responses against a rubric. The application’s rules decide whether the resulting evidence meets a progression requirement.

Tutor feedback streams into the interface. A cancelled request can be followed by another session, and saved work remains available when tutoring is disconnected. The tutor has no shell or browser tools in this application.

From a hint to a fresh check

Suppose a learner needs help with a C condition. They can ask for a hint and finish the problem, but that attempt stays marked as assisted. To demonstrate the skill independently, they need a fresh problem. A later transfer check asks them to use the same idea in a different situation.

The history keeps both attempts. Help remains useful without making the mastery record misleading.

What the checks cover

The local verification record covers progression rules, persistence, cancellation, streaming feedback, browser workflows, and compiled C reference programs. The tested screens had no reported automated WCAG A/AA violations in the recorded run.

Those checks establish application behavior in the tested cases. They do not establish teaching effectiveness, consistently correct model feedback, or manual screen-reader acceptance.

Taking it to the bench

The first unit uses host C programs and synthetic inputs. Board flashing, serial collection, and physical hardware lessons are later work. The immediate questions are whether the explanations help, whether the independent checks are well judged, and how the workload feels during actual study.