Fifty shades of neurodiversity: A CS50x project

I have always been interested in engineering, particularly computer science. The reason is that I love problem-solving! Untangling a messy, convoluted chaos into at least a visible line gives me satisfaction. I also enjoy building things for people. Unsurprisingly, as a high school student, my dream was to attend the Bandung Institute of Technology (ITB), which left me with one option: the School of Electrical Engineering and Informatics (STEI). However, knowing it was ranked first among other schools, I decided not to apply because I am really bad at mathematics.

I am not talking about being bad at linear algebra or calculus, but about being bad at counting change, reading clocks, misinterpreting 789 as greater than 3211, writing “dua belas” as 21, and mistaking 18:00 for 8PM instead of 6PM. In fact, reading numbers in itself is confusing to me, so I avoid it whenever possible.

This project is my attempt to design a way of learning programming that does not begin with numbers.

Anyway, you can skip the introduction if you want to go straight to the project, but you might miss the interesting story that shapes what I built 🙂

Fast forward to October last year, and I was clinically diagnosed with inattentive ADHD (Attention-Deficit/Hyperactivity Disorder), a neurodevelopmental condition that affects the prefrontal cortex and the default mode network. This was after two failed attempts that diminished my long-time struggle with executive function because I was considered smart, even gifted. The thing is, my hobby is learning random stuff out of curiosity, but I am terrible at formal study. I received low scores because I missed submitting assignments; teachers disliked me because I could not pay attention in class; and during my PhD, I missed half of the class sessions for a course. I am in my current position because I am lucky. That is it. I seem to be doing well because people rarely realise how messy I am behind the scenes and often need assistance with small things.

The diagnosis introduces me to the concept of neurodiversity, which somehow explains everything and more. This is not me being lazy or unmotivated; my brain simply struggles to make sense of what seem like ordinary things for other people. As I tried to understand myself better and learn about comorbidity, one thing stood out to me: dyscalculia. In simple terms, it is like dyslexia, which is difficulties in reading, but with numbers. Travelling, then, becomes a nightmare for me. Flight number, bus number, gate number, terminal number, departure time, currency exchange, luggage weight, etc. The world is filled with numbers, but numbers are disorienting to me.

Getting an ADHD diagnosis also forced me to re-examine my entire childhood, often cross-checking my memories with my parents. During the process, I came across an elementary school IQ test result—something required for the evaluation—that I had never seen before. I remember telling my psychologist, “I think my IQ test is wrong, if not outdated. Where did those numbers go all these years? Why did I have to circle around by enrolling in FSRD ITB instead of going straight to STEI? Don’t you think I should at least join OSN? But I really was not capable of that.”

“That circling around is exactly your strength,” she replied. “Imagine there is a swimming pool and you have to cross it. People who cannot swim will avoid it and move on, but you force yourself to take a long detour or to build a raft to reach the other side. You solve your problem in an unconventional way. Slower, maybe, but you always get exactly to where you want.”

It reminded me of my scholarship selection. The scholastic aptitude test (TBS) for the LPDP scholarship is notoriously one of the most challenging examinations in Indonesia, consisting of three sections: numerical skills, verbal skills, and problem-solving. I quietly gave up on the first, yet I did not give up on the scholarship because of it. I focused on the other two sections instead, and thankfully, I passed. Though I was unaware, my life has long been shaped by these kinds of accommodations and strategies; ways of working around limitations while refusing to be defined by them. Now, perhaps it is time to face my greatest fear, mathematics, to be the person I have always aspired to be since high school.

Tailoring AI to my learning needs: conceptually and without math

Of course, while learning programming, I faced many obstacles, such as repeatedly making mistakes on the simple Mimo quiz because I could not understand why 5 is not included in “while counter < 5” and why it is not written as ≤ 4 instead. On top of that, I only realised this after asking ChatGPT. In my case, I use LLMs as assistive technology. Before this, I would be too ashamed to ask anyone in case they thought, “How stupid this girl can be?” Thanks to it, I can finally pursue what I have always wanted to learn.

Admitting all of this is indeed still quite shameful. Nevertheless, I want to appreciate how I continue to march through the struggles. Before my diagnosis, I told only one person—in passing—about my dyscalculia. But since it is no longer a secret, I hope anyone in a similar situation will be motivated to overcome our limitations, whether self-imposed, inherited, or biologically rooted. Let us cross that swimming pool by conjuring creative solutions that make us most comfortable, and maybe someday, we can finally learn to swim after all.

This is me trying by being pushed into the ocean.


What is CS50x?

CS50x is, without exaggeration, one of the best online courses available, led by Dr David Malan from Harvard University. This “Introduction to Computer Science” course consists of 11 modules, with an extra lecture on artificial intelligence. We will take a similar course with Harvard students—albeit online from home—since the team always updates the materials each year. In addition, they offer courses in web programming, cybersecurity, and AI, which I plan to finish next year.

The best part is, you can get a certificate for free. This course is indeed available on edX, which requires you to pay $219 for a verified certificate. However, Harvard University offers its own certificate and OpenCourseWare, including access to VS Code. We still need an edX account, but most assignments will be submitted via GitHub and automatically graded.

The easiest way to watch the materials is to bookmark the YouTube playlist and complete the assignments using the instructions in the OpenCourseWare. For CS50x, we have 26 coding assignments, 1 Scratch project, and 1 final project that implements one of the programming languages we have learned, presented through a YouTube video. In most projects, we do not have to create everything from scratch; we can build on the provided code, as shown below.

TODO

This year, the final deadline is 01/12/2026, so there is still plenty of time in case you want to join—asking for a friend here. The course is indeed demanding, with approximately a two-hour lecture, an hour-long section, and a full day spent completing assignments each week. It is safe to set aside at least 10 hours per week to finish this course.


What is this project?

“Fifty shades of neurodiversity” is a series of programming exercises that aim to shed light on the various ways our brains interpret the lifeworld and the space-time. The name takes inspiration from the non-numeric representation of the course title, while also highlighting the nuance of being neurodiverse, especially as someone with Inattentive ADHD and dyscalculia myself. Even though the course only requires one final project, I decided to create two, one in JavaScript and one in Python. By basing the projects on issues I am deeply passionate about, I hope to encourage myself to finish the course, learn in a way that honours how my mind works, and above all, invite you into understanding another way of understanding.

Update: The JavaScript extension turned out to be more challenging than I expected, since I had to annotate various types of numerical expressions individually—which is exactly what I hoped to avoid—so I made it with the help of AI. The submission for this course is only the Python project.

The annotations

🐈‍⬛️ Inattentive ADHD simulator (Scratch)

Play the game on Scratch

“Inattentive ADHD simulator” is a digital tag game based on chase-and-avoid mechanics. The player takes the role of a person with Inattentive ADHD and aims to finish their thesis by touching the graduation cap in under 50 seconds; otherwise, they will miss the deadline. The person is represented by a black cat resembling the CS50x and Scratch icons. A messy desk, meanwhile, reminds us of our tendency to measure everything by its outputs, yet behind many well-composed masterpieces are probably desks that look like the one in the picture. Additionally, the vintage style underscores that ADHD is not just a modern problem.

At the beginning of the game, an intentionally confusing design temporarily hides the goal for three seconds, depicting the ADHD paralysis. The goal then reappears and disappears throughout gameplay, mirroring experiences of forgetfulness. This principle also extends to the deliberately indistinguishable visual style. Unlike typical games of this genre, where goals are rendered in striking or contrasting colours, the goal here blends into its surroundings.

As for the sprites to be avoided, instead of choosing stereotypical distractions such as doomscrolling, binge-watching, and playing video games, which are forms of screen addiction that the general public finds equally challenging to avoid, it shows what happens when your mind moves rapidly with no brakes. It also omits distractions that more closely reflect hyperactive tendencies, such as suddenly running miles, rearranging the furniture, or taking a train to nowhere. In inattentive ADHD, someone may seem productive from the outside yet remain distracted from their primary intention or goal. They might seem physically still, but in their chronic daydreaming, they have made up yet another poem that must be finished now.

In this game, the distractions include taking a programming course, applying to a competition, writing an opinion essay, and learning about impressionism. One sprite follows from behind, calling your loved ones for hours, as this represents something equally important but can be easily forgotten or not carefully scheduled around daily responsibilities. One sprite that moves randomly, starting a YouTube channel, represents an innocent long-term commitment taken just because, yet it ends up taking more time and energy than expected. This approach, I hope, will offer a brief glimpse of the gruelling tension between what appears to be productivity and the clarity required to manage time and finish a task without detours, no matter how positive it may sound. In this regard, the term “deficit” can be misleading, as it often reflects not an inability to focus but an inability to direct focus toward an intentional goal, since the brain already hyperfocuses on the next curious venture.


🧮 num2text (JavaScript)

Available via GitHub, open chrome://extensions/ then choose “load unpacked”

While digital products are often designed to be user-friendly, they can be quietly inaccessible to neurodivergent users. Built in response to the assumption that numbers speak clearly to everyone, “num2text” is a critical interface intervention that helps reduce the invisible cognitive labour experienced by people with dyscalculia. Integrated as an overlay within a Google Chrome extension, it aims to fix the environment rather than the user by expanding numerical representations into linguistic representations. Interestingly, the name itself comes from a design inversion: computers translate words into numbers, and this tool turns numbers back into words for people.

The last paragraph of the CS50x subsection above will be used to ensure this tool works.


⏳️ TWN: Time Without Numbers (Python, Tkinter)

Beta version is available via GitHub, and here’s the video demo

CONCEPT

Long before time was measured in numbers, humans oriented themselves through experience—sunrise and sunset, changing seasons, the waxing and waning of the moon—using these natural markers to guide everyday decisions. For many people with ADHD, time blindness reflects a reliance on similar experiential cues, in which the passage of time is difficult to sense, and the temporal continuum collapses into merely two markers: now and not now, resembling an object permanence challenge applied to time, where what or whom is no longer present here and now easily slips from mind. Furthermore, for someone with dyscalculia, the challenge is compounded by the very nature of numerical abstraction itself, in which clocks and dates expressed in numbers fail to convey meaning.

TWN is a Python-based Windows desktop widget that addresses time blindness as a representational mismatch by translating numeric time into experiential anchors—one song, one Pomodoro, one podcast episode—so that time is felt through accessible metaphor. It is a timer without digits, using shapes, colours, and movements to embody concepts that often elude the neurodiverse mind. It is also equipped with an activity tracker that quietly functions in the background, helping users make sense of where the time has gone.

FEATURES

TWN consist of six time metaphors, ranging from five minutes to two hours. This reduces the steps for deciding the time length and typing numbers to a single click. Inspired by a digital music player, the alarm interface displays only a circular progress ring that fills over time, deliberately omitting the changing numbers typically used in a stopwatch. The metaphors are as follows:

  • One song = 5 minutes
  • One meditation = 10 minutes
  • One pomodoro = 25 minutes
  • One podcast = 45 minutes
  • One workout = 1 hour
  • One movie = 2 hour

As an additional feature, TWN tracks various background applications (.exe) and groups them under several activity categories. Every ten minutes, a new block will appear beside the text. This also eliminates the need for numbers, as users can estimate time spent based on block length. No interaction is required; this feature will be activated automatically whenever the user starts the desktop. The activities and the applications tracked are as follows:

  • Working = Ms Word, Ms Excel, Notepad, Obsidian, Notion
  • Creating = Ms PowerPoint, Canva, Figma
  • Coding = VS Code
  • Chatting = WhatsApp, Claude, ChatGPT
  • Meeting = Zoom, Ms Teams
  • Other = Google Chrome

DESIGN DECISIONS

Because this project is based on personal needs and lived experience, some design decisions, such as the use of time metaphors, are necessarily subjective and reflect what is familiar to the maker, like a 10-minute daily meditation to improve focus. However, anchors such as a one-hour workout or a two-hour film were chosen because they are common references and are likely to be recognised by many users. TWN is therefore not intended to be a universal productivity tool, but rather an assistive design for people who find conventional numeric timers difficult, stressful, or cognitively unhelpful. By providing only six options, it also reduces the decision fatigue common among neurodiverse people.

For many people, removing numbers from a timer would make a simple task less efficient. However, for users with dyscalculia, the same omission can reduce cognitive load and make time easier to perceive. In that sense, TWN is closer to assistive technology than universal technology. It intentionally prioritises the needs of a specific group rather than trying to optimise for everyone. Like prescription glasses or crutches, some tools are valuable precisely because they are designed around particular bodies, minds, or access needs, not because they are equally useful to all users.

Fun fact: The logo is inspired by the “Jeremy Bearimy” concept of time that appeared on one of my favourite TV series, “The Good Place”.


Final takes?

Final certificate!
Bonus certificates!

After almost six months, I finally finished this course and updated the blog! Although the course is delivered in 11 weeks at Harvard, in reality, finishing some problem sets would take longer than you expected, such as when students have to create a website using HTML, CSS, and JavaScript. And since it only covers Python in a week, I gained additional certificates from Mimo, a gamified mobile learning platform for coding. I also struggled a lot during the lecture about memory, and I would say I am still not very confident that I understand it. However, I enjoyed the assignment that week because it involved visuals: Creating an image filter with C. As someone who is used to using design tools, sneaking a peek at what happens behind the scenes feels magical. I was also excited because edge detection and feature extraction build towards spatial understanding for computer vision.

In the end, I spent more than two weeks on the final project alone. While the timer and tracker mechanisms are quite clear, turning those into a user-facing interface was challenging. There’s an old saying that “a designer’s dream is a developer’s nightmare”, and being involved in both helps me realise the complexity of turning ideas into functional prototypes. I finished this course with an even deeper appreciation towards the engineers out there 🖤

Notes in Notion


Leave a Reply

Discover more from CREATIVE TECHNO-MORALITIES

Subscribe now to keep reading and get access to the full archive.

Continue reading