CS1

An In-Class Activity for Recognizing and Practicing the Power of Iteration in Human-Centered Design

Iteration is a central to HCI design. The learning objectives of this introductory HCI class activity is to experience and recognize the importance of iteration in the HCI design process, and to practice how small iterative design changes and consistent implementation and evaluation can have on the overall design.

In this class activity, HCI students practice the iterative design process in a rapid and engaging activity. The activity includes three iterations of playing a simple game (tic-tac-toe) in small groups of 2-3 students and changing the rules of the game from one iteration to the next. In the first iteration (baseline), students play the original tic-tac-toe game. Thereafter, in each iteration, students choose and make one change to one rule of the game in its current iteration, play the modified game, and evaluate the impact of the change on the game experience. By the end of the activity, the new game that underwent 3 changes may be substantially different from the original tic-tac-toe game.

Embedded Ethics: Pandemic Exposure Notification Systems and Giving Ethical Justifications

In this follow-up to "Embedded Ethics: Pandemic Contact Tracing and Ethical Trade-Offs" [6], students revisit a trade- off they faced in that first module. There, students brainstormed about the rich data one might collect to build a powerful app for contact tracing, discovered that this may facilitate violations of privacy, considered the harms that can come from this, and recognized the trade-off between protecting privacy and gathering data to support the fight against the spread of a disease such as COVID-19.

Passwords and Python: Introducing Security Concepts in Lower-Division Programming

One important concept for all computing students to understand is security—both their own, and for the technologies and systems they might eventually develop. This open educational resource provides an assignment to introduce to students in an introductory programming class to a foundational security concept: password security. The assignment begins with a basic introduction to security as an important concept in computing, drawing from real world examples of security breaches with a focus on the importance of good password practices. It then explains password strength as a concept and has students use conditionals, logical operators, and for and while loops to code a password strength checker and simple password management system.

ACM Digital Library Entry

Sandbox Data Science: Culturally Relevant K-12 Computing

Given an increased focus on computer science education as a valuable context to teach data science—due in part to the potential of computing for accessing, processing, and analyzing digital datasets—there have been steady efforts to develop kindergarten through 12th grade (K-12) curricula that productively engage learners in these academic areas. Bootstrap: Data Science and Exploring Computer Science (ECS) are prominent curricular examples designed to support high school data science access in computing contexts. While these vital efforts have found success bridging computer and data science, there remain growing concerns about how we can ensure that such learning experiences support the demographic and intellectually diverse cohorts of students needed for field innovation, occupational attainment, and public literacy. Challenges to these efforts often persist because existing data sources and activities offered to students are typically shaped by others (e.g., curriculum designers, teachers, etc.) rather than by learners themselves.

A CS1 Open Data Analysis Project with Embedded Ethics

This final project combines key CS1 programming concepts with ethical analysis. It helps students gain experience with lists, dictionaries, for/while loops, conditional statements, file handling, and functions in Python. Through a data analysis and visualization task, the students put to action their prior knowledge of the aforementioned programming concepts, embedded with an ethics-led discussion of open source data. Open source data (or “open data”) is data that is available and accessible to anyone, including for reuse of the data [8]. Students will learn how to think critically about the ethical dimensions of their selected open source data (and future open source data), and provide an analysis of the data within its contemporary cultural context.

ACM Digital Library Entry

Embedded Ethics: Pandemic Contact Tracing and Ethical Trade-offs

This course module, designed for use in a first-year programming course, gets students thinking about ethical issues that arise from the technology they will build. The module is on the topic of contract tracing, employed during pandemics and other disease outbreaks to limit the spread of communicable diseases such as COVID-19. The module includes pre-class, in-class, and post-class components. As students learn how a graph can represent contacts and consider the data that a contact tracing system might record, they are guided through an active learning exercise to discover an issue: Private information can sometimes be inferred from a contact tracing system. The ethical issue of balancing public health against individual privacy arises naturally from the technical discussion. In the remainder of the module, students learn how to imagine and discuss the perspectives of different stakeholders on this ethical trade-off. For example, an overwhelmed acute care doctor has different priorities than someone with precarious employment and a chronic illness, who is afraid their private information might be leaked.

Web Accessibility Evaluations

This lab helps students gain experience and proficiency with alternative modalities for browsing the web (i.e., navigation using the keyboard and using screen readers). Students will learn how to perform a website accessibility evaluation using a keyboard and screen reader. Students will also gain an appreciation for the prevalence of web accessibility issues, and will reflect on what can be done to improve web accessibility.

ACM Digital Library Entry

Two POGIL Activities on Search Concepts and Strategies

These two team-based classroom activities are designed to help students understand key concepts used in artificial intelligence (AI) to search for possible solutions to problems. These activities are designed for use in Process Oriented Guided Inquiry Learning (POGIL), where student teams work during class time with active facilitation by an instructor or TA.

After completing these activities, students should be able to:

  • Define and give examples of key terms, including: action, state, initial state, goal state, goal test, transition function, path, path cost function, state space
  • Define and identify goal state problems and goal path problems.
  • Describe the general structure of search problems, and specific strategies, including: breadth-first, depth-first, depth-limited, random-first, bi-directional, best-first
  • Describe uninformed and informed search.
  • Describe the value of path cost and heuristic functions

ACM Digital Library Entry

Analyzing Airbnb data

This CS1 assignment asks students to use lists, dictionaries, tuples,
and basic programming concepts in Python to analyze Airbnb data.
Students are then asked to make a connection to the real world by
finding articles about regulating Airbnb and reflecting on how data
analysis might be relevant to those conversations.  The difficulty of
the assignment can be varied by changing the assumptions that students
are allowed to make about the input files.

Boolean Logic - Java

This classroom activity uses Process Oriented Guided Inquiry Learning (POGIL) to introduce students to Java. Students work in small teams to answer a series of questions about relational and conditional operators. The instructor facilitates interaction among teams, offers guidance and encouragement, and summarizes key concepts.

Learning Objectives:
* Evaluate boolean expressions with relational operators (<, >, <=, >=, ==, !=).
* Explain the difference between assignment (=) and equality (==) operators.
* Evaluate boolean expressions that involve comparisons with &&, ||, and !.
* Evaluate complex logic expressions based on operator precedence.

Subscribe to CS1