Prof. Sema
Prof. Sema

Interactive OS concurrency simulator · Web & iOS

Prof. Sema

Race conditions, mutexes, semaphores, deadlock — drive real threads step by step and see exactly why concurrent code breaks.

Open Web AppApp StoreComing soonJoin TestFlight

Prof. Sema is an interactive study tool for the hardest part of an Operating Systems course: concurrency. Instead of reading about race conditions, you drive two real threads through a shared counter one operation at a time. At every step you choose the next operation from a mix that includes the one correct move and several traps — the actual mistakes students make on exams — unlabeled, so you have to judge for yourself. Pick wrong and it really executes: the bug plays out with an animation faithful to what the CPU actually did, then undoes so you can try again. Seven levels build from a no-lock race, through mutexes and semaphores (both wait()/signal() and P()/V() notation), to producer–consumer, readers–writers, a two-account transfer deadlock, and the Dining Philosophers. No accounts required — everything works anonymously with local progress; sign in with Google or Apple only if you want progress synced across devices.

7

Concurrency levels

9

Languages

$0

Free, no account needed

0

Third-party tracking SDKs

Screenshots

The level map — seven concurrency levels from race conditions to deadlock
The level map — seven concurrency levels from race conditions to deadlock
The Race — picking a thread's next operation on a shared counter
The Race — picking a thread's next operation on a shared counter
Readers·Writers — a semaphore-guarded reader/writer state
Readers·Writers — a semaphore-guarded reader/writer state
Transfer Deadlock — two mutexes locked in an AB-BA cycle
Transfer Deadlock — two mutexes locked in an AB-BA cycle
The concept sheet for Dining Philosophers, explaining circular wait
The concept sheet for Dining Philosophers, explaining circular wait

Highlights

Pick the Operation, Not the Answer

The correct move sits unlabeled among several realistic traps — you have to reason about the actual thread state, not guess a multiple-choice pattern.

Wrong Answers Really Execute

Pick a trap and the bug actually happens — a lost update, a stale write, a deadlock — animated faithfully to the engine's real state, then undone so you can retry.

Seven Exam-Aligned Levels

The Race, The Lock, semaphore wait()/signal() and P()/V(), Producer–Consumer, Readers–Writers, a two-account transfer deadlock, and Dining Philosophers.

Deterministic Engine

A seeded, event-sourced simulation engine — scrub the timeline forwards or backwards and always land on the exact same state.

No Account Needed

Every level works anonymously with progress saved on-device. Sign in with Google or Apple only if you want it synced across devices.

Nine Languages

The full teaching surface — every trap explanation, hint, and completion note — is translated, with Simplified and Traditional Chinese fully localized.

Built with

  • TypeScript
  • React
  • Capacitor
  • Cloudflare Workers
  • D1
  • GSAP