Software Development Positions at AoPS
Below are the available positions on our developer team. Although our developers have a variety of backgrounds and interests, we share a love of mathematics and problem solving, as well as a dedication to training the next generation of outstanding problem solvers.
You love creating with code, but you also enjoy diving into the internals of systems so you know how they work under the hood. Thinking about scaling systems, security, and databases are part of your day to day existence. You’re comfortable using Linux commands, digging through log files, and tracing the most mysterious of issues. You want to use your skills to create applications that educate and inspire the next generation of builders and also to maintain the availability, reliability, and security of those creations.
You create with code. Building new things and improving old things is an intrinsic part of who you are. You want to use those skills to make something that’s more than just a dressed-up ad-delivery company. You want to explore new technologies that will help us educate and inspire the next generation of builders. But most of all, you were just like our students when you were younger, and you want to build applications that you wish existed when you were a kid.
To apply, send to firstname.lastname@example.org your cover letter, resume, and your solution to the initial programming puzzle presented below. Please do not publicly post your solution to the programming puzzle. In your cover letter, please tell us about the coolest thing you ever made (or the coolest thing you’d like to make!). Links to live code samples or your github repo are a plus! All available positions are full-time in our offices in San Diego, CA.
Successful applicants will complete one or two phone screens as well as a full-day interview in our offices in San Diego. During the interview process, you'll work on a variety of problems with several future team members, so you'll get a strong sense of the camaraderie of our dev team.
Initial Programming Puzzle
Our largest current project is Beast Academy Online, a learning system for our elementary school curriculum. BA Online includes hundreds of puzzles, many written by one of our lead engineers who is also a World Puzzle Champion. Writing puzzles for BA Online often involves building puzzle generators and solvers and is the inspiration for this programming puzzle.
A Pyramid Descent Puzzle consists of a pyramid of positive integers. To solve the puzzle, you must find a path that traverses the pyramid from top to bottom visiting numbers whose product is a given target value. Each step in the path must go down one row, and go either one step to the left or one step to the right.
For example, suppose the pyramid below has a target value of 2.
A solver for this puzzle should output LR, indicating that the correct path starts from the 1 on top, goes Left to the 2 on the second row, then goes Right to the 1 in the center of the bottom row. (Note in particular that the successful path cannot go through the 1 at the end of the bottom row.) This gives the path shown in red below:
In your language of choice, write a solver that can solve any pyramid descent puzzle. Your solver can assume that every input pyramid has a first row with one number and every row thereafter has one more number than the row above. Each row is aligned such that the center of the row aligns with the midline of the pyramid (as shown in the samples above and below).
Below is a sample pyramid with target 720 along with the sample program input and output for this puzzle.