
Embedded EthiCS @ Harvard Bringing ethical reasoning into the computer science curriculum
We Value Your Feedback! Help us improve by sharing your thoughts in a brief survey. Your input makes a difference—thank you!
View our previous style of repository entries for over a hundred other modules that ran from 2017–2024.
- Browse by Course Title
- Browse by Module Title
-
Filter by CS Course Types
-
Filter by Ethics Topics
Basics of Digital Privacy
Instructor Materials for Basics of Digital Privacy
Module Description
This module is about privacy in the age of big data and machine learning. The focus is two-fold: first, students are asked to think about why privacy might be important (especially in an era where almost all of our data is already collected and many of us intentionally post information online), and second, students are tasked with evaluating 3-4 different conceptions of privacy and assessing whether they actually offer the kinds of protections we think are valuable. The course is a very introductory level CS course which covers basic programming concepts and the history of the field. The module is therefore also very general in order to fit with the aims and scope of the course.
Course Name: Great Ideas in Computer Science – CS1, Spring 2025
Great Ideas in Computer Science – CS1, Spring 2025
Instructor Materials for Great Ideas in Computer Science – CS1, Spring 2025
Course Description
An introduction to the most important discoveries and intellectual paradigms in computer science, designed for students with little or no previous background. Explores problem-solving and data analysis using Python, a programming language with a simple syntax and a powerful set of libraries. This course covers basic data types and collections (lists, dictionaries, tuples, and sets), control flow, recursion, supervised machine learning via regression, visualization, information hiding and encapsulation using classes and objects, and introduces the analysis of program performance. Presents an integrated view of computer systems, from switching circuits up through compilers, and examines theoretical and practical limitations related to unsolvable and intractable computational problems. Other topics include the social and ethical dilemmas presented by such issues as software unreliability, algorithmic bias, artificial intelligence, and invasions of privacy.
Module Title: Basics of Digital Privacy
Moral Responsibility and Software Development
Instructor Materials for Moral Responsibility and Software Development
Module Description
This module asks students to consider the relationship between software design and moral responsibility. The module works by proposing a basic principle of moral responsibility, and then presenting the students with case studies meant to problematize that basic principle in various ways to show how complicated the notion of moral responsibility can get. This course is about the design of computer programs, so the module focuses on the moral responsibility of programmers with respect to designing and producing these systems. The primary consideration in question is whether programmers (or the companies they work for) bear some responsibility for the impacts of their products. If the answer is yes, then “designing well” must include some consideration of designing ethically. Importantly, this module was run by the CS coursehead, so the module instructor guide may deviate slightly from the slides, and there may be aspects of the instructor guide that are missing information.
Course Name: Abstraction and Design in Computation – CS51, Spring 2025
Abstraction and Design in Computation – CS51, Spring 2025
Instructor Materials for Abstraction and Design in Computation – CS51, Spring 2025
Course Description
Fundamental concepts in the design of computer programs, emphasizing the crucial role of abstraction. The goal of the course is to give students insight into the difference between programming and programming well. To emphasize the differing approaches to expressing programming solutions, you will learn to program in a variety of paradigms — including functional, imperative, and object-oriented. Important ideas from software engineering and models of computation will inform these different views of programming.
Module Title: Moral Responsibility and Software Development
Organ Distribution Algorithms
Instructor Materials for Privacy and Efficiency in Design: The Game
Module Description
This module asks students to consider the use of algorithms for decision-making about resource distribution under conditions of scarcity. The central case for the module is the use of matching algorithms to pair kidney donors with kidney recipients, given that there are far more people in need of kidneys than there are available donated kidneys. The module presents two or three different ethical principles which could be incorporated into the matching algorithm in order to prioritize patients based on various different considerations, and the students are asked to weigh the ethical pros and cons of each approach.
Course Name: Algorithms and Their Limitations – CS1200, Fall 2024
Algorithms and Their Limitations – CS1200, Fall 2024
Instructor Materials for Algorithms and Their Limitations – CS1200, Fall 2024
Course Description
An introductory course in theoretical computer science, aimed at giving students the power of using mathematical abstraction and rigorous proof to understand computation. Thus equipped, students will be able to design and use algorithms that apply to a wide variety of computational problems, with confidence about their correctness and efficiency, as well as recognize when a problem may have no algorithmic solution. At the same time, they will gain an appreciation for the beautiful mathematical theory of computation that is independent of (indeed, predates) the technology on which it is implemented.
Module Title: Organ Distribution Algorithms
Generative AI and Meaningful Work
Instructor Materials for Generative AI and Meaningful Work
Module Description
One way of thinking about what computer scientists do is that they build tools. This module asks students to practice critically evaluating tools that can have downstream ethical impacts, using generative AI as a case study. In addition to questions about impact, trade-offs, accessibility, etc., the module focuses on the value of work. The last portion of the module asks students to reflect on how using generative AI impacts their experiences of meaningful work.
Course Name: Programming Languages – CS1520, Spring 2025
Programming Languages – CS1520, Spring 2025
Instructor Materials for Programming Languages – CS1520, Spring 2025
Course Description
This course is an introduction to the theory, design, and implementation of programming languages. Topics covered in this course include: formal semantics of programming languages (operational, axiomatic, denotational, and translational), type systems, higher-order functions and lambda calculus, laziness, continuations, dynamic types, monads, objects, modules, concurrency, and communication.
Module Title: Generative AI and Meaningful Work
Ethical Trade-offs in OS Design
Instructor Materials for Ethical Trade-offs in OS Design
Module Description
Engineers must often make tradeoffs, e.g. between speed and safety or flexibility and robustness. This module introduces students to cost-benefit analysis (CBA) as a structured process to guide decision-making about tradeoffs in the context of operating systems design. The module uses case studies to first familiarize students with the steps of CBA and how to apply them and then collectively assess some of CBA’s limitations as an all-purpose tool for determining the most socially and ethically appropriate course of action. The class session for this module was collaboratively run with the CS professor, who motivated the topic with technical content at the beginning of the session.
Course Name: Programming Languages – CS1520, Spring 2025
Operating Systems – CS1610, Spring 2025
Instructor Materials for Operating Systems – CS1610, Spring 2025
Course Description
This is an in-depth course in operating systems design and implementation, focusing on multicore operating systems kernels. Operating systems are some of the most complex software artifacts that exist. Kernels abstract the features provided by computer hardware, making those features safer and more convenient to use. This means that OS designers have to understand how hardware works (at least at the level of specifications) and how software works. OS programmers also must become comfortable with navigating in, and contributing to, code bases too large to wholly understand. Most of us can pick up this important skill.
Module Title: Ethical Trade-offs in OS Design
Data Privacy in Systems
Instructor Materials for Data Privacy in Systems
Module Description
This module explores privacy considerations for data systems. While data systems promise to economize a technology’s performance, depending on design, they can render people vulnerable to bad actors. After motivating the importance of privacy, we examine variance in legal requirements for privacy protections, taking the EU’s General Data Protection Regulation as a leading example. We then consider how attending to privacy considerations can improve design. In particular, we examine the adequacy of techniques like logical deletion (sometimes called “soft deletes”).
Course Name: Data Systems – CS1650, Fall 2024
Data Systems – CS1650, Fall 2024
Instructor Materials for Data Systems – CS1650, Fall 2024
Course Description
We are in the big data era and data systems sit in the critical path of everything we do. We are going through major transformations in businesses, sciences, as well as everyday life – collecting and analyzing data changes everything and data systems provide the means to store and analyze a massive amount of data. This course is a comprehensive introduction to modern data systems. The primary focus of the course is on the modern trends that are shaping the data management industry right now: column-store and hybrid systems, shared nothing architectures, cache conscious algorithms, hardware/software co-design, main-memory systems, adaptive indexing, stream processing, scientific data management, and key-value stores. We also study the history of data systems, traditional and seminal concepts and ideas such as the relational model, row-store database systems, optimization, indexing, concurrency control, recovery and SQL. In this way, we discuss both how and why data systems evolved over the years, as well as how these concepts apply today and how data systems might evolve in the future. We focus on understanding concepts and trends rather than specific techniques that will soon be outdated – as such the class relies largely on recent research material and on a semi-flipped class model with a lot of hands-on interaction in each class.
Module Title: Data Privacy in Systems
Fairness in Model Selection
Instructor Materials for Fairness in Model Selection
Module Description
This module introduces students to the complexities of fairness in machine learning through an extended case study centered on an osteoporosis risk classifier. The core focus is on critically evaluating the role of commonly used performance metrics in model selection and understanding how these metrics may support or obscure fair decision-making. As the case study unfolds, students are progressively provided with additional contextual information. At each stage, they are prompted to assess how the new information affects their interpretation of fairness and the appropriateness of different evaluation metrics.
Course Name: Machine Learning – CS1810, Spring 2025
Machine Learning – CS1810, Spring 2025
Instructor Materials for Machine Learning – CS1810, Spring 2025
Course Description
CS 1810 provides a broad and rigorous introduction to the principles of machine learning, probabilistic reasoning and decision making in uncertain environments. We will discuss the motivations behind common machine learning algorithms, and the properties that determine whether or not they will work well for a particular task. You will derive the mathematical underpinnings for many common methods, as well as apply machine learning to challenges with real data. In doing so, our goal is that you gain a strong, conceptual understanding of machine learning methods that can empower you to pursue future theoretical and practical directions.
Module Title: Fairness in Model Selection
Building Responsible Autonomous Vehicles
Instructor Materials for Building Responsible Autonomous Vehicles
Module Description
Autonomous vehicles (AVs) are increasingly common. According to one report, more than 54 million driverless vehicles were on the road in the United States during 2024. As with all vehicles, some collisions are unavoidable. For example, in 2023, a pedestrian was struck by a human-driven vehicle and thrown into the path of an autonomous vehicle. In addition to considerations of human well-being and safety, such cases raise important design questions for AVs. How should they navigate cases where collisions are unavoidable and unpredictable? Are there principles that help to mitigate harm and produce best outcomes? Here, ethical and design choices clearly coincide. This module examines whether analogies with (in)famous trolley problem cases in philosophy can lend insights for AV design, especially in cases where collisions are unavoidable.
Course Name: Planning and Learning Methods in AI – CS1820, Spring 2025
Planning and Learning Methods in AI – CS1820, Spring 2025
Instructor Materials for Planning and Learning Methods in AI – CS1820, Spring 2025
Course Description
Artificial Intelligence (AI) is already making a powerful impact on modern technology, and is expected to be even more transformative in the near future. The course introduces the ideas and techniques underlying this exciting field, with the goal of teaching students to identify effective representations and approaches for a wide variety of computational tasks. Topics covered in this course are broadly divided into search and planning, optimization and games, and uncertainty and learning. Special attention is given to ethical considerations in AI and to applications that benefit society.
Module Title: Building Responsible Autonomous Vehicles
Optimality is Value-Laden
Instructor Materials for Optimality is Value-Laden
Module Description
In reinforcement learning, an agent aims to maximize cumulative rewards. In a typical reinforcement learning course, students explore algorithms for computing optimal policies based on predefined reward functions. However, in real-world scenarios, reward functions are not handed to us—we design them. In this module, students step into the role of software engineers developing a rideshare application powered by reinforcement learning. They must design a reward function that balances technical goals with ethical considerations, accounting for societal impacts and potential unintended consequences.
Course Name: Introduction to Reinforcement Learning – CS1840, Fall 2024
Introduction to Reinforcement Learning – CS1840, Fall 2024
Instructor Materials for Introduction to Reinforcement Learning – CS1840, Fall 2024
Course Description
Modern AI systems often need the ability to make sequential decisions in an unknown, uncertain, possibly hostile environment, by actively interacting with the environment to collect relevant data. Reinforcement Learning (RL) is a general framework that can capture the interactive learning setting and has been used to design intelligent agents that achieve high-level performance in challenging applications such as Go, computer games, robotic manipulation, health care, and education.This course provides an introduction to reinforcement learning covering a range of problem formulations, algorithms, and theory. The four main themes of the course are (1) Markov decision processes (Bellman equations/optimality, planning, UCB, unknown environments, linear quadratic control, exploration, imitation learning), (2) bandits (epsilon-greedy, UCB, Thompson sampling, contextual bandits, linear bandits, exploration in MDPs), and (3) deep RL and methods for large-scale systems (policy gradient methods, Monte Carlo tree search, Q-learning, imitation learning).
Module Title: Optimality is Value-Laden
Moral Responsibility in the Face of Profound Uncertainty
Instructor Materials for Moral Responsibility in the Face of Profound Uncertainty
Module Description
In this module, participants consider decision-making about acting under conditions of uncertainty. The module takes as its starting point the decision by OpenAI not to release GPT-2 to the public, and asks whether that decision (and their subsequent decision to release the GPT) was morally justified. After discussing why utilitarian principles or cost benefit analyses may not resolve this question, participants are introduced to the precautionary principle as a way of thinking about decision-making under conditions of uncertainty. They discuss several variations of the principle and how these variations might apply to other scenarios involving decision-making about actions with potentially large consequences. The precautionary principle is explained, using Mason’s (2002) terminology, in three key pieces: the damage condition, the knowledge condition, and the potential remedy. These pieces of the principle can be adjusted or changed to make the principle more or less permissive with respect to what actions it allows and/or what remedies are prescribed. Importantly, this module was run by the CS coursehead, so the module instructor guide may deviate slightly from the slides, and there may be aspects of the instructor guide that are missing information.
Course Name: Introduction to Computational Linguistics and Natural-Language Processing – CS1870, Fall 2024
Introduction to Computational Linguistics and Natural-Language Processing – CS1870, Fall 2024
Course Description
Natural-language-processing applications are ubiquitous – from digital assistants like Siri or Alexa, to machine translation systems like Google Translate, to fluent conversational systems like ChatGPT, Claude, and Gemini. How do such systems work? This course provides an introduction to the field of computational linguistics, the study of human language using the tools and techniques of computer science, with applications to a variety of natural-language-processing problems such as these. You will work with ideas from linguistics, statistical modeling, machine learning, and neural networks, especially the technologies behind current large language models (LLMs). The course is lab- and project-based, with students working primarily in small teams, and culminates in the building and testing of a full transformer-based question-answering system.
Module Title: Moral Responsibility in the Face of Profound Uncertainty
Contextual Integrity Meets Differential Privacy
Instructor Materials for Contextual Integrity Meets Differential Privacy
Module Description
This module introduces students to the framework of contextual integrity (Nissenbaum 2010), a principled approach to evaluating privacy in socio-technical systems. Students will apply the framework to real-world scenarios in order to assess whether a privacy violation has occurred. In the latter part of the module, we explore the relationship between contextual integrity and differential privacy, examining how the two frameworks can complement each other.
Course Name: Applied Privacy for Data Science – CS2080, Spring 2025
Applied Privacy for Data Science – CS2080, Spring 2025
Instructor Materials for Applied Privacy for Data Science – CS2080, Spring 2025
Course Description
This class will provide an overview of the risks of private data leakage in data science applications and a firm foundation in how to measure and protect against these risks using the framework of differential privacy, together with a hands-on examination of how to build algorithms and software to preserve privacy, including a review of the deployed solutions in industry and government.
Module Title: Contextual Integrity Meets Differential Privacy
Code, Data, & Power
Instructor Materials for Code, Data, & Power
Module Description
In this module, we ask students to consider whether building open-source models is an effective way of ameliorating existing power asymmetries. One worry that many ethicists have raised regarding the status quo arrangement of the tech world, wherein a few large companies control a large market share of important software and other code, is that it consolidates a large degree of wealth and material resources in the hands of just these few large companies. Open source software has often been posited as a way of decentralizing access to code, thereby helping to set the stage for the redistribution of material resources among a greater number of people. Given this, it might seem plausible that creating more open source generative models (like Meta’s Llama model) would have a similar power-redistributing impact. This module calls into question the idea that creating truly open source models is a feasible solution to the problem of power asymmetries, given that these models require such a vast amount of resources to train and fine-tune, and the hardware required is also often proprietary (e.g. Nvidia chips).
Course Name: Advanced Computer Networks – CS2430, Fall 2024
Advanced Computer Networks – CS2430, Fall 2024
Instructor Materials for Advanced Computer Networks – CS2430, Fall 2024
Course Description
This is a graduate-level course on computer networks. This course offers an in-depth exploration of a subset of advanced topics in networked systems. We will discuss the latest developments in the entire networking stack, the interactions between networks and high-level applications, and their connections with other system components such as compute and storage.In this year’s edition, we will use machine learning as a prime example to understand its unique requirements and challenges in the context of networking. As machine learning applications increasingly rely on larger models and faster accelerators, the demand for enhanced networking capabilities becomes imperative. Throughout this course, we will study cutting edge networking solutions and principles for co-designing networks with compute and storage, to meet the evolving needs of machine learning applications. The course will include lectures, in-class presentations, paper discussions, and a research project.More information of this course is at https://github.com/minlanyu/cs243-site. Notes: This course was previously numbered CS 243.
Module Title: Code, Data, & Power
Ethics of Hacking Back
Instructor Materials for Ethics of Hacking Back
Module Description
In the face of a digital security threat, you are mostly on your own. There is no equivalent of state protection or police patrols. What is worse, you will likely receive no justice if your digital assets are attacked, destroyed, or stolen. Generally, these cases have seen no arrests, prosecution, or restitution. Unsurprisingly, some victims consider taking matters into their own hands by hacking back or striking against their digital attackers. In this module, we discuss the potential risks and benefits of hacking back and consider whether hacking back can be morally justified on the grounds of self-defense. We also discuss whether hacking back should be made legally permissible.
Course Name: Systems Security – CS2630, Fall 2024
Systems Security – CS2630, Fall 2024
Instructor Materials for Systems Security – CS2630, Fall 2024
Course Description
This course explores practical attacks on modern computer systems, explaining how those attacks can be mitigated using careful system design and the judicious application of cryptography. The course discusses topics like buffer overflows, web security, information flow control, and anonymous communication mechanisms like Tor. The course includes several small projects which give students hands-on experience with various offensive and defensive techniques; the final, larger project is open-ended and driven by student interests.
Module Title: Ethics of Hacking Back
Ethical Implications of Interpretability
Instructor Materials for Ethical Implications of Interpretability
Module Description
This module examines the ethical importance of being able to explain the human targets of machine learning decision systems exactly how the algorithms made their determinations. This feature, often referred to as “interpretability,” is generally seen as an important aspect of algorithmic systems that impact human lives and livelihoods. Some policy makers have even suggested that ML systems that aren’t interpretable shouldn’t be used. That said, many decisions made by humans that intuitively seem unproblematic aren’t interpretable, which raises concerns that ML faces a problematic double-standard. Furthermore, interpretability is subject to seemingly relevant trade-offs, e.g., a “black box” ML algorithm that is extremely accurate may, in some situations, be preferable to a less accurate algorithm that is interpretable. Students are given the opportunity to discuss the ethical importance of interpretability, the possible double standard charge in AI governance, and the ethical trade-offs regarding interpretability in extensive small group discussion.
Course Name: Topics in Machine Learning: Computational Properties in Interpretable Machine Learning – CS2822R, Fall 2024
Topics in Machine Learning: Computational Properties in Interpretable Machine Learning – CS2822R, Fall 2024
Course Description
There has been growing interest in recent years for machine learning systems that are somehow transparent about their inner workings — whether it be that the entire system is inherently interpretable, or that a single decision can somehow be explained. However, the question of what approach is best for what context remains elusive. In this course, we will focus on computational properties of interpretable machine learning methods, such as faithfulness or stability. Assessing methods with respect to these properties may allow us to rule out poorly-performing approaches without the need for expensive user studies. By categorizing methods by their computational properties, we will also be able to start thinking about which methods might be useful for a specific context. After a few initial assignments, the course will be focused on reading papers, discussion, and a semester-long project.
Module Title: Ethical Implications of Interpretability
Deepfakes
Instructor Materials for Deepfakes
Module Description
Deepfakes are synthetic images, videos, or audio recordings generated or altered by AI. In this module, we identify and discuss potential impacts of deepfakes on individuals and groups, especially on how they can influence what people think and do. We then consider recent strategies for addressing deepfakes. One strategy is to develop AI systems that can detect features of deepfake material. Another influential strategy is to confirm and track the provenance of digital media. In small groups, students assess the potential advantages and disadvantages of these strategies. Students share their insights and identify lingering challenges for building trust in light of deepfake technologies.
Course Name: Advanced Computer Vision – CS2831, Fall 2024
Advanced Computer Vision – CS2831, Fall 2024
Instructor Materials for Advanced Computer Vision – CS2831, Fall 2024
Course Description
Computer vision is about making systems that “see” by turning measurements of light into useful information. This course provides a comprehensive foundation for understanding and creating such systems. Topics include: camera geometry; radiometry and light transport; elements of biological vision; and classical and neural-network methods for extracting information about 3D shape, materials, dynamics and semantics. The course balances breadth and depth, and it blends theory and practice.
Module Title: Deepfakes
Except where otherwise noted, content on this site is licensed under a Creative Commons Attribution 4.0 International License.
Embedded EthiCS is a trademark of President and Fellows of Harvard College | Contact us