Learning is enhanced when course materials are relevant to students’ interests and goals, and nothing works better than letting students choose what they want to pursue. When possible, allow students to choose from among a set of problems or assignments, or to choose the topic area to be addressed in a particular assignment.

Some suggestions

Make it their own. The technical requirements stay the same but let students choose the inputs (sound or graphic files, data sources) and/or the form the output takes. The EngageCSEdu collection has lots of great examples!

Be creative with extra credit. The quickest way to add student choice is to incorporate into an existing assignment an extra credit option that challenges students to explore their own application of a concept.

Let students select from a finite list of options. Students do best with bounded, rather than completely open, choices. So within a project or assignment, let students choose a topic or element from a list of possibilities. Ideally, devise the list from actual student input and not from stereotypes or conjecture on what students like.

Examples from the collection

Dynamic Word Clouds

This project, the 4th unit in a year-long high school introductory programming course, teaches students how to write programs that draw text objects in an individually designed word cloud. It uses the programming language, Processing (www.processing.org), which is a simplified form of Java.

In the 1st section of the project, students learn these new text methods, and are introduced to the for-each loop. They learn how to isolate transformation operations [ translate() / rotate() ] - that are used to render each word - from having side-effects on subsequently drawn words by book-ending drawing commands between pushMatrix() and popMatrix() calls. In the 2nd section, students derive and implement the mathematics involved in animating the word cloud.

The Word Cloud program intertwines these new concepts with the major programming concepts revisited from the first 3 units: variables, conditional statements, Boolean expressions, arrays, classes, iteration and movement.

Summary of the objectives of this assignment:

Engagement Excellence

Introductory EarSketch Assignment

In this tutorial, students will learn how to navigate the EarSketch environment, and begin to use Python commands through the exploration of a song. Students are then invited to create their own song(s). After this tutorial, students will be able to use EarSketch's full curriculum and acquire deeper knowledge about Python and music composition and remixing.

This exercise is appropriate for high school-level AP CS Principles courses and well as CS0 courses at the collegiate level. This exercise is derived from a tutorial developed for the Hour of Code. It can be completed by following the instructions in the attached documents and working in the EarSketch environment (earsketch.gatech.edu).

EarSketch is a free and online learning environment. No prior knowledge in music or Python are necessary to teach this exercise. With EarSketch, students code in Python to place samples from a vast sound library into musical tracks, arrange them, and add effects.

Engagement Excellence

Simple graphics

In this project students work in pairs to create a drawing. Using a provided graphics library, students must create a drawing whose location, size, and other parameters can be changed with different calls to a function. Students are allowed to choose what to draw, and there is a competition for the best drawings. In addition to teaching graphics, the project also requires students to work collaboratively on abstracting and decomposing their code.

Engagement Excellence

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

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.

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.

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

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

OER for Ethics and Computing Open Access Collection

Coverage of ethics and computing is proliferating at universities, at both undergraduate and graduate levels. This includes standalone courses, and incorporation of ethics into technical computer science and related courses. Most of these courses, particularly the standalone ones, make extensive use of recent media articles, papers, videos, and other resources about issues related to ethics and computing. Thousands of such media articles alone are published annually. There is enormous duplication of effort by people who are teaching these courses, as discovering these resources is not always an easy process.

Usability Observations of Everyday Things

This assignment is designed for an introductory human-computer interaction course. Students identify usability issues in everyday things. For example, confusing light switches, street signs, mobile applications, gaming consoles, or microwave ovens. There are three learning objectives: 1) demonstrate the ability to notice the usability of everyday things, 2) correctly apply usability terms and concepts, and 3) design a solution that addresses an identified weakness.

ACM Digital Library Entry

Using Science Fiction Trailers to Teach Social Responses to Communication Technology and the Media Equation

This group discussion activity helps students to explore how people socially respond to communication technology by explaining and applying the Media Equation and the Computers are Social Actors (CASA) paradigm for the study of human-technology interaction. Students will learn how to evaluate and apply CASA to human-technology interaction by discussing agents and technologies portrayed in science fiction movie trailers containing examples of virtual agents with social characteristics.

ACM Digital Library Entry

Subscribe to Incorporate Student Choice