In this section of the module, we will be designing an API. We will do this on a class basis, initially, identifying the classes that we need and the design patterns that we should use.
We will then split into groups, and design interfaces for these classes, as well as any appropriate exceptions. Finally, you will each implement these interfaces for yourself.
The truth of the matter is finally out; lots of biological experiments are really boring. Would it not be better if we could just automate the whole process with a robot? Well, some one has done it. Try reading this paper:
King R.D, Whelan K.E, Jones F.M, Reiser P,J,K Bryant C.H, Muggleton S, Kell D.B, Oliver S (2004) Functional Genomic Hypothesis Generation and Experimentation by a Robot Scientist Nature 427 pp 247-252. PDF
We are going build an API, controlling the communication between the components of this system. Don't worry, though, we will not building either a reasoner, nor a robot.
Today, we are going to identify the main entities in the experiment that we will need classes for. We will start off working as a group on this.
First, read the paper!
Next, as a group, we will discuss what are the key components of the system. (I can think of three!). From here, we will move to thinking about how these components interact and what features they will need.
Today, we will turn the abstract designs from day one into Java interfaces, each with some tests which should work over the interface.
Each of you should now be able to implement the interfaces for yourself; we will split this work up between different individuals. At the end, of Day Four, we will try plugging the implementations into each other to see how they work.
This part of the module will be assessed, based on your own implementation of the interfaces given. The code will be "submitted" by checking into Subversion. You will be individually marked.
Criteria for marking are: