Teaching Sustainability in Computer Science?

A day ago the Faculty of Engineering at the University of Bristol run a discussion panel on if and how should (environmental) sustainability be taught to the Engineering students. Here are my 2 pence on teaching sustainability to Computer Science students.

Why should our students engage with Environmental Sustainability in their formal education?

Well because the ICT/Software impacts and drives every activity in the present society – from the day to day business to entertainment, education, and policy. This impact is felt in two ways:

  1. through production and use of ICT equipment and software, and
  2. through changing the way that the society itself operates.

I will only mention some brief points about the impact of production and use of ICT:

  • Energy Consumption of the ICT systems seems to be growing unstoppably, e.g.,
    • In 2018 the data centres were accountable for  about 1 % of the global electricity use
    • The energy consumption of the ICT is projected (in worst case) to account for 20% of the world electricity consumption in 2030 [1].
  • Materials, including rare earth metals are also increasingly depleted for use of ICT hardware production. Even worth, as much of the hardware is quickly outdates and distracted, it creates the problem of e-waste.
  • Waste form ICT hardware is either put into landfill or damped at the developing countries.

So yes, to point out a few issues that we, as computer scientists and engineers we need to learn to think about:  how about teaching and learning about how to minimise energy and material consumption, how to design modular and long-living hardware and software solutions, how to make our software maintainable and hardware bio-degradable?

But, even more importantly, Software Engineers must learn about the impact that their software solutions have within their situated environments.

Let’s look at the problem of traffic congestion: we all know that when too many vehicles are trying to get through a given road, they create a traffic jam; as the vehicles use (fossil) fuels while sitting in a traffic jam, they ends up generating excessive CO2. So what can a software engineer do to help? How about we some ride sharing software solutions, like Uber or Lyft? We know that, as shown in Figure 1,

Figure 1: Ride sharing software to reduce CO2 emissions.

this software will reduce the need for car ownership and as lesser number of people own and drive their cars, it will also reduce traffic congestion problem!

We already teach our students how to develop such applications. They already learn about platform development for data collection, and data analytics, distributed systems development and could computing and user interface design: all that they need to develop a ride sharing application is well covered in the current Computer Science curriculum.

But what happens once this application goes out to be used by people? It turns out that car ownership does decrease, so great. But, as studies into ride sharing show, these also increase the distance travelled by the shared cars. Even worse, as ride sharers become accustomed to the Uber/Lyft services, which are convenient and cheap compared to “normal” taxies, they start to substitute the journeys previously taken by public transport (i.e., bus or train) for ride sharing services.

In short, traffic congestion and respective CO2 emissions do not improve at all, as shown in Figure 2.

causal loop diagram - impact of longer-term ride sharing on CO2 emissions
Figure 2: Longer term environmental impact from use of ride sharing.

I suggest this is because, while the software developers for the ride sharing solutions may have wished to reduce environmental impact, they did not know  how to account for such an impact. As and education providers, we do not teach out  Software Engineering students about:

  • Systems Thinking,
  • Environmental Life Cycle Assessment,
  • Responsible Innovation and Software Impact Assessment, about
  • Human Behaviour and Rationality, or
  • Sustainable Living.



What should be offered to students within our faculty wrt Environmental Sustainability?

Well, all of the above. Unless we teach our students to account for the human behaviour and longer term software use, software impact assessment and responsible decision making in what, how, and why is integrated into software solutions, we are not likely to see such solutions having any positive impact in addressing the challenges of the environmental degradation and climate change.

So how can we integrating Sustainability into our programs?

I suggest that each module taught to our students must cover content of how it relates to sustainability and sustainable development. So each module needs to be reviewed. As stated in the Karlskrona Manifesto for Sustainability Design [2,3]:

“There is a perception that sustainability is a distinct discipline of research and practice with a few defined connections to software.

Whereas sustainability is a pervasive concern that translates into discipline- specific questions in each area.”

So, we really do need to teach students about which questions does sustainability translate in each of our modules, and how to address these questions, some examples of these are shown in Fig 3.

Figure 3: Additional issues to consider in Computer Science Curricula.


[1] https://ictfootprint.eu/en/news/decreasing-ict-energy-consumption-%E2%80%93-power-data-centres-and-people%E2%80%99s-will-ictfootprinteu-webinar 

[2] The Karlskrona Manifesto for Sustainability Design, url: https://www.sustainabilitydesign.org/karlskrona-manifesto/

[3] Becker, C., Chitchyan, R., Duboc, L., Easterbrook, S., Penzenstadler, B., Seyff, N., Venters, C. C. (2015). Sustainability design and software: The Karlskrona manifesto. ICSE’15: 37th International Conference on Software Engineering. http://dx.doi.org/10.1109/ICSE.2015.179