About Me

My name is Albert Dotson and I'm a senior at Northwestern University double majoring in Computer Science and Computer Engineering. My decision to double major on both sides of the computer spectrum stems from my enjoyment of finding the unique connections between software and hardware so both parts of the computing experience thrive. Whether I’m building apps to fund my tinkering habits or developing software to control robots, all my work is done out of passion and curiosity for my craft and with aspirations to inspire future engineers to achieve their goals.

Main Skills

Click on each to learn more
Areas of Expertise: App Development, Computer Vision, UI Design, & Website Development
Coding Languages: C, C++, CSS, HTML, Java, JavaScript, & LUA

2010

My First Project

My journey through the world of Computer Science began unexpectedly when I was 12 years old and looking for ways to pay for materials I needed to build a small machine I devised. Because I had recently received my first phone and learned how lucrative app development had become, my interest was piqued, and I decided to attempt making a mobile game. There was just one problem with this lofty project I set myself towards: I had no clue how to start. Teaching myself how to code was an arduous task; I scoured through different online forums, studied countless YouTube videos, and, sunk hours into trial and error. As I learned more about the coding process, my motivation to continue working switched from simply making money to knowing I would receive bits of joy from overcoming every challenge coding presented.

Four months later, my hard work manifested itself into a completed game. Thrilled and anxious, I released my first app to the App Store under the company title of Accelerated Games. Over years, the game received a moderate level of success, but as I grew older, it felt less representative of who I was, leading to me taking it off the market. However, I understood without this app, I would never have found the drive to improve my skills and understand I cannot advance without learning from failure. And as time progressed, I realized my first game acted as only a stepping stone down my path of increasing my knowledge about the career I know is meant for me.

2012

App Development

Tank

My next stop on my exploration of the computing world didn't stray far from my first in theme but was leagues away in scope.
On the heels of releasing my first mobile game, I began development on a follow-up with greater ambitions. What began as an experiment to see if I could create a game with procedurally generated levels, this new project expanded into a full game with several dozen levels and multiple gameplay modes based on the simple top-down tank shooter genre. Developing a game of this increased scaled required me to teach myself how to code in the LUA programming language and the basics of Adobe Illustrator to create the graphics. Built from the ground up, my second game, Tank, was released in July of 2012 on the Apple App store for iPhones and iPads and the Google Play store for Android devices. Since this game's primary audience is young children, I tried to implement game design principles and graphics that favor straightforward game mechanics and intuitive controls. Over the game's lifespan, it has amassed over 50,000 downloads with one third of those being .99¢ purchases before the app was made free.
Tank Screenshot

2014

Honing New Skills

During 2014, my constant search to improve my technical abilities expanded beyond computers, leading to a gain of useful skills which supplement my previous talents and improve overall versatility. Click on the images below to learn more.
Presenting
As a minority in STEM, I am constantly reminded of the total lack of diversity in the field when at every Computer Science class or event I go to I can almost count the amount of people who look like me on one hand. This realization occurred very early on into my journey and I just could not accept being the only one of my African-American friends, family, or acquaintances interested in science. To solve this problem, I started by telling my friends and cousins about my love for science or convincing them to take computer science classes and saw this method having success. But, if I wanted to make a substantial impact, I had to reach a bigger audience. The chance soon arose as I was invented to present at a seminar about the importance of science for black middle schoolers and discuss my mobile game development process. Even though every other presenter was at least twice my age, the audience overwhelming said my presentation was their favorite because our small age difference made me relatable enough to inspire.

This experience opened my eyes so much to the amount of real change I could make to lower the STEM’s racial divide that there was no way I could make this a onetime event. Since then, I’ve made it a point to employ every opportunity present while convincing others this field is more than open to them, acting as a technical role-model for those who’ve never had one, and being an example of what’s possible with nothing but determination. My presentations waste little time on the coding and technical details, but explained how my journey, through programming, was one of learning how to try, fail, and keep moving forward. And, without question, my happiest movements are when someone much later who I’ve shared with and started down their own journey into coding with ample amounts of excitement ignited by me sharing my passion.

Inspiring the future

2014
GT
For the Summer of 2015, I was invited by the Georgia Institute of Technology to participate in their Summer Engineering Institute to participate in their competition challenging 12 teams of four to design, research, construct, innovate, and present on a given problem over three weeks. My team was given the task of building an electric bicycle, adding unique modification to make it stand out from other models, and create a marketing plan to sell it. I contributed to the team by devising our main modification of attaching a small wind turbine to the bike to allow wind powered charging while riding, creating an app to interface with the bike’s battery via Bluetooth to inform the rider of their current speed and distance until a recharge was needed, and design our logo. The team recognized my useful input by assigning me team captain.

To prepare for our final presentation, I coached the team on best practices for public speaking I had learned from my public speaking experiences. In part due to these efforts, we earned to highest marks for presentation quality from the panel of judges and won the whole competition.

Georiga Tech SEI Project

2015
Java
Although I spent more time branching out from Computer Science, I still made time to expand expertise of my main passion. To do this, I began taking Java classes at my school and the coding language quickly became one of my favorites. I began finding myself writing all sorts of extra programs to increase my proficiency and just have fun: from the super nerdy like competing with my teacher to see who could create a program to calculate integrals without any pre-built math libraries to the totally random like making program to see if you can write a story only using the 500 most common words. This experience with Java also made learning more about languages like C and C++ easier because of their similarities.

Learning Java

2014
Chinese
My time learning Chinese technically began four years prior, but this was the time frame when I really started taking this initiative seriously. I understand learning a language this complicated is a never-ending process so I’m far from being fluent, but I won’t let the daunting task deter me from my goal.

Learning Chinese

2014
Illustrator
Since needing to dabble in Adobe Illustrator to create graphics for my mobile games, the graphics program – and design itself – thoroughly caught my interest. I soon found myself taking every opportunity to fire up the program and draw art people wanted, whether it be a logo for a school event, promotional material for a non-profit, or just something random for myself which uses a tool I hadn’t used before. From there, I began looking deep into the cross section between design and coding, UI design, and spent my free time reading articles and listening to podcasts about its best practices. Using Illustrator is hands down one of my favorite activities on a computer, only second to coding.

My capacity and comfortability with the program has grown substantially since I first used it to the point where I’ve seemed to develop my own art style and feel confident I can realize any design I dream. You can see a small piece of my work and the progress I’ve made all around this page, as every piece of art that’s not an outside organization’s logo on this, or any website I’ve created, was made by me using Illustrator.

Adobe Illustrator

2014

2016

Website Development

Campus Heart

From the stress and confusion of my own college application process, the desire to ease the pain of applying to college for future students led me to create CampusHeart.com: a place for students to learn what they need to follow their heart. Creating this website from scratch required me to learn and use HTML, CSS, JavaScript, PHP, and SQL for the first time and put my UI design research to the test.
research

Research

Covering everything from the amount of students in a specific major to sports facilities open on campus, Campus Heart contains over 1500 data points worth of information to help students find their future home. Campus Heart's software helps you sort through the data and find what matters by sifting the information through judicious formulas and allowing students to rate the factors that are important to them.
compare

Compare

Students can put their top choices head-to-head and see which school aligns more to what they want. Using the student’s preferences on which factors within 12 different categories matter most, each school receives an overall compatibility score to quickly see which school aligns most with them. And, if a college they care about is not in Campus Heart's system yet, they can add their own data and get results.
Competition

Apply

If a student decides to create a free account with the website, they are able to save a school in their favorite to view them later, save their preferences on what factors they said mattered or change them as they like, and add a factor they care about to the compare page and see how it stacks up if it is not available for a school. Students can also save all your essays in one place as essay topics for your favorite school automatically appear, keep tabs on due dates for applications, interviews, and other deadline for favorites, and keep a list of their extracurricular activities in an organized way.

2018

Hands on Experience

My journey made two pivotal advancements during the past year by leading an improvement overhaul of Northwestern's Robotics Club as it's president and gaining my first piece of industry experience by interning at Northwestern Mutual Life Insurance.

NU Robotics Club

Joining the club during the Fall of 2017, I quickly proved my value to NU Robotics after directing a team of 6 approach completing our club's flagship project of building a lacrosse goalie robot and was elected one of the two co-presidents in April of this year. Since then, I've worked hard to revitalize the club's efforts and managed to more than double our membership before Summer break.

LAX Robot

Lacrosse Goalie Robot

Our club's lacrosse goalie robot is a mechanical goalie that uses computer stereo vision to track and anticipate a lacrosse ball. My role on the team as Project Lead is to coordinate meetings, set goal deadlines, plan a constant rate of progress for both the mechanical and software sides of the project, and contribute to the robot's development as well. My work on the robot includes programming the computer vision code with C++ and the OpenCV library to process images from two cameras on separate threads at 60fps, determine an object's change in position in 3D space, locate its final position relative to the robot, and adjust the rotation of a two-motor system using inverse kinematics. This speed should allow us to catch a ball moving at 75mph launched from 9 meters away once it's completed this Fall.
Click here to view the code on GitHub.

Presidential Responsibilities

When I joined Robotics Club, the club was far from reaching its full potential in ambition and scale, so a friend of mine and I sought to steer the club in an upward direction and ran for the two president positions. When elected, my first objective was to motivate the club's exec board to find creative outreach and encouragement methods and craft a new, more effective marketing brand. Together, we collaborated with other clubs to host events to increase notoriety, held public showcases of our work, and reconstructed how our less functional sub teams ran. As a result, our club has grown from 12 members to over 50 - with peak membership surpassing 100 - and gaining the respect of administrators and other organizations alike. My independent work to improve the club was using a combination of my design and CS skills to create a new club website, nuroboticsclub.org (hence its similar layout) and create the promotional material for the 2018-2019 school year. Throughout the past school year, my work has lead to acquiring another club to take on their underwater vehicle project, guiding double the teams to greater success than past years at our annual competitions in March, and creating proposals which have secured over $15,000 in grants and sponsorships.

Software Engineering Internship

Located in Milwaukee, Wisconsin, Northwestern Mutual is a nationwide life insurance company insurance over 4 million people. With about one third of the company's employees working in the technology field, there was plenty of room for me to grow and learn how professionals work during my 10 weeks there during the Summer.

Northwestern Mutual

I had the opportunity to work directly under one of the company’s senior software engineers as he assigned me my daily tasks, taught me how to deploy code changes and additions I made, and delivered insight into industry standards for software development. My main task over the Summer was to improve the front-end and back-end of an internal application used to locate the company’s 75 different offices around the country used by their financial representatives. The program began as someone needing to update its data manually whenever an office’s information changed, therefore the back-end portion of my work including remodeling a Java program using Spring Boot to run SQL queries on the database which contains the up-to-date data, restructure received data into JSON format, and deliver the JSON files to web-application when it loads so its data updates automatically. I was then set to work on fixing bugs within the Google Maps based web-application by editing its JavaScript and using the Google Maps API documentation as a guide. With the bugs squared away, my supervisor asked me to implement a set of new features the representatives had requested and was allowed to add some features I thought useful when I finished the given task early.
NM Building

2019

Microsoft Software Engineer Internship

The main takeaway from 2019 is my summer internship at Microsoft. For 3 months, I worked at their Redmond Washington headquarters on a sub-team of Microsoft Excel focused on Office Add-ins. My work focused around enabling Office Add-in functionality while the user is offline since they are effectively websites which work inside Office applications. The first half of my time there was creating a demo what's possible with offline add-ins, and I chose to make the Wikipedia add-in work offline. The result, which can be found here on GitHub allows users to navigate 1000s of previously visited and predicted future articles while offline while taking less than 50MB of the user's storage. It works by saving pages past pages using the Service Worker API and looking at the links within the currently opened page to decide which links to cache as part of the predicted future pages. My work on it also led to improving load times while the user was online by at least 150 times.

The second part of my job was to implement a system to install the data Office Add-ins needed for offline use during their initial install on all Microsoft Office Applications. I was able to finish the new feature and have it added the internal preview build before my internship was done. Along with that, I spent some time writing tutorials for add-in developers on how to use browser storage techniques to access data while offline and helping a PM intern with her project by writing test to prove her ideas worked.

I really enjoyed my time working for them, and excited to return there full-time after I graduate.

Contact

Feel free to contact me with any questions or comments by email at
albertdotson2020
@u.northwestern.edu