“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

Conditionals and Selection Statements

In this lab students explore conditionals in Python. Using boolean expressions and conditional logic, students are required to predict the outcome of multiple expressions and then use the Python interpreter to obtain the actual outcome for each statement. Through a series of activities students gradually build programs that demonstrate an understanding of how to use these fundamental constructs in CS. These series of activities are ideal for students looking for more experience with boolean operators and in creating small programs using conditional logic.

IDLE and Basics of Python Programming

In this lab students explore the basics of Python. Using the Python Interpreter in IDLE, students create a series of programs that cover performing mathematical calculations and concatenation with strings. After building a program to calculate information about a particular sphere, students get to create their own project based on the premise of planning a trip to Europe. This activity is ideal for students who are both new to programming and new to Python.

Sorting out Caesar!

In this assignment students work either individually or in pairs to write functions that encode and decode a Caesar cipher, along with several other sorting and string problems. Students must write functions that encipher a message by rotating the letters and decipher a message by looking at letter frequencies in the enciphered message. Additionally, students must write functions that sort a binary list, sort a general list, find the number of characters shared between two strings, and find the least common subsequence of two strings. In addition to requiring students to work with recursion, strings, and list comprehension, this assignment requires students to design their own algorithms. It is particularly useful for students who are comfortable with the topics covered but need additional practice designing algorithms.

The sleepwalking student

In this assignment students work to write a program that simulates a random walk. Using recursion, students must write a function that continuously randomly selects left or right and keeps track of how far the random walker has moved. They must then analyze their random walks to find how far the random walker travels on average. In addition to reviewing recursion and random number generation, this assignment requires students to create debug statements that print additional information. It is particularly useful for students who are new to recursion and need additional practice debugging.

Rochambeau

In this assignment students work either individually or in pairs to write a program that plays the rock, paper, scissors with the user. Students must prompt the user for a choice of move, choose a move for the computer to make, and then display the results of the game. Students can choose whether their program plays honestly or cheats. This assignment requires students to work with basic console i/o and variables. It is particularly useful as a first assignment.

vPool Project

In this project students work either individually or in pairs to write an open-ended game loosely based on pool. Using VPython, students must write a pool-like game with a cue ball (or other object) that the player controls directly, other balls, walls, and some kind of hole in which the balls can fall (or other goal). These different objects must be able to interact simultaneously with some semblance of physics, either realistic or wacky. In addition to requiring students to work with graphics, this project allows students to work on creating their own programatic design. It is particularly useful for students who need additional practice designing and then implementing large programs.

The Evolution of Picobot

In this project students work either individually or in pairs to write a program that generates random Picobots, robots that move around a world according to a set of rules, and creates subsequent generations by "mating" the "fittest" Picobots. Students must write at least two classes, one to represent a Picobot program and one to represent a Picobot world. They use these classes to generate a random generation of Picobots to begin and assess the fitness of each Picobot, mating them and outputting the results for each generation. In addition to reviewing classes, strings, and random number generation, this project requires students to design their own classes. It is particularly useful for students who need additional practice designing multiple, interacting classes.

Text ID

In this project students work either individually or in pairs to write a text identification class that uses the Naive Bayes Classifier to determine what author is likely to have written a given text. Students are required to design a class that compiles features from a given text, such as word lengths, sentence lengths, and distribution of word-stems. They then use these features in the Naive Bayes algorithm to classify texts. In addition to reviewing string manipulation, this project requires students to design and document a class. It is particularly useful for students who need additional practice with strings and class design.

Connect Four: The Player class

In this assignment students work either individually or in pairs to implement an AI Player class for the game Connect 4. Students must write a class that recursively chooses the optimal move in the game Connect 4 given a board and the number of moves to look ahead. In addition to having students write a recursive algorithm, this assignment also requires students to design a class. It is particularly useful for students who need additional practice with recursion and classes.

Connect 4 Board

In this assignment students work individually or in pairs to write a class that represents the board in the game Connect 4. Students must use a two-dimensional array to represent the board and write methods that initialize the board, check whether a move is allowed, check if the board is full, place a marker in a column, undo a move, check whether a player has won, and run a loop that plays the game. This assignment requires students to write a class and work with multidimensional arrays. It is particularly useful for students who need additional practice designing classes and performing operations on multidimensional arrays.

Subscribe to Use Meaningful and Relevant Content