|
|
A “Capstone” Course in Computer Ethics Donald Gotterbarn There are three general strategies to introduce discussions of computer ethics into the curriculum. The first and most common method is to dedicate a section of an introductory survey course to the impacts of the use and abuse of computer technology. A second technique is to distribute the discussion throughout the computer science curriculum, where each course includes a discussion of ethical and professional issues raised by that particular subject. The third approach is an in depth course for computer science majors. Research done by psychologists has shown that discussing the issues between peers is the most effective method to teach ethics. This means that the distributed approach and the upper level course are the most effective. Research in ethics has also shown that the distributed method is better. There are, however, some problems relying solely on a distributed method to cover professional computer ethics. Not all faculty members are comfortable discussing ethics, and ethical issues are often the first subjects dropped from a course when there is a time constraint. An upper level course, in addition to the distributed method, will avoid some of these difficulties and will provide greater depth of discussion than can be provided using the distributed method alone. One version of such an upper level course is described below. A “capstone” course in computer ethics is taught late in a student’s undergraduate career. There are several reasons for making it a late course. For example, many ethical issues faced by the computing professional are tied directly to his or her use of professional skills. The beginning student is not yet in a position to understand them. But capstone courses taken late in a students career can:
Courses that take this capstone approach require a teacher – or, if team taught, one of the teachers – to be conversant with the details of computer science. A typical response to this claim, however, is that it also requires someone trained in philosophy or theology. I think this is incorrect. Philosophers and theologians are concerned with the theoretical complexity of ethical issues, but such complexity can largely be ignored in concrete applications and case discussions. When dealing with professional issues, the fundamentals of ethical theory required as background are within the reach of every faculty member. Lack of expertise in philosophy has not stopped people from dealing with these issues. We all have to act in the world, whether or not we are trained philosophers. Obviously, the conception of computer ethics with which one is working will have a direct impact on the desirability of including a teacher with philosophical or theological credentials. If computer ethics is conceived as a study of the ethical implications of computer technology, then the dedicated course will need the standard techniques for teaching ethics, such as analyzing case studies and writing papers about a broad range of ethical issues and the computer’s relation to those issues. Someone trained in ethical argumentation is needed. But this is not the type of course I am describing here. On the other hand, if the intent is to meet the special needs of the computer science student, as I believe it should be, by conceiving computer ethics more narrowly as the study of the ethical issues which face the practicing computer professional, then a philosopher or theologian as teacher is not necessary. Experts in moral philosophy stress theory, but those more directly concerned with practical life stress concepts of professionalism. An emphasis on the conceptual maze of philosophical ethical theories sets a tone which reinforces the view that “ethics is a matter of opinion” and “all ethical judgment are equally correct.” The focus on professional standards in the development of software artifacts helps the student realize that, in professional ethics, it is a mistake to give equal weight to all divergent opinions. Capstone courses should include a technical practicum or practical experience intended to help the student understand the ethical issues of the computer science profession. Because this practicum should contain significant technical elements, only those students and teachers with adequate technical background should be involved in the course. The goals of a “capstone” course include:
I have taught capstone courses in two formats. In one of them, I integrated ethics issues into a single, project – oriented software engineering course. Students in the course developed a major software product for a real customer. (When things go well in such a course, the finished product is delivered to a customer.) I interviewed the students, then assigned them to different teams. One team worked with the customer to develop the system specification. Another team designed the test cases. Another team did the detailed design, and another did the coding. One student was assigned as the configuration manager. Such an approach mimics many elements in the real world. There are fixed time schedules. The project must be completed by the end of the semester. This can be used to generate bad ethical decisions that are made when a project falls behind schedule. The project also has limited resources, people, hardware and time. Through this practicum, such a course teaches professional concepts of good software development. Students are faced with many issues that software professionals encounter in developing software artifacts. Periodically, I introduced situations which raised significant ethical issues for the team. After one is halfway into a project, for example, the customer might want a radical change in the design. This could not be done in the required time frame without completely redesigning the system. This causes real difficulty in maintaining professional standards. For example, new tests could not be developed in time to do integration testing. Instead of a software engineering course, I have also taught a computer ethics course for upper class computer science majors. The details are presented below. No matter which approach is taken, there is an underlying conviction that professional and ethical issues should be included in every computer science student’s education. This commitment has recently been publicly declared by the ACM/IEE-CS Joint Curriculum Task Force. The material below is from my seminar in computer ethics for juniors and seniors who are computer science majors: The seminar is conducted on two levels. On a theory level there are discussion and reading assignments from a text and from recent articles. The practical level consisted of a simulation of a consulting company. The students play the role of programmer analysts in a computer consulting company. Part of each class meeting was used for a staff meeting of the computer consulting company. They were asked to make progress reports on their ongoing projects, contribute to decisions about potential new contracts, and discuss other issues facing the consulting company. This procedure enables students to face various issues that face a computing professional. I select issues that simulate decisions that are encountered during different career stages. Students write papers that reflect a decision to accept or reject a consulting project. These papers are then discussed in the seminar. To simulate a large team project we also do a term – long computer project. Students are given sketchy specifications (see below) for the project. Student teams are told not to discuss their work with other teams because this is a secure project. Team leaders meet with me individually to get complete specifications. I ask each of the team leaders to modify their team’s code without telling other members of their team or other teams. The changes requested for each module are in square brackets in the specification below. These changes are not on the specifications given to all team members. An immediate problem for the team leader is how to handle my requests. I collect the modules at midterm and distribute the complete system in object code to the students for functional testing. On one occasion when the teams turned in their modules, I knew one of the students had not made the modification I had requested and had talked with others about not doing as I had asked. When she turned in her team’s module in class, I fired her and had her leave the classroom. (This was prearranged with the student). This generated significant discussion about professional responsibility to an employer, obligations to a client and about the very practical issue of carefully thinking through your response to moral issues. It also clarified several issues about whistleblowing. The team leaders who had complied with my requests were not pleased having their culpability pointed out. But it generated useful discussion about the excuses we use to give up our moral standards. There is also a term paper for the course. Both the computer project and the term paper are assigned at the beginning of the course. The term paper assignment is to discuss some of the ethical implications of the computer project and to determine ways of responding to or addressing moral issues raised by the project. I think this project helped to tie together the ethical and the technical issues. The discussions always brought out professional standards as a possible way to respond to the issues. Here is the last project I used:
This project forced the students to actually face the issues rather than merely theorize about them. Go to: A Brief Overview of a Capstone Course Home > Teaching Resources > Teaching Computer Ethics > A “Capstone” Course in Computer Ethics |
|||||||||||||||||
HOME | IN
THE NEWS | RESEARCH RESOURCES The Research Center on Computing & Society |
||||||||||||||||||