What designing 54 computer science cards taught me about graphic design
Graphic design solves a communication problem, and software engineering solves an information problem.
For many, the world of computer science is a “black box”—dense, abstract, and hidden behind screens. But for me, it is a world of elegant structures and creative problem-solving. With Algodeck, a physical deck of 54 cards featuring bold illustrations and short descriptions, I want to distil computer science and mathematics into an accessible form that makes essential skills and a handful of mind-changing mental models easier to understand.

Algodeck is a collection of my favourite algorithms, data structures and mental models, brought together to make computer science easier to explore. They are things I learnt at university and on the job as a software engineer. The cards range from informational to prescriptive. For example, one of the cards advises: “Instead of thinking about what to do, consider what to avoid doing. Oh, and taking a walk is quite good, too!”
My vision was to distil complex knowledge into a short, accessible form, so readers could stumble upon something that interests them. The deck breaks away from traditional, linear, dense textbooks on the subject. Following your own path while learning is key. Sometimes a card will feel cryptic, but if it leads someone to search for more information and learn something new, my job is done.
When deep into a project, there is always more to learn. I’m a software engineer by trade, but I used this opportunity to learn the fundamentals of graphic design. I blended my love for coding and logic with graphic design to create all 54 illustrations using code.
I used the tool of my trade: code. For me, it felt natural, more natural than opening up Illustrator and clicking around. I could change things like the colours or stroke widths of all the cards at once, which helped me quickly test different options. Using code also gave me constraints, which helped me a lot.
This project showed me that computer science and graphic design have more in common than you might think. Both solve problems: graphic design solves communication problems, and software engineering solves information problems. In both disciplines, practitioners start by building systems to solve those problems.
Graphic designers are often well-versed in mathematical and logical concepts, sometimes without realising it. Deciding on a type scale or dividing a grid requires mathematical thinking. Often, we use concepts like the golden ratio to rationalise our layout choices. Gerstner’s famous book Designing Programmes (1964) is a manifesto for system-oriented design, inspired by the rise of computer systems in the ’60s. More recently, Flexible Visual Systems by Martin Lorenz introduced us to the idea of creating design systems that can be reused and combined to create communication solutions. I found this systems-thinking approach useful for this project because I had the challenge of designing 54 cards with a consistent style and scale.

With the first prototype of the deck, all the cards had different scales. Some illustrations looked tiny; others looked large. It looked messy, but it was an exploration phase. For the second prototype, I selected the best parts I liked and crystallised them into a design system. To make things uniform, I divided the space into a grid. The size of a cell would dictate the sizing of everything, even the size of strokes. Using code for design lets you create variables and encode your design system’s rules. Defining rules and variables makes things easier by imposing constraints. A design system also means you don’t have to start with a blank page. You can pull shapes, colours and basic elements and begin from there. Play with them and see what happens.


For the visual language, I was drawn to simplicity, choosing a classic red-and-blue duotone. It echoes the binary system used by computers, while also paying homage to the Bauhaus movement and old French elementary school books. Primary shapes and colours appear throughout.
What tools did I use? Drawbot is a Python-driven graphic design tool. Fun fact: Drawbot was created by Just van Rossum, the brother of Python’s Guido van Rossum.
What about AI LLMs? When I started this project, none of that existed as mainstream tools. I designed and wrote everything myself, though I did use Grammarly to check grammar. Things have changed. I’m not sure I will start this project again, but I’m confident that Algodeck has an even more important role now: it’s about thinking outside the screen and taking the time to flick through some cards. Sure, you could prompt the LLM: “Give me the 54 things I should learn from computer science, maths, and engineering in short form (100 words for each topic).” It will regurgitate words that go well together to form sentences and do a good job.
Ultimately, Algodeck is a learning tool and a problem-solving kit. It helps people learn about computer science, develop new problem-solving skills, and change how they approach problems.
Want to check out the deck? It’s available at algodeck.com.