“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

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.

Day 1 CS 1 (or 0) Activity: The Reuniting Families Exercise

The Reuniting Families "unplugged" assignment is designed as a first day CS 1/CS 0 activity to both highlight the social relevance of computing and model what it really means to "do" computer science.

For this activity, the class is asked to consider a disaster, such as an earthquake, devastating a smallish city. Regardless of the specifics of the disaster, the local uncovered soccer stadium is left intact and aid workers have directed all survivors to congregate at this single undamaged stadium. Assume that the stadium is sufficient to hold all the survivors. After all the survivors of a nuclear family have been identified, that family can leave the stadium to their waiting Red Cross tent. Students, working in groups of three or four, devise a protocol, i.e. an algorithm, for the aid workers to use to reunite the survivors of each nuclear family unit.

Coffee Barista Assistant CS1 Programming Assignment

The Coffee Barista Assistant assignment has students develop a tool that generates instructions to build a customer's cup of coffee. The assignment has a basic path for all students to complete, while containing additional layers to challenge high performing students. Through this programming assignment, students gain experience and proficiency with variables, conditionals, lists, and functions. By starting the assignment as an unplugged design activity, students will learn how to identify repeated patterns.

Olympics Lab

In this lab students compute the acceleration of a short track speed skater per lap. This is a lab for early in a semester of CS 1. It requires the use of 1) standard input/output, 2) variables and simple arithmetic expressions, 3) selection statements, and 4) loops.

Learning objectives:
* Compiling, linking, executing a program
* Developing an algorithm
* Testing a program
* Using the C++ syntax and programming constructs of standard I/O, variables and arithmetic expressions, selection statements, and loops

Fitness Tracking Lab

In this lab, students track their own fitness activities for a week. They submit this data which becomes some of the test data for the lab. Based on the students' activities, the program computes the number of equivalent miles each student has walked and the total number of miles walked by everyone together. Output is sorted from most miles walked to least miles walked. 

This is a lab for late in the semester of a CS 1 course. It requires students to use text files and an array of structures.

Learning objectives:

  • Compiling, linking, executing a program
  • Developing an algorithm
  • Testing a program
  • Using the C++ syntax and programming constructs of standard I/O, variables and arithmetic expressions, selection statements, structures, arrays

Prerequisite knowledge: Students must have already been exposed to standard I/O, variables, arithmetic statements, selection statements, loops, functions, arrays, structures, and text files.

The lab could be easily modified to use a class instead of a structure and an array of objects.

Lottery and the Wealth Gap

This assignment helps students gain experience and proficiency with lists, loops, and random number generators. Students will learn how to think through and write branching logic, plot data, and modularize their code. Through this assignment, students will learn how the lottery contributes to a growing wealth disparity by redistributing money from low income families to middle and high income students in the form of scholarships. With this basic simulation, students can visualize and learn about the mechanisms that cause the wealth gap to widen. This handout is based on a math assignment by Justin Allman.

ACM Digital Library Entry

Arrays vs Linked Lists: Operations and Their Efficiency (in-class demo)

This is a script of an in-class kinesthetic learning activity that illustrates the pros and cons of storing data in array-based and linked list-based data structures. The students act as either elements in an array or as nodes in a linked list; chairs are used to represent memory addresses.

Air Quality Index Calculator

In this project, students make a calculator that determines the Air Quality Index (AQI) given user-input sensor data. All calculations follow methods published by the US Environmental Protection Agency (EPA) and give students practice handling user input, rounding/truncating, calculating the max and min, and must handle a a simple calculation that requires either a look-up table or conditionals. This assignment can be given early in the semester to help students gain experience and proficiency with loops, calculating max/min, using conditionals and boolean expressions. 

It can also be used--with some modifications--at many points in the curriculum to explore more complex data structures (2d arrays or dicts), to practice function decomposition, or even object-oriented programming. I have successfully used the assignment twice in one semester, letting students return to the assignment later to see how much simpler the solution becomes when they are able to use functions and complex data structures. See the "redux" files attached here.

Engagement Excellence

Wallpaper Tessellation Creator

In this assignment, students will create geometric tilings in Python. Students work to draw tessellations whose specifications are provided, and have the opportunity to design their own. Students practice problem decomposition to build logic that draws a single element, a row of elements and finally a plane tiled with rows.

This assignment is essentially Robert Muller's "Problem Set 2: Tessellation" assignment, available in the EngageCSedu repository. We scaffold that material and add additional resources: (i) background materials are provided to help students with the geometry of the four mandatory elements to be tiled (squares, rings, hexagons, octagons); (ii) the assignment flow starts with simple shapes before moving to complex ones; (iii) a template is provided that gives function specifications, scaffolding the decomposition; (iv) test cases are given that allow students to check the correctness of their individual functions as they build them; and (iv) a potential grading rubric is provided.

A Tournament for Pong AI Engines

In this 2018 Nifty assignment, students write an AI engine for the game of Pong. Pong is a game enjoyed by people in general, by the CS1 community in particular, and by pigeons. In this open-ended assignment, students write an AI engine for Pong from scratch. Students can have their AI engines play against each other, and participate in a class-wide tournament. To design good AI engines, students have to read, understand, and modify the game engine code. The assignment is accessible to any CS1 student, but leaves room for a lot of exploration and creativity — we have had success engaging both excellent students who had little difficulty in CS1 and students who found CS1 challenging. 

NOTE: This is not a traditional CS1 assignment so it might make more sense used as a lab assignment or a bonus assignment.

Subscribe to Use Meaningful and Relevant Content