“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

3_DNA: Mini Gene Finder

This is the third of five programming assignments in a semester-long CS-1-like course named DNA to introduce students to programming within the context of genomics: the analysis of DNA within a single cell of an organism. Originally, the course targeted students in the life sciences but it now attracts students across the academy. The goal of these assignments is to prepare students to obtain enough confidence with scripting and associated scientific write-ups to conduct a small computational experiment in a final project.

This programming assignment requests a Python program to work the steps in a simplified view of the Central Dogma of molecular biology that relates DNA, RNA, and proteins. Briefly put, the DNA sequence (gene) provides instructions for the protein's production. The program produces all three reading frames of an mRNA and outputs the results of four elementary tests to help a human reader pick the “valid” protein.

1_DNA: Playing with (strings of) DNA

This is the first of five programming assignments in a semester-long CS-1-like course named DNA to introduce students to programming within the context of genomics. This assignment requests a Python program to perform an introductory analysis of a "snip" of DNA that includes some upstream (intergenic) sequence and the beginning (but not all) of a gene (genic sequence). A "Starter Kit" includes a template of a Python source file that shows, by example, good introductory and inline documentation, the use of good (camelCase) variable names, and a healthy dose of print statements that produce meaningful and neat output. 

2_DNA: Chargaff’s Numbers

This is the second of five programming assignments in a semester-long CS-1-like course named DNA to introduce students to programming within the context of genomics. This programming assignment requests a Python program to open and read a FASTA-formatted file filled with DNA and print a neat summary of Chargaff’s numbers, defined as: the number/proportion/percentage of A, C, G, T nucleotides in the file of DNA. Students are required to research and download the genome of an entire microbe of their choice. In addition to submitting source code, students must practice their scientific writing in a report of their program as applied to an entire microbial genome of their choice. The report must include the sections of Introduction, Methods, Results, and Discussion.

Digital Sound Processing

In this assignment, students implement some simple filters on sound objects, including reversing a sound, mixing arbitrary-length lists of sounds, and changing volumes of sounds. These functions can each be written in ten or fifteen lines of code, using objects that represent sounds and samples from our media module. Then, calling on these functions, students write a "song generator": a function that takes a string of note data (a notestring) and produces its representative sound object that can be played or saved as a wav file.

Conditionals & Loops

In this assignment, students compose a variety of functions. Using Python, students create functions that perform a wide range of tasks (from calculating the height of an individual to the manipulation of strings) that emphasize the use of loops.

Conversions/Complex Tip Functions

In this assignment, students use Pair Programming to compose a collection of functions and a tip calculator. Using Python, students create three functions and a program that calculates the tip for a bill.

Python Functions with Calico Graphics

In this assignment, students compose functions and develop graphics. Using Python, students practice writing four various functions using a set of criteria, as well as create graphics using the Calico graphics library.

Stereo Sound Processing

In this 2012 Nifty assignment, students use fundamental CS topics to explore digital sound processing. Using variables, functions, conditionals, and assignment operators in conjunction with the Pygraphics library, students perform various manipulations on sound files. Vocals are removed from the wav files by using the vocal-removing algorithm to subtract channels and isolate the single vocal track along a particular frequency range. Additional manipulations on the sound files, such as fading in and out and panning, are covered so that students can examine the various capabilities of using Python to manipulate digital sound. This assignment is ideal for students with an understanding of implementing libraries and an interest in digital sound processing.

Engagement Excellence

Objects Lab

In this lab, students refactor their code from a previous Graphics Lab to make it more object-oriented. The refactored code draws multiple instances of a house or beach hut.

Loop Lab

In this lab, students use loops and the Java Graphics class to write a program that generates alternate versions of the U.S. flag for the United States Institute of Heraldry. Students also practice using variables to store data so that the flag image can be easily manipulated. A clear grading rubric is provided.

Subscribe to Use Meaningful and Relevant Content