Project Information: Fall 2013
Artificially Intelligent Butterflies
During Fall 2013, we'll be using a completely new course project. We've created a new robot butterfly and you'll be programming its "brain". Our butterflies are designed to fly around in a little artificial world designed by past CS 2110 student Michael Whittacker, who will be on of our TAs in the fall. We provide you with the map and some basic operations for sensing the environment, monitoring battery power and wind and aromas that the butterfly can sense, and for deciding what direction to fly in, and how fast. Your job is to design a program that can efficiently guide the butterfly around so that it will visit each of a set of flowers that are on a list of "targets".
Details will be provided shortly, but the project will be done in three chunks, interleaved with other smaller programming assignments. The first butterfly assignment will be to implement a very simple and rather dumb search algorithm for finding the flowers: we'll start the butterfly up in a corner of the park, and you'll just sweep back and forth sensing the information associated with each cell and building a data structure to record the cells you've visited (you'll use an object-oriented data structure, because some parts of the park will turn out to be inaccessible because of barriers like big rocks -- obviously they wouldn't have flowers in them, but the butterfly can only get to such places by flying around the obstacles). You'll also monitor battery power levels, which will give you some experience with the way that the butterfly consumes power, recharges, and behaves if the battery runs low unexpectedly. You'll use the sensors that detect wind and aromas and power but only to measure properties of each cell.
Then in the second assignment, you'll gain experience with actually using the various sensors, and with power management. You'll also learn to steer the butterfly in more sophisticated ways.
The last and best assignment will be to go all-out and efficiently find the target flowers. To do this in a clever way, you'll need to figure out where flowers can be found using a model for how flower aromas are carried on the wind and how they spread over distances. With this, and with the data structure your butterfly learns as at navigates, your job will be to build the smartest butterfly of them all! We'll award prizes for the best solutions.
All our assignments will be relatively open ended: we won't spoon-feed you the solutions. But CS2111 students will get far more help from us, so if you feel that you will really need help, step-by-step, make sure to sign up for CS2111 and to attend those sections!
Automated Cheating Detection
We've noticed that some Cornell classes do a so-so job of enforcing the academic integrity policy. In CS2110, we have a solution: we're using an automated system that uses sophisticated artificial intelligence techniques combined with some pretty fancy program analysis tools to notice unusual similarities between programs turned in by different people. It is important to realize that these tools really work and that they are quite hard to fool. So while it might seem tempting to borrow a solution from a buddy, change the variable names and comments, or reorder the statements, our tools would be very likely to figure out what you did. We take cheating seriously, and cheating with an attempt to cover it up is grounds for failing the course outright. Realistically, it is much easier to just do the assigned problems than to get away with handing in code someone else wrote, because short of rewriting that code completely from scratch, we’ll catch it.
So you’ve been warned: It is just not possible to get away with cheating in CS2110. Please do your own work, and come talk to Professor Birman, or the TAs, as often as needed if you get stuck and need help. We’ll get you back on track. In contrast, borrowing a solution from a pal will just get both of you into very serious trouble.