tl;dr
I designed a robot that can quickly drop scoring objects into specific areas based on color and magnetic field strength.
Overview
The second portion of Caltech's ME 14 class involved designing a robot in two weeks for a different competition each year. This time around, the competition was called the "Octagon" and is played with the (summarized) rules and field shown below:
Each team's robot holds twelve 7/16" diameter steel balls to drop into the nine PVC pipe cylinders in 4 minutes.
The scoring value of each cylinder will change dynamically during the contest so that teams will not know in advance which cylinders are worth 200, 100, or 10 points. Point value is determined by combining flashing LEDs and varying magnetic fields within the cylinders. Cylinders randomly change color and magnetic field strength every 20 seconds.
Three of the cylinders will display red LEDs at any one time, three will display green LEDs, and three will display blue LEDs. Only two out of each colored LED type (red, green, or blue) will be paired with a magnetic field at a time.
Cylinders with a magnetic field and a red, green, or blue LED are worth 200, 100, or 10 points when scored with a ball. Cylinders with no magnetic field are worth 0 points regardless of LED color.
Maximum robot dimensions: 8" x 10" x 12".

Approach
While other teams designed robots that would lift or launch the scoring balls into a desired cylinder, we opted for a design that drops balls from the top of our robot into each of the 6" tall cylinders via driving directly over them. This seemed like a much more efficient solution, especially given that we wouldn't need to drive up to each cylinder, dock, and reverse out like other robots. In terms of subsystems, this would require an adequately fast drivertrain, a ball dispensing mechanism, and a sensing area with a magnetometer and LED sensor.
In terms of strategy, note that each match consists of twelve 20-second scoring periods before LEDs and field strengths change. Since the field is relatively small, we estimated that we can visit at least 5 goals per period. With some combinatorics, we find that even in the worst-case scenario we are able to reach at least one magnetic green cylinder. This means we can afford to skip every blue cylinder we find. Additionally, we find that only ~16% of scoring period result in us not seeing a magnetic red cylinder. Assuming we deposit exactly one ball during each scoring period, we find an expected match score of 200(1-0.16) + 100(0.16) = 2208.
Given the above analysis, we agreed that the optimal strategy was to drop a ball into any magnetic red cylinder, or if none are found in a given scoring period, drop a ball into a magnetic green cylinder. We can simulate the strategy with some simple Python code:
Running this simulation many times over yields an average score of about 2230. It makes sense that this is slightly above our expectation given that we admit the possibility of scoring in two red cylinders per roudn. With our approach now fully validated, we moved on to the actual design. Because this was mostly a design and strategy competition, we did not focus too much of our two weeks on mechanical rigor, but the general decision-making process for each subsystem's design is shown in our preliminary design review (PDR). The completed CAD is shown in the critical design review (CDR).
PDR and CDR Slides