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


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

Using Citizen Science as a Theme for a User-Centered Design Course

Teaching students how to design and evaluate technology user experiences should be centered around understanding real-world user needs. In this project, students focus on a particular domain, Citizen Science, to motivate their learning of user research, prototyping, and usability testing. Citizen Science projects study phenomena in nature and the environment, such as monitoring the spread of invasive plant species or water quality. Citizen Science projects depend on volunteers to collect and submit data from local environments. Citizen Science is a compelling context for user-centered design because it involves multiple stakeholder groups, various front-end technologies (e.g., web and mobile), and information architecture. This project is scoped for a user-centered design and usability testing course for undergraduate computer science students. The course learning objectives are to (1) use research and design methods to develop an understanding of technology stakeholders and (2) apply that knowledge to create and refine design artifacts.

Using Affect-Aware Computing as a Theme for a User-Centered Design Course

This user-centered design project invites students to conduct hands-on human-computer interaction research and design by exploring affect-aware technology. These technologies seek to account for users’ emotions, moods, and other affective phenomena in the user experience. Examples include emojis used while texting, social robots that model emotional responses, and emotionally-aware chatbots. This project is for a user-centered design and usability testing course offered to undergraduate computer science students. The course learning objectives are to use research and design methods to (1) build an empirical understanding of technology stakeholders and (2) apply that knowledge to design and evaluate an interactive prototype. By immersing themselves in the complex domain of affect-aware computing, students learn to apply user-centered design to emerging technologies. Students create and refine common user-centered design artifacts, including personas, interaction designs, and prototypes. The reader of this paper will obtain recommendations for structuring the user-centered design projectand a high-level understanding of affect-aware computing.

Meme Magic: Project in Sprints

Meme Magic is a series of six assignments intended to provide progressive exposure to programming in Java using a popular and recent concept: Memes. Memes utilize an image conveying a concept or feeling with a caption provided by the Meme author. The series of assignments, designed as sprints in the context of a larger project, begin with the design and scaffolding of Java classes needed to write a program to produce text-based Memes and end with a fully-functional graphical user interface. For a detailed list of learning goals, please see the Learning Goals section. In the first sprint, students depict the overall project structure of a text-based meme application using Unified Markup Language (UML) and write method stubs in Java. In each of the next two sprints, students implement half of the specified functionality and integrate those components to a fully working application. Students are asked to add Comparators to sort memes to their application in sprint 4 and to unit test all of their code using JUnit in sprint 5. In the final sprint, students extend the functionality once more to a graphical user interface to experience event-driven programming.

Micro:Vote: An Introduction to Python using the BBC micro:bit

The Micro:Vote project is designed as an introduction to text- based programming through a 12-week project aimed at 11 to 13 year olds. The project is designed as a School-University partnership whose aim is to highlight the role of creativity and social impact in computing through the design of digital voting posters using the BBC micro:bit and MicroPython.

Adopting a Design Studio approach, the project scaffolds students in the creation of a physical computing voting system and informative poster, to gather responses on an issue of social importance within the community. Through the lens of Human- Computer Interaction, students investigate the role of computing in activism and learn to implement data and control structures.

ACM Digial Library Entry

CS2 Graphical Photo Library Project

This project steps learners through a series of assignments that culminate into a photo viewer/archive tool. The assignments are designed to emulate a software development "sprint" in the Agile development process parlance. Each sprint consists of an assignment that builds off the code of the previous assignment, and is by itself a valuable piece of the overall end product.

Our aim is to give students the feeling and experience of working on a large project via a sequence of carefully-crafted homework assignments. This project helps students gain experience with Object Oriented Programming in Java, combined with software development techniques, commenting and documenting code for maintenance, unit testing with JUnit, exception handling, event-driven programming and use of pre-built Java Swing components. The project culminates in a fully-functional graphical user interface and leaves plenty of room for creative expression.

The project was designed and developed with a neutral position regarding gender, race, and other protected classes. We believe the end product has a universal appeal for users of technology and the potential software developers of tomorrow.

Subscribe to Incorporate Student Choice