Extracurricular Projects

Programming is one of my favorite aspects of my work as a graduate student and computational neuroscientist. It is both a frustrating and exhilarating intellectual exercise that requires both problem solving and perseverance, making it all the more rewarding when you are able to turn something that was once an idea into a functional product that humans can use (even if it’s just me). Below are two of the projects I have worked on in my spare time, in part to gain expertise in programming skills outside the purview of my graduate research, but mostly for fun.

AzulRL

Background: Azul is a relatively simple yet entertaining board game (for any board game nerds unfamiliar with the game, Azul has a good 7.8 rating on BoardGameGeek with a low complexity score of 1.76/5). 2-4 players take turns drafting colorful tiles called azulejos (bottom left of picture on right) from factory displays (top left), which they place in their pattern lines (bottom right, with row of blue tiles). When a pattern line is complete, one azulejo is placed on the corresponding row of the player’s palace wall (top right) and the player earns points. At the end of the game, the player with the most beautiful palace wall (i.e., the player with the most points) wins the game.

The game requires some strategy, but there is a beautiful alignment of aesthetics with scoring, so that (1) many people can do well just trying to make their palace wall pretty and (2) losing is still gratifying and fun. For these reasons, I believe it is a great board game for people like me who enjoy some strategy, and are working to enjoy board games even when they lose (and hopefully becoming less competitive and results-oriented than in the past).

Approach: After taking a wonderful class on Probabilistic Decision Making and Reasoning by Dr. Lawrence Saul and studying the preeminent reinforcement learning (RL) textbook by Barto and Sutton, I have been working to train a RL agent to learn to play Azul using RLlib. My goals with this project are to gain real-world experience with RL and (hopefully) one day have an Azul competitor whose schedule is less constrained than the humans I usually play with. This is still a work in progress, so please check back soon to see what I’ve accomplished!

My eDict

Background: Language is a fascinatingly complicated part of what it means to be human, with many considering language to be one of the most profound cognitive abilities our species has (see this article from the MIT Quest for Intelligence). To me, one of the most important functions of language is to communicate our ideas to others, and consequently, the most effective communicators are those that communicate their ideas efficiently. Vocabulary is crucial for efficient communication, enabling one to effectively transmit one’s ideas to others. Yet, most people spend little effort expanding their vocabulary, outside of cramming for standardized tests. Such cramming may help for boosting your GRE scores (which fortunately are no longer required for admission to many PhD programs), but are unlikely to make any real expansion to one’s vocabulary in the long-term (see this article).

Approach: Back in 2017, I began writing down words that I encountered which were either completely unfamiliar to me, or unfamiliar enough that I would never use them myself. This list in my Notes app now contains 3633 words. I have begun developing an app called My eDict using BeeWare that will allow users to create their own vocabulary list and integrate words from their personal dictionary into their own vocabulary over time through daily challenges. My hope is that this will achieve two goals: (1) increase user comprehension of other’s speech/writing and (2) improve user communication of their own ideas. I am still working to develop the app, but plan to publish it soon. So, please check back if you are interested in using it!