UCT CSC2002 / 2022
Words in motion
A falling-word typing game coordinating animated words, keyboard input and score updates.
UCT / COURSE CONTEXT / 2022
CSC2002S · Computer Science 2002
Concurrent programming, computer architecture and interface design, with Java and assembler practicals.
2026 PORTFOLIO RECREATIONS
Words in Motion
ENGINEERING PERSPECTIVE
Inside the work
Coordinate animation and input in a small concurrent interface. Falling words, typed matches and score changes make lifecycle state and thread coordination observable.
- Java / CountDownLatch
- Word threads wait for a shared start; atomic flags coordinate pause and completion.
- Swing / keyboard input
- Display and score updates connect visual state to typed-word handling.
Release the words
Mover threads wait for the common start condition.
- Start coordination
- A latch synchronizes the initial release of worker threads.
- Lifecycle state
- Pause, restart and completion need consistent transitions across workers and display state.
- UI threading
- Swing updates belong on the event-dispatch thread, not arbitrary worker callbacks.
What the demonstration establishes
The intact nested Java source compiled and the actual GUI was captured. The browser game is a new illustration, not a repaired or fully verified original thread implementation.
Evidence behind this page
Nested individual submission, Azhar-authored Git log and original Swing recovery screenshot.
How it works
WordMover threads wait on a shared start latch, CatchWord threads respond to typed words, and shared atomic flags coordinate start, pause and completion. A separate display and score updater refresh the Swing interface.
Results & recovery
- The intact eight-class submission compiles with JDK 17.
- The original GUI was launched and captured; its university-era interface is preserved.
Technical limitations
The outer FallingWord.java contains unrelated Python text. The nested Java version is intact. Recovery verifies the GUI, not a comprehensive thread-safety or gameplay test.
What I would improve now
Consolidate duplicate versions, test pause/restart races and marshal UI changes through SwingUtilities.