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.

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.

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

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.

Engagement Excellence

Intro to CS: Arduino Pumpkin Project

This lab is done in a course that teaches the basics of computational problem solving by exposing students to the building blocks of programming: variables, looping, branching, functions, arrays, etc. The goals of this assignment are (1) to reinforce CS concepts from class and (2) to introduce students to basic hardware components. Using an Arduino clone kit and ultrasonic sensor, students work together to build a pumpkin that flashes LED(s) and makes noise. This project is done in fall semester and is timed to align with Halloween. 

Virtual Pets and ADTs

In this lab students are to create a program in which the user interacts with virtual pets with different needs. Students are first asked to plan and design classes in the form of ADT's with their fellow classmates. Once they are designed, students are asked to work individually to implement the classes.

Lightboard Lab

Lightboard Lab is a loops/lists/tuples lab assignment for a CS0/CS1 course. For this lab, students program 8x8 matrices of LED lights via a Fadecandy microcontroller. Students are encouraged to work in pairs and/or individually for this lab.

Engagement Excellence

Game of Student's Choice

Game of Student's Choice is a loops/file I/O/strings/lists/dictionaries/classes programming assignment for a CS0/CS1 course. For this assignment, students have the option of either implementing an object-oriented Tic Tac Toe game (for which the requirements are rigorously specified) or a game of their choice (for which the requirements are loosely specified).

PPM Image Modifier

PPM Image Modifier is a loops/file I/O/strings programming assignment for a CS0/CS1 course. For this assignment, students open a PPM image file, apply a modification to the image, and write the modified image to an output image file. The modifications for the students to perform include: negate, high contrast, gray scale, remove red, remove green, and remove blue. Students are to work individually on the assignment.

A Game of Craps

Craps is a functions/conditionals/loops programming assignment for a CS0/CS1 course. To do this assignment, students implement the game and add personality output by including "chatter" messages.

Students are to work individually on the assignment.

"Are You a Fan?" Quiz

Are You a Fan Quiz is a functions/conditionals programming assignment for a CS0/CS1 course. Students are to work individually on the assignment. To do this assignment, students select a topic of their choosing and construct a quiz of multiple choice, T/F, and free response questions. The user's responses to each question are scored and the final score is displayed to the user, along with a message about how well they know the topic.

Engagement Excellence

CarBot

CarBot is a first programming assignment for a CS0/CS1 course. It is a chatbot program wrapped around a monthly payment calculator for a car loan.

Pokemon Go Graphic

In this homework assignment, students are asked to use Python Turtle Graphics to design and draw a simple Pokémon graphic.

Subscribe to Incorporate Student Choice