Let’s take engineering seriously: Integrating ethics into the SE and CS core curriculum


Since the start of the pandemic, software has ruled our lives. As a student going from Zoom lectures to Discord group project calls to remote work on Microsoft Teams to virtual Netflix parties, it feels like the past two years of my life have happened completely online. I’m studying software engineering (SE), currently in 3B. In 16 months or so, my classmates and I will join the ranks of software engineers designing and building these platforms that have become so essential for society.

Software engineers’ decisions have an outsized social impact. The internet and social media have connected the globe, giving us instant access to each other and empowering us to consume knowledge and create content that we can share with the world. On massive platforms like Google, Facebook or Amazon that have powered this digital and social transformation, even the smallest change reaches billions of people. 

Unfortunately, some decisions have paved the way for digital misinformation, loss of privacy or biased artificial intelligence that inflames existing divisions and reinforces structures of oppression. These issues affect each of us on both personal and societal levels, hindering our ability to respond to challenges like the pandemic or the climate crisis. All these problems are incredibly complex, with multifaceted, interdisciplinary solutions that require society-wide change. While software engineers can’t solve these problems alone, software engineers have a special responsibility to address these challenges — and avoid creating new ones — because they were either brought about or exacerbated by the technology we’ve built.

Yet my education is not helping me develop the ability to tackle these challenges. Each academic term, I take classes like algorithms, software architecture or computer networks to gain the vital technical knowledge and skills for building software platforms. Mostly missing from the core software engineering curriculum, however, are opportunities to learn about the social, cultural, legal and environmental aspects of the profession. Our only exposure to ethics is through professional development courses, which are widely seen by students as a nuisance and usually completed as an afterthought.

For the next generation of software engineers to gain the skills for tackling complex problems in technology, ethical and social issues must be integrated into every core software engineering and computer science (CS) course. This is not without precedent. Some of the best engineering schools are doing it. Harvard University, Massachusetts Institute of Technology (MIT) and Stanford University all integrate ethics into their core computer science curriculum.

At the MIT Schwarzman College of Computing, the Social and Ethical Responsibility of Computing (SERC) initiative is developing interdisciplinary teaching materials on ethics to be incorporated into existing classes across all levels of instruction. SERC is also publishing case studies examining topics such as racial disparities in facial recognition technology and the ethics of targeted advertising systems. Harvard and Stanford both run a program called Embedded EthiCS, which weaves moral problem-solving exercises into every core course in the computer science curriculum. The aim is to teach students how to think through the ethical and social implications of their work. Postdoctoral scholars in philosophy help CS professors develop and teach these modules. Many of the materials created by all three schools for their initiatives are freely available online.

Speaking to the importance of these initiatives, Mehran Sahami, the associate chair for education at Stanford’s Department of Computer Science said “[w]hether it’s setting bail or placing ads on social media platforms, an algorithm is working in the background, which is why justice, equity and other social concerns must be central to computer science rather than afterthoughts or omissions.”

Indeed, this is what users are beginning to expect of software engineers. Over the past five years, the public has become far more aware of the negative impacts of digital technology through information leaks like the Snowden revelations, scandals involving data and security breaches on various platforms and films like The Social Dilemma. People everywhere are calling out for more humane technology and holding creators of technology accountable for the social impact of their designs.

My peers want to use their knowledge and skills to create positive change. In 2019, two of my friends from SE and I organized Citizen Hacks, a hackathon focused on privacy in technology. Nearly 150 students from the University of Waterloo, the University of Toronto and other Ontario universities and high schools took part in the event. Participants attended workshops on subjects ranging from network security to Canadian privacy legislation and created projects on the theme of “how can we build a digital future that protects everyone’s privacy?” The response from our participants was broadly positive, with many excited about the opportunity to apply their skills towards a positive social cause.

In the absence of continued, structured engagement, however, these interests aren’t encouraged or cultivated further. By 3B SE, there ends up being a very narrow path that we see ourselves taking: Do lots of Leetcode. Get a job at a famous American tech company or quantitative trading firm. Graduate, then work full-time as a software engineer. In practice, very few people deviate from this path. I remember in first year being shocked to discover that only three students in the SE class of 2018 went on to graduate school.

UW is developing incredibly talented software engineers, but our education falls short of broadening our mindset and vision. By integrating ethics and social issues into the core SE and CS curricula, the university would be taking an important step in equipping the next generation of digital innovators with the mindset, vision, knowledge and skills to be positive change-makers. It would also demonstrate Waterloo’s leadership in computer science education in Canada.

One way to create such a curriculum might be to adopt more problem-based classes throughout our degrees that promote interdisciplinary collaboration and integrative thinking. For instance, how can we create video games that promote action towards the UN Sustainable Development Goals? Design a software system to support a unified global response to the next pandemic? Or develop a misinformation-resistant social media network? These questions might seem wishful or too big. But we never would have landed humans on the moon without having the curiosity and vision to do it in the first place. Those with the vision lead the way to reach for the moon.