Teaching Sustainability in Computer Science
Sustainability issues are inherently interdisciplinary. See the Resources & Discussions page for resources that span multiple disciplines and the Disciplinary Perspectives pages.
Exploring Sustainability through Computer Science
Computational Sustainability is a nascent and growing field of computing that is concerned with the application of computer science principles, methods, and tools to problems of environmental and societal sustainability. This is not a one-way street, however, because sustainability problems force computer scientists into new theory, as well as new practice. For example, sustainability problems require extraordinary attention to solution robustness (e.g., so that a so-called optimal solution doesn't catastrophically fail with an environmental change) and issues of uncertainty, ranging from uncertainties in environmental sensor readings to uncertainties in the budget awarded by a state legislative body for wildlife management!
These pages point to material that can help instructors infuse sustainability into the computer science curriculum. These materials range from entire courses dedicated to computing and sustainability, to stand alone exercises that contextualize a CS problem within a sustainability application.
Areas of computing that are relevant to sustainability include:
- Computer Hardware and Architecture
Computing is ubiquitous in much of the world, and computing's collective energy footprint worldwide is growing. There is a great need for energy-efficient computer systems, from individual systems like a laptop to larger data centers of the "cloud", which are made from easily recyclable components that do not pollute the environment and threaten human health. - Robotics and Sensors
Computing is increasingly used to monitor the natural and built environments, ranging from sensors that monitor civil infrastructure like bridges and the power grid, to sensors in-the-wild that identify species based on vision and audio inputs. These sensing capabilities include mobile platforms, most notably robots that are terrestrial, aquatic, or aerial, which are used in disaster response (e.g., oil spills and earthquake rescue) and routine monitoring of oceans, lakes, and savannahs, to name but a few. - Cyber-Physical Systems
Beyond simpler forms of sensing, computing is increasingly embedded in and controls physical systems, such as cars, highways, and buildings; so as to improve energy efficiency (e.g., fuel consumption) and safety. Increasingly, human-built systems such as cars and airplanes are themselves robotic systems. - Intelligent Systems
The capabilities for sensing and control above can only be realized through intelligent software, to include artificial intelligence (AI). Additionally, AI is vital for deliberative human decision making, such as resource planning (e.g., wildlife reserves, water usage), with optimization and machine learning being important supporting methods. - Social Computing and Networking
Information and computing technology connects people, and thereby provides avenues by which social ties can change behavior, be it related to human health (e.g., quitting smoking, diabetes management), or environmental sustainability. Applications in sustainability would include forming online recycling cooperatives, and promoting purchase of ecologically friendly products based on a full life-cycle analysis. - Mobile Computing
This technology is at the intersection of sensors, intelligent systems, social computing, and other areas, with human-carried mobile smart phones and cameras recording, transmitting, and analyzing data ranging from plants and animals, to consumer product bar codes. Other activities with these devices involve route and activity planning, all with implications for sustainability.
Sustainability and Computer Science for the Undergraduate Curriculum
Sustainability can be addressed in many different types of courses, from CS 101 to advanced graduate-level classes. Thus, there are many pathways to introduce sustainability themes into a wide range of topics.
Activities
Artificial Intelligence for Computational Sustainability: A Lab Companion
For more resources on teaching sustainability across many disciplines, see the Teaching Activities, Resources, Beginner's Toolkit, Empowering Students, and other sections of this website (see the left navigation bar on this page). Also visit the SERC Sustainability Site Guide. This site guide contains annotated links to hundreds of teaching activities, course descriptions, visualizations, and articles compiled through a number of projects.
Textbooks
Greening through IT
Tomlinson, Bill, 2010, MIT Press
Computer Scientists Teaching Sustainability
Sustainability can be taught at many points in the computer science curriculum, ranging from a "Computers and Society" type of course with no CS prerequisites, to an upper-division or graduate course in computer science. In the latter case especially, a computational sustainability course can be one of a very few courses in a curriculum that minimally survey, and possibly synthesize material across the entirety of the computer science curriculum, ranging from computer architecture, artificial intelligence, algorithmic theory, and social computing.
Courses listed here have been taught previously and the course level (introductory, advanced, graduate) is listed as well.
Sustainability and Assistive Computing
Eric Eaton, Bryn Mawr College
Artificial Intelligence for Health and Sustainability (opens pdf)
Emma Brunskill and Manuela Veloso, Carnegie Mellon University
Computing and the Environment (opens pdf)
Doug Fisher, Vanderbilt University. Advanced, upper-division course.