Anytime algorithms and (student?) project management

Student dissertation projects (e.g. those of final year undergraduates and masters students) are a great way to think about planning and real-time/embedded intelligence. That's because such dissertations really are different from many academic or `real world' projects – there really are hard deadlines. For most projects you have many options for. changing scope, including slipping a deadline, increasing resources, or compromising on quality / what's delivered. So you try to juggle these options in a complex way and can sometimes lose out on clarity. With student dissertations, the only resource that can be increased is the student's own time, and the deadlines are hard: graduation.

What's been extremely useful to me in thinking about such tasks is the AI concept of an anytime algorithm. This is very much related to iterative / agile style project management. The idea is that you try to come up with an algorithm that will always produce an answer, but then the longer you let it run, the better the outcome will be. So you set that up, get it running, then start trying to stall everyone else while you wait for your AI system to get a good enough (or ever-better) result.

This is somewhat like how brains make decisions, and also insect colonies.  Here the anytime algorithm is called "quorum sensing", but it's a little more complicated, because the deadline partially depends on how good of a solution / final outcome you can find. Basically when enough nerve cells or insects (respectively) have come to a consensus that you've achieved that threshold quality, then the whole organism or colony acts on that consensus. For example in insects, this is usually observed as moving the colony to a new location because something is wrong with their old home.  For brains it's usually making a choice e.g. which of two buttons to push, because the animal whose brain is being observed is probably wired up in some kind of a chair and can't do much else than push buttons & eat the rewards. (This is apparently more fun that it sounds -- I've seen animals that were very excited to go get in the "puzzle & reward" chair in Michael Shadlen's lab.)

When there is an environmental stressor that means it's important to come to a decision faster, then the brain or colony just drops the definition of "enough" -- fewer individuals coming to the consensus triggers the action. Speed is easy, the consequence is "just" a higher error rate.

For students projects, it's probably a bad idea to have quite that smooth / continuous of an anytime algorithm. You know for a fact you have a few months at the beginning, so you can go ahead and use more conventional "waterfall" style methods of setting up the basic project, getting big or ambitious components together like a large data set or choosing a new software platform. But what I do is pick a date about a month into the final semester of the project and say "I want to see that you have enough of your project working that you can write a passing dissertation about it by this date." 

From there, from the passing project, you enter the anytime algorithm stage. Now you can work off a list of ideas to make the project better and move it into exceptional and outstanding, based on the fact you have a platform that you could always "release" / write up. You can see how good your outcomes are and make an informed decision about how much time to invest in this part of your educational experience.

At some stage typically a month later you need to enter the same process with the dissertation write up. It's fine to start writing up earlier of course! Keeping track of literature and development notes by writing drafts of dissertation chapters both helps with the keeping track part and saves you some (but maybe not as much as you'd think) time later. But about two months before the dissertation is due, it's important to put a few weeks into writing a passing dissertation, or preferably better than passing. The dissertation is what actually gets marked, so aim high here. 

But once you've gotten the dissertation to the point where you could submit it now, you can again enter into a second, parallel, anytime algorithm. What's likely to get you the highest mark, and / or get you some other goal. Maybe you really just want to know the outcome of your experiments because your curious, or maybe you will use these outcomes for a future business idea or for a writing an academic paper so you can apply for research funding or a scholarship or just help contribute to human knowledge. 

At any rate, ideally the last few weeks you are deciding whether to add to your project your your dissertation and iterating between these, and also your supervisor is reading a draft (I personally only read at most one draft, and I read students' drafts in the order I receive them) and will hopefully give you feedback too.

If you can't guess, I wrote this for this year's dissertation students, because their research is already too interesting and I ran out of time to explain it in our weekly meeting. But I hope it helped you too even if you aren't one of my students this year.

pictures of students in a google meet