Responsible Software (CS-290)

The course will run for the first time in the Autumn Semester 2024-2025.

The importance of software in systems and technologies has drastically increased in recent years (Artificial Intelligence, Internet of Things, Big Data, social networks, smartphones, web, etc.) and with it the responsibility of software engineers. Indeed, software now has large-scale impacts on our society and on our environment. This responsibility implies for engineers to be able to integrate ethical concerns in the whole software engineering process, and to approach software design and development in terms of societal needs while minimizing potential harm.

This course guides students in acquiring concrete strategies for a responsible approach to software design and development. The course uses case studies and programming exercises to allow students to practice these strategies on real-world examples that introduce a range of software-related ethical issues. The teaching approach aims at increasing students’ ability to a) identify ethical issues and b) take concrete actions to mitigate the associated risks in the context of software design and development projects.

Computer Science4 ECTSFall
Bachelor 3 and 5


The course combines a) knowledge about a range of ethical challenges related to software, and b) pragmatic tools/strategies that students can use in practice to identify and work on ethical risks in the domain of software.

The course will use cases based on real-world examples to review a range of ethical challenges related to software, including the following themes and questions:

  • Sustainability: What influences the environmental impact of software in terms of energy consumption, CO2 emission and use of resources? How to estimate and limit this impact?
  • Fairness: What is bias in software? What are its sources and what types of impacts can it have? How to identify and mitigate fairness issues?
  • Transparency: What types of issues arise from a lack of transparency in software? What methods can help users to understand how software works (as well as its limits) and what are their limitations?
  • Autonomy: How are people represented in software? How does software design affect user control (over the software, over themselves)? What factors contribute to the empowerment / disempowerment of users?
  • Safety: How to anticipate potential harmful impacts resulting from the normal (and abnormal) use of software at the scale of the individuals, groups or society? What types of mechanisms can be used to protect users from harmful impacts and what are their limits?

Note: Other concerns such as privacy are not directly addressed in this course since they are already covered in other courses in the curriculum but may be involved in the cases used in the course.

Through the course activities, students will get to learn and practice concrete strategies for a responsible approach to software design and development including:

  • User and stakeholder analysis strategies
  • Strategies for eliciting values
  • Impact anticipation strategies
  • Risk assessment strategies
  • Decision-making strategies

Learning outcomes

After taking this course, a student should be able to:

  • Assess the level of responsibility of existing software using a set of ethical lenses
  • Identify and explore ethical questions during software design and development
  • Integrate environmental and social concerns into the software design and development process
  • Consider the perspectives of different stakeholders in a software project
  • Elicit stakeholder values and identify value tensions in a software project
  • Investigate the potential benefits and potential harms of software for different stakeholders
  • Assess the ethical risks associated with software
  • Make design or development decisions taking ethical risks into account

Transversal skills:

  • Take account of the social and human dimensions of the engineering profession.
  • Take responsibility for environmental impacts of her/ his actions and decisions.
  • Demonstrate the capacity for critical thinking.
  • Demonstrate a capacity for creativity.
  • Use both general and domain specific IT resources and tools.
  • Access and evaluate appropriate sources of information.

Teaching methods

The course is designed with a flipped classroom format, based on online resources from the “Responsible Software” MOOC, developed by the Center for Digital Education.

Each week begins with a problem representative of the topic before introducing the corresponding theoretical content, in the following typical sequence called “problem-solving before instruction”:

  1. In-class problem-solving on computer (analysis, design or development) ;
  2. Independent study of theoretical content (concepts, principles, strategies…) in the form of videos and/or reading material, guided by short activities such as quizzes or open-ended questions ;
  3. In-class application to one or more concrete case(s) in class with group activities.