Skip to content
Computer Engineering, UBC

A conversation starts here.

Let’s talk.

Or write directly to daniel.litvak.64@gmail.com

All projects

Cellular Automata

Conway's Game of Life

A cellular automaton playground with pattern editing, playback controls, randomization, wrapped neighbor logic, and live population history.

JavaScript
p5.js
Cellular automata
Conway's Game of Life grid showing evolving patterns of live and dead cells

What this project shows

This project shows careful handling of deterministic state changes, where one bad update order can corrupt the entire next generation.

The problem

Game of Life is often presented as a tiny ruleset, but building an interactive version requires preventing user edits, playback timing, and next-state computation from interfering with each other.

How I built it

I kept the grid update as a separate step function and tracked population history independently, so the simulation could be paused, edited, randomized, and graphed without mixing concerns.

The outcome

The project is a clear example of state-machine thinking and UI control design around a deterministic algorithm.

A closer look

Source signal

The old sketch stores `cell_count_history`, uses `stepGame(len_x, len_y)`, and maintains a bounded history array for the population graph.

Practical signal

The controls show attention to the whole user workflow: pause, edit, observe, randomize, then step again.