“Make it matter” for students by experimenting with new and interesting topics for assignments and projects, and by using varied examples in your lectures and other materials. Students are more likely to persist in the face of a challenge when what they are learning is relevant to their life experiences and goals. Use examples that have broad appeal, place assignments in contexts that interest students, and explain how a particular idea is used in different contexts.

Some suggestions

Don’t assume what’s meaningful; find out! Don’t rely on your notion of what’s interesting and meaningful, and certainly don’t rely on stereotypes. Find out from your students--and from the students you want to recruit--what is meaningful to them! Surveys and clicker polls are a great tools for this.

Keep keeping it real. Don’t relegate the discussion of larger context to the beginning of a course. Keep bringing students back to the real world application of what they are learning. This can be as simple as showing how a concept is used in a familiar application or program (e.g., how hash maps are used in natural language processing to predict what a user will type into a search engine).

Highlight the people. To help students see the people behind the concepts, refer to the contributions of an individual or group. A great story is Grace Hopper and her team at Harvard University finding a literal bug in one of their machines.

Examples from the collection

Resources

An In-Class Activity Exploring Hash Function Quality

This in-class activity enables students to explore how the quality of a hash function affects the performance of a hash table. Students write their own hashCode() function for Java strings and submit it to an autograder that determines the number of collisions that would occur with a given corpus. The results are displayed on a leaderboard for students to see in real time how their implementation compares to other students’ and the Java libraries. Afterwards, students are eager to see the winning implementations and the Java library implementations. This activity has been used successfully with 480 students in 10 sections over 3 years on Gradescope.

ACM Digital Library Entry

Solving the Brewery Problem with Object-Oriented Design

This assignment helps students practice designing and implementing the code for small programs. It engages with historical discussions of object-oriented design paradigms within the ACM by requiring students to read the 1993 article “The Object-Oriented Brewery: A Comparison of Two Object-Oriented Development Models” [4]. In the article, the authors describe two design methodologies they applied toward building a program for managing a brewery’s systems, though any production facility can be used in student-facing scenarios. The authors then analyze the strength of the code written using each methodology based on a series of metrics. After reading the article and discussing it in class, students then recreate some or all of the described systems using at least one of the design methodologies outlined. Once complete, students then analyze their code using the metrics outlined in the article and reflect on opportunities to strengthen their program’s design in future iterations.

ACM Digital Library Entry

Public Data in the Public Interest: A Spreadsheet-Based Project for High School Computing

Data for Healthy Communities (DHC) is a 15-hour high school project that uses spreadsheets and public data to provide an accessible introduction to data science in the broader context of decision making for complex societal problems. Students work with real-world government data in the context of public health and will learn how to use data as evidence to support an argument for investment in their local communities. The no-code interface of spreadsheet software allows students to explore basic computing concepts such as variables and functions while engaging with authentic public health challenges like air quality, health inequity, and environmental burden. The intention is to lower the barrier for students’ first introduction to computing and to present options for embedding data science education in a wider variety of curricular areas.

Technology and Digital Well-Being

In this lab, students reflect on technology’s impact on well-being. Students learn about the possible negative effects of smartphones on well-being. Students also learn about how apps and websites use “dark patterns” to persuade users to act in the developer’s best interest, instead of the user’s best interest. Students practice identifying dark patterns in popular smartphone apps. For homework, students collect and analyze data on their smartphone usage.

ACM Digital Library Entry

Empowering Computing Students with Large Language Models by Developing an Escape Room Game

In this project, computing students learn to integrate large language models (LLMs) into a software system. Students develop a Java application with a basic graphical user interface (GUI) using JavaFX, gain practical experience with prompt engineering, and learn about the impact of LLM parameters and conversational roles. Students are provided with a Java-based API that connects with OpenAI’s GPT model. The project emphasizes teaching students to manage LLM API calls, enhance GUI responsiveness, and improve the user ex\perience all in the context of an AI-powered application. This experience equips them with critical skills in software development and AI application. It prepares them for advanced software development by learning how to create effective LLM prompts to create intelligent and user-friendly applications. We share the experience of using this project and provide guidelines for assessing it in a second-year software engineering undergraduate course, where students’ prior programming experience is limited to the prerequisite CS2 course on object-oriented programming.

Client-Led Game/Simulation Projects' Effects on Motivation and Career Readiness

This instructor-facing submission outlines the implementation of a client-led project-based learning (PBL) model in an upper-level game and simulation development course. The project centered on developing functional AR simulations for real clients. Drawing on professional documentation through Game Design Documents (GDDs), authentic feedback cycles, and self-efficacy theory, students experienced iterative development with external stakeholders. Survey data and focus-group feedback revealed increases in student motivation, enjoyment, and self-efficacy compared to previous faculty-led iterations. The submission includes a conceptual pedagogy model (Figure 1 in the paper), adaptation pathways for different instructional contexts, and recommendations to integrate client feedback structures without formal external partners.

ACM Digital Library Entry

Incluso!: Introducing Universal Design Through Play

Incluso! is a card game designed for groups of 3–5 players that introduces and explores the concept of universal design in digital products through collaborative play. Its goal is not only to educate but also to cultivate empathy, something that is often underdeveloped in students who are encountering accessible design principles for the first time. The game encourages players to consider real-world barriers that individuals with disabilities face, all within an engaging, conversation-driven format.

ACM Digital Library Entry

Traffic Jam: Scaffolded Game Development to Teach Object-Oriented Programming

Traffic Jam is an assignment designed for a CS3-style course that is meant to (re-)introduce students to larger programming projects. Students implement a grid-based puzzle game based on the sliding block puzzle game Rush Hour. In the game, a player must slide adjacent cars facing horizontally or vertically in order to dislodge a particular car and move it to the other side of the grid.

This assignment consists of scaffolded instructions, UML diagrams, and starter files that guide students through the process of creating the game in four parts. This allows students to build on their work and to work on increasingly complex goals, from a text-based version to a graphical user interface in Java using the ACM Java library.

For this assignment, students should be familiar with arrays, methods, references, and classes. The project aims to help students gain more experience and proficiency with classes and object-oriented design in Java, as well as with event handlers and interactivity. Students learn how to read existing code and supplement it with new features to build a prototype of the 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

Subscribe to Use Meaningful and Relevant Content