sharadsinha

Posts Tagged ‘Experimental Computer Science’

Experiments in Computer Science/Engineering?

In Design Methodologies, Education, Embedded Systems on February 1, 2013 at 1:35 AM

A friend of mine, who is doing a project on implementing various image processing algorithms (like edge detection, adding colors etc.), was asked by the concerned supervisor to conduct experiments as part of the work. This friend then asked me what the supervisor meant by experiments in this particular case. I was taken aback initially because I had not come across the term experiment being associated with computer science/engineering in a case where the principal job was to implement some algorithms  already developed by someone else and package the implementation as a software. Here, there is no hypothesis to be tested which is an integral part of any experimental science or approach! If the student’s job had been to choose an edge detection algorithm for implementation, by controlled experiments using different kinds of edge detection techniques on the same kind of workload, then that would have  qualified as an experiment.

Nevertheless, I made some suggestions: examine the execution time of the developed software package as the input image size changes; test if there is any dependency based on the image format; test the performance (visual perception of quality of result, execution time) as the amount of information varies across images ( for example an image with a few straight lines/curves with a few orientations vs. an image with hundreds of straight lines/curves with varying orientations). I do not know if the concerned supervisor meant this or something else or the term was used in a loose way to refer to software testing.

However, I decided to explore this topic a little bit more. I found that Stanford University has a graduate level course titled Designing Computer Science Experiments. An excellent paper on what is experimental computer science by Peter J. Denning, a former ACM President, was published in 1980 and can be found here. A good repository of resources is maintained by Prof. Dror Feitelson of Hebrew University, Israel here. Researchers in the field of computer architecture theorize (make a hypothesis) and do a lot of experiments to test their theory.  For instance, people work on different kinds of FPGA architectures to see their benefits and drawbacks. The essential point is that in an experimental approach, one states a hypothesis, conducts experiments and then analyzes the data generated as a result of experiments to test the hypothesis.