A PHILOSOPY OF COMPUTER SCIENCE COURSE FOR COMPUTING PRACTITIONERS

Computer science is a relatively young discipline, and the short history of electronic digital computing is loaded with a great variety of different approaches, definitions, and outlooks on computer science. Computer science has been woven together from a number of different disciplinary strands, yet the resulting science of­ fers a variety of unique ways of explaining phenomena, such as computational models and algorithms. Inter­ disciplinarity is an integral part of computer science, but it also makes normative and descriptive statements about computer science difficult. An overarching account or a set of rules for computer science research should cover fields such as software engineering, complexity theory, usability, the psychology of program­ ming, management information systems, virtual reality, and architectural design. It is important for computer scientists to understand the challenges and possibilities that the vast diversity of computer science research can cause. Many disputes and misunderstandings between computer scientists from different branches could be avoided by appreciating the different views of what computer science is and how computer scientists should work. Even more importantly, computer scientists should know that there are no generic approach suitable for all subjects in computer science. Mathematical and computational models are precise and unambiguous, yet they fail to capture the richness of physical and social reality. Narratives and ethnographies are rich in dimensions and sensitive to detail, yet equivocal and context­dependent. To cope with the variety of topics in computer science, computer scientists employ a vast diversity of re­ search methods (e.g., Tichy et al., 1995; Glass et al., 2004). However, it seems that computer science educa­ tion regularly fails to provide computer scientists the methodological and disciplinary understanding that in­ terdisciplinary work requires. It has been argued that the typical computing researcher learns his or her re­ search skills from a sort of master­apprentice relationships with his or her professors and from examining suc­ cessful prior research (Glass, 1995). The official ACM/IEEE curriculum recommendations (Denning et al., 2001) do not include a course on methodology, research design, or research paradigms. In addition, it has been argued that computer scientists publish relatively few papers with experimentally validated results, and that a description of methodology is often missing from research reports in computer science (Tichy et al., 1995; Vessey et al., 2002). Many computer scientists can justly be offended by such unfair accusations as the ones above. Certainly there must be many academic institutions in which computer scientists are given proper, formal training on re­ search design, research paradigms, work in interdisciplinary fields, epistemological and methodological con­ siderations, and so forth. Certainly many computer scientists meticulously report their research methodology in their publications. And certainly, many computer scientists are knowledgeable with the ontological and epistemological underpinnings of the particular research methodologies they utilize. At the department of computer science and statistics, University of Joensuu, we have come to a conclusion that it is a proper part of computer scientist's education to be aware of epistemological and methodological issues in computer science. Hence, we have included, in our curriculum, a course that deals with those issues—issues that fall in the do­ main of the philosophy of computer science. In this extended abstract we sketch the contents of our course and its aims (a detailed description of our course can be found at Tedre, s.a.).