Research in the Curriculum, and The Web

Catherine C. McGeoch, Amherst College

My remarks cover two distinct topics.

Algorithm Research in the Curriculum

Which is more important to runtime efficiency: a good algorithm or good programming skills? The answer you'll get depends on who you ask, and therein lies the problem. Most professionals, and therefore most students, specialize in either the ``abstract'' or the ``applied'' aspects of developing efficient software systems; but very few are able to integrate both viewpoints, or to switch from one to the other as the situation merits.

A longstanding lack of communication, and of appreciation, between theoreticians and practitioners has lead to this divergence. The problem is especially acute at the graduate and professional levels of computer science. For more elaboration of this point, read the report `` Theory of Computing: Goals and Directions ,'' which describes disappointing job prospects for graduating theoreticians and a sense of disconnection from other areas of computer science, and calls for renewed efforts to build connections between theory and practice.

I believe that one of the best ways to build the desired connections is to develop an experimental methodology for algorithm analysis, and to integrate this into the graduate and undergraduate curriculum. Good experimental research produces results more generalizable than program benchmarks, and more specific in detail than traditional theoretical analyses. Experimenters need not be restricted to the usual evaluation standards---either dominant operation counts or running times, depending on which school you are in---but can find new measures that are tuned for the questions at hand. Experimenters can extend traditional analyses by adding parameters and structure to simple random models of input, or generalize real-world experience by adding random perturbations to instances. Experiments can be tuned to address questions at any point of the spectrum between ``abstract'' and ``applied.''

Furthermore, experimentation on algorithms and data structures provides a rich source of student research projects at all levels. To undertake such a study, a student must be able to read the theoretical literature, to implement the algorithms and develop measurement tools, to plan informative experiments, and to analyze the results. The scope of the project can be scaled to the student's ability and time frame.

To be sure, undergraduate and graduate education in cannot neglect the endpoints: somebody has to understand the abstract models, do the math, develop the rigorous arguments, and find the key insights that produce fundamental breakthroughs; and somebody has to understand how architectures interact with programs, how large software projects can be developed, and how to squeeze those last few cycles out of the code. Computer science departments must develop curriculums that best serve their student constituencies. I believe that most current programs could be improved by giving each student exposure to a significant experimental research project in algorithms/data structures.

Computer Science Education and the Web

It is pretty clear by now that the World Wide Web is the most exciting piece of technology to come along in a long while. Right now we have a great opportunity to develop ways to use the web to enhance computer science education at all levels, to educate the public about our goals and achievements, and to help our colleagues in other disciplines make full use of this wonderful tool.

Below is a very short list of ways the web can be used to enhance computer science education.

We cannot afford to let this opportunity pass by; computer science educators must be leaders in the development of the enormous potential of this medium.