3.1. Pedagogical Goals and Design#

3.1.1. Combining Topics#

Our goals with this textbook are to combine introductory courses across several fields that normally don’t get combined. We hope that this attracts and introduces students to areas that they might not otherwise learn about, such as someone interested in social media learning about programming, or someone interested in programming learning about ethics.

As we combined these three areas, these were our strategies in doing so:

Programming Supports Social Media Topics#

In combining introductory programming with the topics of social media and ethics, we wanted to incorporate these topics not additively but in a deeply integrated way. Of our three topics, we chose to organize our book around social media themes. This allows the learning and deployment of programming skills to function as a way of exploring these social media topics (by creating posting bots, scraping bots, recommendation bots, etc.). We felt it was important programming be a supporting topic rather than the main organizing theme to appeal to students more interested in social media than in programming.

Integrating Ethics#

To integrate ethical considerations throughout the textbook in an inclusive and non-prescriptive way, we introduce a diverse set of ethical frameworks as analytical tools (e.g., Confucianism, Aztec Virtue Ethics, Consequentialism, Ethics of Care, Ubuntu Ethics). Then in assignments and throughout the rest of the book we raise ethical considerations and ask students in discussions and assignments (including reflecting on the code they write) to practice and develop their skill in viewing situations through at least two ethical frameworks, comparing how each of those frameworks would parse the ethical dilemmas in the situation.

3.1.2. Activities and Interactivity#

Design Activities#

We wanted to give students opportunities to critique designs of social media and consider their own ideas for designing social media. To support this we use the CIDER method for critiquing designs and thinking of design changes. We also give students some more open ended design opportunities for conceptual design, as well as freedom in their programming assignments to make design decisions and explain and critique their design decisions.

Interactive Coding#

For the programming sections of each chapter, we provide Jupyter Notebook pages in our book for demos, practice problems, and assignments. This lets students load, run and experiment on these programming pages. We also created optional fake bot libraries so students can experiment with bot code without needing an account.

3.1.3. Outline of course content and activities#

Ch

Social Media Topic

Programming Topic

Programming Demo/Activity

Other Activity

2

Definitions

What is programming?

Demo bot that posts

Ethics Frameworks

3

Bots

Statements, vars, sleep

Bot posts multiple times

Find real bots

4

Data

Data types in python

Get data from posts

Design a view of posts

5

History of Social Media

Looping w/ lists and dictionaries

Loop through posts

Social media use cases

6

Authenticity

N/A

Look up info about post / poster

Analyze Facebook name rules

7

Trolling

Conditionals, String manipulation

Make reply bot and troll it

Examples of trolling

8

Data Mining

Sentiment Analysis, loop counters

Sentiment analysis on sets of posts

Categories predicted for you

9

Privacy and Security

Functions

Track use of functions

Analyze GDPR

10

Accessibility

N/A

Look through alt text of posts

Accessible design analysis

11

Recommendation Algorithms

Dictionary counters

Recommend a friend

Think of recommendation algorithms

12

Virality

N/A

None (yet)

What values do you have for virality?

13

Mental Health

N/A

Show only “positive” posts

Mental health design analysis

14

Content Moderation

Trees, Recursion, DFS

Display or hide comments/replies

Try reporting a comment

15

Content Moderators

N/A

None (yet)

Content moderation game

16

Crowdsourcing

Force-directed graphs (planned)

Visualize networks (planned)

None (yet)

17

Harassment

N/A

Group block (planned)

Features used for harassment

18

Public Criticism and Public Shaming

N/A

None (yet)

Design retract post

19

Capitalism

Programming & gender

None

Game / Imagine alternatives

20

Colonialism

Colonialism in programming

None

Imagine alternatives