Learn

Learning preferences

Make learning more comfortable. Changes apply immediately.

Enlarges page content, including diagrams and their labels. You can also use your browser’s zoom.

Choose the colours that are easiest for you to distinguish. Applies to lesson diagrams and lab plots. Labels, shapes, hatching and line patterns also distinguish meanings. Source photographs and raw image brightness stay unchanged; mask-only views are available for image overlays.

ExampleComparisonSample link

Saved in this browser on this device. Preferences are separate from progress backups.

Programming and software engineering · Course

Build, test and operate a small data tool

Inspect algorithms and repair failures with explicit contracts and counterexamples.

Start with everyday situations, predict an outcome, and test your ideas. You need basic arithmetic, percentages and graph reading; explanations introduce additional ideas where needed. No coding or account is required. Every investigation has school, college and workplace extensions—you can choose any of them.

What you will learn

Implement a deterministic tool, inspect algorithmic work, connect records by identity, test failure cases and design bounded retries.

Before you begin

  • A variable names a value; an array is an ordered list indexed from zero.
  • A function accepts inputs and returns a value. The code workspace introduces conditions and loops with editable scaffolds.
  • The guided model remains usable without code; claiming implementation requires the learner’s runnable program, independent tests and explanation.
  • Before “Build and inspect”: variables hold values, functions return results and loops repeat steps; inspect the editable scaffold before running it.
  • Before “Connect and validate”: an array index is a position, an ID names an entity, and a test compares actual behavior with an independently specified expectation.
  • Before “Automate with explicit outcomes”: a request, an executed action and a received reply are separate events; losing one does not prove the others did not happen.

Open any topic directly. Review functions and graphs whenever useful.

Choose your scope

The original two-investigation starter remains available. Choosing the full course adds its published lessons to your selected scope; your earlier work stays saved. Skipping does not count as completion or understanding.

Free exploration: no completion scope selected yet. Project reports and independent evidence are tracked separately.

Course outline

Choose a unit, then open a lesson on its own page. This outline lists the sequence; it does not combine the full lessons into one page.

Build and inspect2 lessons

Implement a calculation and compare algorithms by a named work measure.

Build a price calculation tool

○ Not marked complete · Included · Practice check available

Lesson preview

Does changing calculation order preserve the contract?

An original synthetic invoice has base prices 10,20,30. The contract adds percentage tax to each base price, then an untaxed flat fee. Implement the rule in the linked code runner.

Open lesson

Find an item without checking everything

○ Not marked complete · Included · Practice check available

Lesson preview

When does dividing the search space save work?

Search an original synthetic sorted inventory of consecutive IDs. Each inspected item counts as one unit of algorithmic work; this is not elapsed computer time.

Open lesson
Connect and validate3 lessons

Use stable keys and test boundaries rather than assuming correct behavior from happy-path output.

Connect data by identity

○ Not marked complete · Included · Practice check available

Lesson preview

Why does joining rows by position send orders to the wrong person?

Original customers [101 Ada,102 Bo,103 Cy] and orders [103:30,101:10] have different ordering. A second order for customer 103 can be added.

Open lesson

Make a passing test suite reveal a bug

○ Not marked complete · Included · Practice check available

Lesson preview

Can all your tests pass while the rule is wrong?

A synthetic request system must approve quantities at or above a threshold. Choose an implementation and test cases. The controls select predefined rules; no source code is executed.

Open lesson

Test the whole input contract

○ Not marked complete · Included · Practice check available

Lesson preview

Which tests expose a missing input guard?

A synthetic quote function charges 3×quantity+2 for positive quantities and zero otherwise. Its buggy version applies the formula to every quantity.

Open lesson
Automate with explicit outcomes1 lessons

Distinguish execution from acknowledgment, avoid duplicate effects and bound retries.

Make automation safe to retry

○ Not marked complete · Included · Practice check available

Lesson preview

What if a charge succeeds but its response is lost?

A fictional local service records a charge and may lose its response. Retry limits and a simulated idempotency key determine whether duplicates occur.

Open lesson

Implement and test a fictional order-processing tool

Write a small program that joins customer IDs to orders, calculates a contract-defined price and reports unmatched inputs. Add independent tests and a local retry simulation that never double-applies the same operation. Work only with invented records.

Save a report, compare captured evidence, and attempt three new cases. A completed report records submitted work; the rubric supports a separate human review of its quality.

Loading saved experiments…

Progress is saved in this browser when storage is available. Review your experiments and export a backup in My Work.