Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Coursera

WASM from Zero

Pragmatic AI Labs via Coursera

Overview

AI, Data Science & Cloud Certificates from Google, IBM & Meta — 50% Off
One plan covers every Professional Certificate on Coursera. 50% off Coursera Plus Annual for 10 days only — price increases June 17.
Unlock All Certificates
WASM from Zero is a hands-on introduction to WebAssembly for engineers who want to ship fast, portable, sandboxed code that runs anywhere: the browser, the edge, the server, and embedded devices. You will learn what WebAssembly is, why it was designed, how it relates to Rust, and how to compile Rust libraries to .wasm modules that can be invoked from JavaScript, Python, or any host language. The course walks through the toolchain (rustc target wasm32, wasm-bindgen, wasm-pack, wasmtime, wasmer), the WASM component model, WASI, and the security and performance trade-offs that make WebAssembly a compelling deployment target for data engineering, ML inference, plugin systems, and serverless workloads. By the end of this course, you will be able to build, package, deploy, and debug a Rust-to-WASM data processing module, embed it in a web page and a server runtime, and reason about when WASM is the right tool versus a native binary or a container. This is part of the Rust for Data Engineering specialization and assumes basic Rust familiarity from Rust From Zero.

Syllabus

  • Canvas — Canvas2DRenderer and the Browser App
    • Covers the HTML5 canvas element as a 2D raster surface, every draw is immediate-mode, Canvas2D vs WebGL vs WebGPU, Canvas2DRenderer wraps a web_sys::CanvasRenderingContext2d and exposes the same draw API as the terminal renderer, and every method takes an aprender_present_core::Color and a Rect, not raw f64s.
  • React — Elm-style Update / View in WASM
    • Port the Elm-style init / update / view shape from the terminal app to the browser without changing its meaning. State lives in WebAssembly linear memory, update is the single mutator, and view returns a Virtual DOM. Then plug the loop into the browser by treating requestAnimationFrame as the event loop, using a dirty flag to keep view at-most-once-per-frame, and storing every JS closure in a Vec so App::unmount drops them with zero leaks.
  • Compose — Charts, Components, Router
  • Bundle and Verify — wasm-pack and Probar VDOM Snapshots
    • Bundles the WASM artifact for production and verifies behavior without launching a real browser. Covers the wasm32-unknown-unknown Rust target, wasm-bindgen as the JSRust bridge, and the presentar-cli serve command for local hosting. Then introduces Probar, a deterministic VDOM-snapshot harness: stringify a virtual DOM tree, compare against a golden inline string, and assert correctness with zero headless-browser dependencies.
  • Capstone — Build wasm-dash
    • Tie everything together by building wasm-dash, a real-time system dashboard rendered entirely in WebAssembly. Compose every prior module — Canvas2D rendering, Elm-style update/view, components, charts, and the router — into one screen. Use a committed snapshot fixture for zero-panic determinism, a short pure view() composing earlier widgets, and a six-demo gallery that proves WASM-from-Rust handles real interactive workloads.

Taught by

Noah Gift

Reviews

Start your review of WASM from Zero

Never Stop Learning.

Get personalized course recommendations, track subjects and courses with reminders, and more.

Someone learning on their laptop while sitting on the floor.