Research and Advances
Computing Profession Contributed articles

Embedded EthiCS: Integrating Ethics Across CS Education

A Harvard-based pilot program integrates class sessions on ethical reasoning into courses throughout its computer science curriculum.
Socrates, illustration
  1. Introduction
  2. Key Insights
  3. Why Embed Ethics and Philosophers in the Teaching of Computer Science?
  4. How Does Embedded EthiCS Work?
  5. Embedded EthiCS Pilot
  6. Embedded EthiCS: Assessment of the Pilot Program
  7. From the Pilot to a Sustainable Program
  8. Looking Forward
  9. References
  10. Authors
Socrates, illustration

The particular design of any technology may have profound social implications. Computing technologies are deeply intermeshed with the activities of daily life, playing an ever more central role in how we work, learn, communicate, socialize, and participate in government. Despite the many ways they have improved life, they cannot be regarded as unambiguously beneficial or even value-neutral. Recent experience shows they can lead to unintended but harmful consequences. Some technologies are thought to threaten democracy through the spread of propaganda on online social networks, or to threaten privacy through the aggregation of datasets that include increasingly personal information, or to threaten justice when machine learning is used in such high-stakes, decision-making contexts as loan application reviews, employment procedures, or parole hearings.1,3,8,12,17,23 It is insufficient to ethically assess technology after it has produced negative social impacts, as has happened, for example, with facial recognition software that discriminates against people of color and with self-driving cars that are unable to cope with pedestrians who jay-walk.13,15 Developers of new technologies should aim to identify potential harmful consequences early in the design process and take steps to eliminate or mitigate them. This task is not easy. Designers will often have to negotiate among competing values—for instance, between efficiency and accessibility for a diverse user population, or between maximizing benefits and avoiding harm. There is no simple recipe for identifying and solving ethical problems.

Back to Top

Key Insights

  • Embedding ethical reasoning throughout the entire CS curriculum has the potential to habituate students to thinking ethically as they develop algorithms and build systems, both in their studies and as they pursue technical work in their careers.
  • Without creating a multitude of courses, CS programs can meet student demand for learning about ethics and the potential societal impact of their work as well as for acquiring computer science technical competencies.
  • By working with philosophy colleagues and students, CS faculty can integrate ethical reasoning into their courses rnore easily and rnore expertly. As a beneficial side effect of this approach, CS faculty gain competence in ethical reasoning and philosophers acquire a greater depth of understanding of technology.

Computer science education can help meet these challenges by making ethical reasoning about computing technologies a central element in the curriculum. Students can learn to think not only about what technology they could create, but also whether they should create that technology. Learning to reason this way requires courses unlike those currently standard in computer science curricula. A range of university courses on topics in areas of computing, ethics, society and public policy are emerging to meet this need. Some cover computer science broadly, while others focus on specific problems like privacy and security; typically, these classes exist as stand-alone courses in the computer science curriculum. Others have integrated ethics into the teaching of introductory courses on programming, artificial intelligence, and human-computer interaction.4,5,22

This article presents an alternative and more integrative approach to incorporating ethical reasoning into computer science education, which we have dubbed “Embedded EthiCS.” In contrast to stand-alone computer ethics or computer-and-society courses, Embedded EthiCS employs a distributed pedagogy that makes ethical reasoning an integral component of courses throughout the standard computer science curriculum. It modifies existing courses rather than requiring wholly new courses. Students learn ways to identify ethical implications of technology and to reason clearly about them while they are learning ways to develop and implement algorithms, design interactive systems, and code. Embedded EthiCS thus addresses shortcomings of stand-alone courses.6,10 Furthermore, it compensates for the reluctance of STEM faculty to teach ethics on their own18 by embedding philosophy graduate students and postdoctoral fellows into the teaching of computer science courses.

Here, we present the rationale behind Embedded EthiCS; describe its development at Harvard, giving examples from participating courses; discuss lessons we have learned; and consider challenges—intellectual, administrative, and institutional—to implementing such a program in academic institutions of different kinds. We conclude by calling for the computer science community to join together to build open repositories of resources to facilitate wider adoption of the approach.

Back to Top

Why Embed Ethics and Philosophers in the Teaching of Computer Science?

Embedded EthiCS was created in response to student demand for two elective courses in computer science at Harvard that considered ethical concerns in concert with computer science methods: “Privacy and Technology” and “Intelligent Systems: Design and Ethical Challenges.” (For a brief description of these courses, see the online appendix “Special Topic Courses in Computer Science and Ethics;”

Students can learn to think not only about what technology they could create, but also whether they should create that technology.

In teaching these courses, we repeatedly noticed how easy it was for students to forget about ethical concerns when focused on technical systems issues. Even those earnestly committed to learning and using ethical reasoning in their work quickly lost sight of these considerations when engaged in a technical design task. At the same time, we recognized that most computer science courses contain material for which an ethical challenge might arise. We thus designed Embedded EthiCS to habituate students to thinking ethically.

The Embedded EthiCS approach adds short ethics modules to computer science courses in the core computer science curriculum. By embedding ethics broadly across the curriculum, this approach meets three goals for computer science students: it shows them the extent to which ethical issues permeate almost all areas of computer science; it familiarizes them with a variety of concrete ethical issues and problems that arise across the field; and it provides them repeated experiences of reasoning through those issues and communicating their positions effectively.

While no single course with an Embedded EthiCS module will by itself produce ethically minded technology designers, we expect that incorporating modules throughout the curriculum will have a compounding effect—one that continually reinforces the importance of ethical reasoning to all aspects of computer science and technology design. In addition to exposing students to ethical content in a great breadth of computational contexts, this distributed pedagogy approach conveys the message that ethical reasoning is an expected part of a computer scientist’s work.

Embedded EthiCS is inherently interdisciplinary. Knowing what can be done with technology falls within the purview of computer science. Understanding, evaluating, and successfully defending arguments about what should be done falls within the purview of the normative disciplines, most notably ethics, a subfield of philosophy. For students to succeed at learning not only how to build innovative computing systems, but also how to determine whether they should build those systems or how ethical considerations should constrain their design, it is imperative that these two disciplines work together. To this end, Harvard Computer Science and Philosophy Department faculty have been partnering to develop the Embedded EthiCS curriculum. Computer science faculty and teaching assistants collaborate with advanced Ph.D. students and postdoctoral fellows in Philosophy to develop Embedded EthiCS modules for each course. This approach also opens up exciting new areas of research for the philosophers who teach the modules and broadens their teaching repertoire.

Back to Top

How Does Embedded EthiCS Work?

Each Embedded EthiCS course has an Embedded EthiCS teaching assistant who is an advanced Ph.D. student or postdoctoral fellow in philosophy with a strong background in ethics and considerable teaching experience. In consultation with faculty course heads, the teaching assistants design ethics modules through which students develop practical competence in addressing particular ethical challenges. They identify an ethical issue related to the course content, prepare for and lead one or two class meetings focused on that issue, and design an assignment and plan for assessing it. Depending on class size, the grading itself may be done by the Embedded EthiCS teaching assistant, by regular course teaching assistants, or through peer grading.

The modules are designed to give students three core ethical reasoning skills: the ability to identify and anticipate ethical problems in the development and use of computing technologies; the ability to reason, both alone and in collaboration with others, about those problems and potential solutions to them, using concepts and principles from moral philosophy; and the ability to communicate effectively their understanding of how to address those problems. The modules emphasize “active learning” activities and assignments that teach students to apply the philosophical ideas they have learned to concrete, real-world ethical problems as recommended by recent studies of ethics education.6,10 They are designed to help students exercise their newly acquired ethical reasoning skills in context.

Back to Top

Embedded EthiCS Pilot

We piloted the Embedded EthiCS program over three semesters (Spring 2017, Fall 2017, and Spring 2018), with 14 separate courses. Figure 1 lists the courses, grouping them by computer science area, indicating the ethical problems addressed and enrollments. To illustrate the content and design of modules, we describe modules for several courses here.

Figure 1. Embedded EthiCS courses 2017–2018.

  • Networks: Facebook, Fake News, and the Ethics of Censorship. This course focuses on the use of network modeling tools to study complex empirical phenomena involving current online networks, including the ways ideas and influence spread and the contagion of economic behaviors. The Embedded EthiCS module considered the censorship of so-called “fake news” by social media companies. Its goal was to engage students in different forms of ethical reasoning about whether social media companies are morally obligated to suppress the spread of “fake news” on their platforms, and, if so, what kinds of content they should suppress and what strategies they should use to suppress it. The Embedded EthiCS teaching assistant first discussed three philosophical topics with the students: the distinction between hard and soft censorship; a selection of J.S. Mill’s arguments against censorship from On Liberty;16 and an argument, reconstructed from a New York Times editorial, that Facebook is obligated to suppress fake news because it interferes with democratic governance.17 The module’s assignment asked students to write short essays identifying a strategy for suppressing fake news and defending a position about whether Facebook was obligated to implement it.
  • Data Systems and Programming Languages Courses. The discussion-based graduate course on big data systems investigates the design of data systems and algorithms that can “scale up,” that is, use a single machine to its full potential, and “scale out,” such as, use multiple machines (typically in the hundreds or thousands). The Embedded EthiCS module considered how to understand and protect privacy in the age of big data, particularly in light of the powerful inference capabilities large datasets and contemporary analytical tools make possible, some of which seem to violate individual privacy. Its goals were to give students a method for diagnosing the importance of privacy in a domain; to help students understand why traditional privacy protections, such as consent notices and anonymization, are ineffective for some flows of information; and to have students brainstorm solutions to difficult cases of statistical inference from publicly available information. To prepare for the in-class discussion, students were assigned a set of detailed questions on readings that dealt with different definitions of privacy and types of privacy protections.2,7,14,20 In class, the Embedded EthiCS teaching assistant introduced an interest-based method for thinking about these issues.21,24 The method starts by identifying the serious, common interests that underlie rights protections. The in-class session focused on the ethical grey area of whether unforeseen inferences about an individual from her publicly available data constitute a violation of privacy. (See Rumbold and Wilson20 for discussion.) The class also discussed whether individuals did or did not waive their right to privacy in other grey areas, such as when employers monitor employees at work. For cases where privacy was violated, students brainstormed design solutions using the methodology.

For the basic undergraduate course on data systems, we developed an alternative privacy module that examined why privacy is valuable and whether it is a right. It also examined trade-offs between privacy and other social goods, such as healthcare, in the design of data systems.

For the basic undergraduate programming languages course, the Embedded EthiCS module investigated ways to integrate ethics into the software engineering process. Before the module, the class studied techniques for verifying that a program will behave in accordance with its design specifications. The module focused on the idea of ethical design specifications as opposed to legal or technical ones, that is, design specifications to help ensure a program behaves in ways that are morally acceptable.

  • Design of Useful and Usable Interactive Systems: Inclusive Design and Equality of Opportunity. The Embedded EthiCS module for this human-computer interaction design course focused on the topic of inclusive design, namely, designing human-computer interaction systems to be both useful to and usable by individuals with disabilities of various kinds. Its goal was to lead students to think more clearly about the extent to which software developers are morally obligated to design for inclusion. The class began with a discussion of different meanings of “inclusive design.” Students then considered whether software companies are morally obligated to design for inclusion because doing so would, at a reasonable cost, alleviate unjust cumulative disadvantages faced by people with disabilities. During this discussion, the Embedded EthiCS teaching assistant introduced three relevant philosophical ideas: the distinction between actions that are morally obligatory and morally supererogatory; John Rawls’s principle of fair equality of opportunity;19 and the medical, social, and interactive models of disability.25 Students engaged in a group-based ethics simulation in which they imagined they were software developers deciding whether to redesign their company’s website for inclusion even if they might incur a cost like doing the work on personal time. The module’s assignment was incorporated into the final design project for the course. Students were asked to answer questions about whether they would be obligated to design their project for inclusion if they went on to develop it commercially.
  • Machine Learning and Discrimination. The Embedded EthiCS module for this introductory machine learning course focused on machine learning and its potential for discrimination. Its goals were to introduce students to different theories of wrongful discrimination, to lead them to appreciate that designing ethical machine learning systems involves more than designing accurate machine learning algorithms, to introduce them to formalized fairness criteria, and to lead them to think about the implications of an “impossibility” result.11 After giving a brief presentation on theories of wrongful discrimination (for which chapter 1 of Hellman9 provides an overview), the Embedded EthiCS teaching assistant presented a case study in which an employer’s hiring practices generated outcomes that correlated with the race of job applicants (based on Barocas and Selbst3). The procedure was grounded in a sound business rationale and was also the product of historical injustice against certain groups. The students discussed whether the case was an instance of discrimination on two different types of theories of discrimination: anti-classification theories and anti-subordination theories.3 The distinction between these two theories was then used to discuss conflicts between formal fairness criteria and the public discussion surrounding the use of COMPAS, a recidivism risk prediction tool, to inform judge’s decisions in parole hearings. The assignment required students to design an algorithm for fair hiring practices that would reduce disparate impact while also producing socially good outcomes in the labor market, and to defend their design choices.

Back to Top

Embedded EthiCS: Assessment of the Pilot Program

Our experience with the pilot program has shown it is not only possible to integrate the teaching of ethical reasoning with core computer science methods but also rewarding for students and faculty alike. Following each Embedded EthiCS class session, faculty informally provided feedback, and we asked students to complete a short survey. Faculty reported the modules contributed to classes with only a modest burden on them, and that they learned from them.

Student surveys aimed to assess the effectiveness of each module and of the module approach in general. Figure 2 presents key survey results. Responses were overwhelmingly positive, supporting continuation of the initiative. Over 80% of students in all courses—and over 90% of students in five of the classes—agreed these class sessions were interesting. In all but two classes, more than 80% of students reported they would be interested in learning more about ethics in future computer science courses. Comments, which one-quarter of the students provided, were overwhelmingly positive, with many expressing eagerness for more exposure to ethics content and more opportunities to develop skills in ethical reasoning and communication. Negative comments were largely specific to individual class content or presentation. Some students wanted more breadth or depth, others more background. One comment about overlap between two classes suggests the need to coordinate across classes.

Figure 2. Embedded EthiCS Pilot Evaluation.

Back to Top

From the Pilot to a Sustainable Program

For the first pilot of Embedded EthiCS in the spring semester of 2017, one Ph.D. student developed modules for four different classes: the introductory “great ideas” class, a theory course on networks, a data science course, and a human-computer interaction class. Based on the success of that effort, we engaged two Ph.D. students in AY 2017-2018 to develop modules for an additional 10 courses and repeat the modules for three of the original four courses.

In AY 2018-2019, we are working toward developing a corps of graduate student and postdoctoral teaching assistants for the program. A postdoctoral fellow leads weekly meetings of past and present teaching assistants and coordinates the development of modules. In Fall 2018, nine courses include Embedded EthiCS modules, including four courses on new subjects, two in systems and two in theoretical computer science.

What have we learned? The key lessons concern student engagement, successful faculty roles, teaching assistant experience, and barriers to embedding ethics. A set of best practices is emerging.

For engaging students with ethical reasoning, we found that techniques that encourage an inclusive discussion with smaller classes tend to be effective with larger classes as well. In particular, Embedded EthiCS modules are most effective when the issues raised connect technical material to ethical issues already salient to students, the module employs short active learning exercises, and an assignment gives students practice with the ideas developed in the session.

We have found that Embedded EthiCS modules work best with close faculty engagement. Participating fully in the design of the modules, as described here, and being personally involved in the module class session(s) are crucial. Computer science faculty can also contribute to the success of Embedded EthiCS in two further ways: by including an assignment (either separate or part of a larger problem set) that contributes to the course grade in some way, however minor; and by mentioning ethical issues during other parts of the course to preview the upcoming module, refer back to the lesson, or otherwise signal the importance of the topic. These activities typically require only three hours of faculty time. When the assignment contributes to the final course grade and when faculty are physically present in the Embedded EthiCS class session, students understand that the faculty value the place of ethical reasoning in the course and that the module is a core element of the course content rather than an optional supplement.

We have found that Ph.D. students and postdoctoral fellows who are teaching assistants for Embedded EthiCS can embed modules in three to four different courses per term, depending on how many modules are new and how much material is already available. Although the philosophy teaching assistants’ work differs from the usual leading of discussion sections and grading essays, the workload for preparing and teaching three or four Embedded EthiCS modules is the same, 14-20 hours a week. Further, teaching assistants who have participated to date report they benefited enormously from exposure to a breadth of computer science concepts and methods for which their philosophical expertise is relevant. We anticipate this experience will also prove valuable on the job market and, for many, to their research.

Several of the barriers we encountered are common within cross-disciplinary ventures. First, we saw typical insecurities: philosophers who were concerned about their lack of technical expertise and computer scientists who were concerned about their lack of familiarity with ethics and reluctant to discuss ethical issues with students. Although we found the technical barrier to productive ethical discussions of computer science methods and systems is much lower than many philosophers expect, philosophers without a background in computer science still need support, both financial and intellectual, to develop the requisite background knowledge. We also found many computer science faculty interested in attending a brief introductory computer ethics course focused on philosophical theories and methods relevant to computing technology challenges, a possibility we are currently exploring.

Our experience suggests the process of co-designing Embedded EthiCS modules helps mitigate insecurities, and the presence in the class of philosophers with the expertise to answer questions is essential for success. Strategies we have found helpful include selecting the topic for the ethics module before the semester begins, with input from both computer science faculty and philosophers. Doing so provides the philosopher time to develop the required technical knowledge in the relevant specific content area. Building a repository of past material for reuse or to serve as models for future modules has also proved useful.

Embedded EthiCS modules are most effective when the issues raised connect technical material to ethical issues already salient to students.

A second barrier arises from the disciplines’ different methodologies and vocabularies. In the setting of a computer science course, students accustomed to problem sets with a single correct answer often have trouble when there are several acceptable answers to ethical problems. To address this challenge, within each module, we discuss the controversial nature of some ethical problems, model successful ethical reasoning and inclusive discussion during class, and design activities for students to practice this kind of reasoning and discussion. To bridge the ethics and computer science course vocabularies, and to foreground the philosophical material in need of more explanation, computer science faculty work together with the Embedded EthiCS team in the design and implementation of the modules.

A third cross-field challenge is recruiting philosophers to develop and teach the Embedded EthiCS modules. Hiring numerous Ph.D. candidates from a single philosophy graduate program to cover the full range of computer science courses is impractical. The Philosophy Department needs these graduate students to teach its own courses, and the students themselves need experience teaching those courses. To address this challenge, we are including philosophy postdoctoral fellows in the teaching assistant cadre. For these postdoctoral fellows too, we expect the training and experience they gain will benefit their research and employment profile.

We also uncovered assessment and institutional challenges. The approach of integrating ethics pedagogy into core computer science courses reflects a hypothesis that recurring exposure to this type of reasoning across the curriculum will habituate students to thinking ethically when pursuing technical work. Post-module surveys provide insight into the effectiveness of particular modules, but we want to measure the approach’s impact over the course of years, for instance, as students complete their degrees and even later in their careers. By design, Embedded EthiCS makes small interventions in individual courses, precluding the usefulness of short-term evaluations of impact at the individual course level (for example, pre-course/post-course surveys22). We thus need to find ways to measure the long-term effectiveness of the Embedded EthiCS approach and compare it to other approaches. As measuring the impact of teaching ethics within the CS curriculum is a challenge regardless of approach, we aim to identify broadly applicable methods.

The institutional challenges to mounting Embedded EthiCS derive from its cross-disciplinary nature. In particular, university support, both financial and administrative, is crucial. Funding is needed for teaching assistants and postdoctoral fellows, including senior level postdoctoral fellows able to train and support the efforts of those developing modules for courses. Administrative support is needed for recruiting faculty and courses in computer science, for recruiting teaching assistants and postdoctoral fellows in philosophy, and for organizing and managing a repository of materials for the program, including modules and evaluation materials. Several of these challenges are made more complex because they cross university divisions.

Back to Top

Looking Forward

Teaching computer scientists to identify and address ethical problems starting from the design phase is as important as enabling them to develop algorithms and programs that work efficiently. The strategy of integrating the teaching of ethical reasoning skills with the teaching of computational techniques into existing computer science coursework not only provides students valuable experience identifying, confronting, and working through ethical questions, but also communicates the need to identify, confront, and address ethical questions throughout their work in computer science. It provides them with ethical reasoning skills to take into their computing and information technology work after they graduate, preparing them to produce socially and ethically responsible computer technology, and to justify their ethically motivated design choices to their colleagues and employers. Computer scientists and technologists with these capabilities are important for the long-term well-being of our society.

We invite those at other institutions to join us by integrating ethics throughout their own computer science curriculum and to help us expand the open repositories of resources we are developing for ethics modules, including in-class activities, case studies, assignments, and recommended readings. We also think it is important to share lessons learned, approaches to meeting the challenges of university support for these efforts, and ways to engage and train philosophers to participate in them.

Figure. Watch the authors discuss this work in the exclusive Communications video.

Back to Top

Back to Top

    1. Angwin, J., Larson, J., Mattu, S. and Kirchner, L. Machine Bias. (May 2016). Retrieved Oct. 13, 2018;

    2. Barocas, S. and Nissenbaum, H. Big data's end run around procedural protections. Commun. ACM 57, 11 (Nov. 2014).

    3. Barocas, S. and Selbst, A. Big data's disparate impact. California Law Review 104, 671 (2016).

    4. Burton, E. Goldsmith, J. and Mattei, N. How to teach computer ethics through science fiction. Commun. ACM 61, 8 (Aug. 2018).

    5. Califf, M.E. and Goodwin, M. 2005. Effective incorporation of ethics into courses that focus on programming. In Proceedings of the 36th SIGCSE Technical Symposium on Computer Science Education. (St. Louis, MO, 2015) ACM Press, New York, NY 347–351. DOI:10.1145/1047344.1047464

    6. Cech, E.A. Culture of disengagement in engineering education? Science, Technology, & Human Values 39, 1 (2014), 42–72.

    7. Dwork, C. Differential privacy. Automata, Languages and Programming, M. Bugliesi, B. Preneel, V. Sassone, and I. Wegener, (eds) Lecture Notes in Computer Science 4052 (2006). Springer, Berlin, Heidelberg.

    8. Economist. Do social media threaten democracy? (Nov. 2017). Retrieved Oct. 13, 2018;

    9. Hellman, D. When is Discrimination Wrong? Harvard University Press, Cambridge, MA, 2011.

    10. Hollander, R. and Arenberg, C.R. (eds.). Ethics Education and Scientific and Engineering Research: What's Been Learned? What Should Be Done? Summary of a Workshop, National Academy of Engineering. The National Academies Press, Washington, D.C, 2009.

    11. Kleinberg, J., Mullainathan, S. and Raghavan, M. Inherent Trade-Offs in the Fair Determination of Risk Scores (2016), arXiv:1609.05807

    12. Knight, W. Biased algorithms are everywhere, and no one seems to care. Technology Review, (July 2017). Retrieved Oct. 13, 2018 from

    13. Levin, S. Uber crash shows 'catastrophic failure' of self-driving technology, experts say. The Guardian (Mar. 2018);

    14. Levy, K. and Barocas, S. Refractive surveillance: Monitoring customers to manage workers. Intern. J. Commun. 12 (2018), 1166–1188.

    15. Lohr, S. Facial recognition is accurate if you're a white guy. New York Times (Feb. 2018);

    16. Mill, J.S. On Liberty. Parker and Son, London, U.K., 1859.

    17. New York Times Editorial Board. Facebook and the digital virus called fake news. (Nov. 2016);

    18. Pease, A. and Baker, R. Union College's Rapaport Everyday Ethics Across the Curriculum Initiative. Teaching Ethics, 2009.

    19. Rawls, J. A Theory of Justice, Belknap, Cambridge, MA, USA, 1971.

    20. Rumbold, B. and Wilson, J. Privacy rights and public information. J. Political Philosophy, 2018.

    21. Scanlon, TM. The Difficulty of Tolerance: Essays in Political Philosophy. Cambridge University Press, Cambridge, MA, USA, 2006.

    22. Skirpan, M., Beard, N., Bhaduri, S., Fiesler, C. and Yeh, T. Ethics education in context: A case study of novel ethics activities for the CS classroom. In Proceedings of the 49th ACM Technical Symposium on Computer Science Education (Baltimore, MD, 2018). ACM Press, New York, NY, 940–945; DOI:10.1145/3159450.3159573

    23. Sweeney, L. Uniqueness of simple demographics in the U.S. population. LIDAP-WP4, 2000. Carnegie Mellon University, Laboratory for International Data Privacy, Pittsburgh, PA.

    24. Tasioulas, J. The moral reality of human rights. Freedom from Poverty as a Human Right: Who Owes What to the Very Poor? T. Pogge, (ed). Oxford University Press, co-Published with UNESCO, 2007.

    25. Wasserman, D., Asch, A., Blustein, J. and Putnam, D. Disability: Definitions, models, experience. The Stanford Encyclopedia of Philosophy (Summer 2016 Edition). Retrieved July 19, 2018 from

Join the Discussion (0)

Become a Member or Sign In to Post a Comment

The Latest from CACM

Shape the Future of Computing

ACM encourages its members to take a direct hand in shaping the future of the association. There are more ways than ever to get involved.

Get Involved

Communications of the ACM (CACM) is now a fully Open Access publication.

By opening CACM to the world, we hope to increase engagement among the broader computer science community and encourage non-members to discover the rich resources ACM has to offer.

Learn More