Below is a sample syllabus for an introductory computer science course that incorporates critical race and gender theory with technical concepts in Python. It is designed to be co-taught by a Computer Science professor and a Science and Technology Studies professor, but that is not required. Each week listed in the syllabus shows the technical and social content to be delivered, alongside a relevant reading to be discussed. These readings tie into the homework assignments, which are designed to bridge the gap between technical knowledge and social criticism to reinforce for students the importance of considering both. It also helps to reinforce for faculty the idea that integrating social and ethical content need not require a separate exercise, but rather can be done holistically in each assignment


A Downloadable PDF Version: ConceptSyllabus


Lecture:  1.5 Hours, Twice a Week 

Lab:  2 hours, Once a Week

Instructor:  CS Faculty Member 

Co-Instructor:  STS Faculty Member

TA: Information Technology & Web Science (ITWS) or Computer Science (CS) graduate student

Mentor Contact and Office Hours:

                 CS Undergraduate Students

                 STS Undergraduate Students 

Learning Outcomes

By successfully completing the readings below and participating in class discussions, students will achieve the following:

  • Demonstrate proficiency in the purpose and behavior of basic programming constructs
  • Design algorithms and programs to solve small-scale computational programs
  • Write, test, and debug small-scale programs
  • Demonstrate an understanding of the wide-spread application of computational thinking to real-world problems.
  • Demonstrate basic proficiency in discussing the mutual formation of technology and society
  • Articulate some of the biases that enter into higher education, technology, and the design of algorithmic systems
  • Understand and critique dataset provenance, particularly along lines of race, gender, and class
  • Effectively communicate to others the biases that enter your own systems

Required Texts

Students should purchase or otherwise obtain copies of the following texts:
  • Cathy O’Neil, Weapons of Math Destruction(2016).
  • Virginia Eubanks, Automating Inequality: How High-Tech Tools Profile, Police, and Punish the Poor(2018).

Links to all other readings in the course schedule below will be provided to you by the instructor.

Course Schedule

Week Lecture 1 Lecture 2 Lab Reading Due
1 Introduction Lab 0: Setup
2 Python as  a calculator String Lab 1: What is education and what does it do? “Liberal Education has Failed,” by Matt Wisnioski Hwk 1
3 Functions Decisions Lab 2: Epistemologies and Ideologies of Code “US Operating Systems at Mid- Century” by Tara McPherson 
4 Tuples, Modules, Images EXAM 1 Lab 3: Modularization and Masculinity “Technology as Masculine Culture” by Judy Wajcman Hwk 2
5 Lists While Loops Lab 4: Loops and Bridges: Does Code have Politics? “Do Artifacts Have Politics?” by Langdon Winner Hwk 3
6 Controlling Loops Data from Files and the Web Lab 5: If Statements, Non-linearity, and Queer Stories “Depression Quest, from Videogames for Humans,” meritt kopas ed. Hwk 4
7 Problem Solving and Design EXAM 2 Lab 6: How do we Define a Problem? “Algorithms of Oppression, Introduction and Chapter 1,” by Safiya Noble
8 Sets Dictionaries Lab 7: Who Gets Counted? “Weapons of Math Destruction, Chapter 1,” by Cathy O’Neil Hwk 5
9 Dictionaries Classes Lab 8: How do we Count? “Can an Algorithm be Agnostic?” by Kate Crawford Hwk 6
10 Classes Searching Lab 9: Building Classes, Constructing Classes “The Allegheny Algorithm,” by Virginia Eubanks Hwk 7
11 Sorting Lab 10: Theories and Politics of Information and Order “The Information: A Theory, a Flood,” by James Gleick
12 TKInter Recursion Lab 11: Who Builds? “Programmed Inequality, Conclusion” by Marie Hicks Hwk 8
13 Functional Programming Lab 12: Recursion and Recursive Narratives “The Garden of Forking Paths,” by Jorge Luis Borges