It would be a stretch to think that juggling can be taught.  The instructions would be to throw up the ball and catch the falling ball.  Repeat forever.  The juggler must learn for themselves how to perform that task.  Mistakes will happen, balls will drop but with each mistake the juggler learns something new.  The performers of Flip FabriQue you see before you today have spent years learning and perfecting their craft.  A lifetimes of trips, falls, and misses stand behind the high flying grace and balance we now applaud.

Interestingly enough, the same can be said for computer programs. Traditional programming can be thought of as implementing a function. The computer scientist must exactly describe a function that takes the present world as an input, the state, and returns the appropriate actions to take.  A cash register program would be a good example.  The state is the set of groceries we want to buy, the function totals up the cost of each item in the order, and the function returns the amount that we must pay.

However this kind of programming requires that a computer scientist knows exactly how to do the intended task.  Much like the problem of teaching people how to juggle, computer scientists are rarely able to directly teach computers how to solve real life problems like self-driving cars, walking robots, or facial recognition.  These are all actions that most able-bodied adults are able to do themselves on a daily basis.  What makes these problems so hard?

The problem is that human beings are wired to make connections on a subconscious level.   My driving instructor told me to stay in my lane, that was my instruction.  But it was a lot harder than that.  I turned the wheel and instantly swerved out of the lane, and then I overcorrected and flew off the other side of the lane.  I was sure that I would never learn how to drive.  I could not see how my driving instructor could be so calm in the face of such ineptitude.  But before long, I gauged how much to turn the wheel in order to correct my position and now after many years of driving, I make these corrections without a conscious thought.

I couldn’t hope to properly describe how I utilize the state of the car and the road in order to correctly stay in a lane.  What is now so simple for me to do is beyond my ability to explain.  Attempts to directly program solutions to real-world problems have been made, but the successes are few and far between.

So how do computer scientists solve this problem?  Instead of teaching the computer how to solve the problem, they teach the computer to learn to solve the problem.  Most Artificial Intelligence programs, AIs, are essentially a complicated function.  Car sensors provide the input to the function, which will output the action the AI should take.  As we mentioned before, writing this complex function for real-world problems is not easy to do.  Instead, the computer scientist writes a program, the fitness function, to grade how well the AI performed its task.  When the AI gets a poor grade, the AI alters its internal function so that it would have been closer to the correct answer.

Given enough good examples and practice, an AI can sufficiently alter its function to satisfactorily solve problems.  There are plenty of cautionary tales where the AI does unexpected things.  This can be caused by using bad testing examples.  For instance if the AI never drove at night when practicing, the AI might think that the road is wet.  Bad fitness functions can also lead to interesting effects.  If the AI is not penalized when it lifts the car on 2 wheels, we could accidentally give birth to a future stunt car driver.

So when we think of great teachers, like we have at Centre, instead of seeing them as fonts of knowledge, we should instead look to them as the facilitators of our learning.  Great teachers provide diverse challenges so that we can correctly adapt to the new challenges we see later in life, and provide constant feedback so that we know where we should improve.  So while I will refrain from throwing a pineapple on stage to see how diversely Flip FabriQue has trained, I do plan on letting my applause guide them to new heights.

By Michael K.  Bradshaw
Chair of Computer Science Program


Photo of Michael K. Bradshaw

Michael Bradshaw joined Centre as associate professor of computer science in 2014, where he had been visiting assistant professor since 2005 in addition to being associate professor of computer science at Hanover College.

His research interests include CyberKnight, an educational video game that guides students with no background in computational thought to college-level competency. Also, he is creating tools for Moodle, an open-source LMS, that can augment the learning experience for students.

Bradshaw earned a B.A. in computer science and mathematics from Centre in 1999, and a master’s degree and Ph.D. in computer science from the University of Massachusetts Amherst.

For more information and to purchase tickets to Flip FabriQue,  Click Here.