In this lab students work either in pairs or individually to write five functions dealing with list recursion and six functions dealing with sound manipulation. As a warmup, students must perform various operations on lists using list comprehension, such as scaling and replacing certain elements. They then manipulate sound files to play in reverse, at different volume, with static, overlaid with another file, and echoed. This lab requires students to work on list comprehension and file i/o. It is particularly useful for students who are new to Python lists.
The authors of this material were awarded a 2015 NCWIT Engagement Excellence Award for this assignment. Learn more on NCWIT's awards page.
Make the content even more Meaningful and Relevant by connecting the lab to the concepts of electronic and computer music. End the same lab section with a discussion on how programming and music creates a wide range of artistic possibilities, from live coding to social music-making with touch-based interfaces. While students work through writing the functions, provide Effective Encouragement by emphasizing that student effort, and not 'innate ability', is vital to success in computer science.
This material uses Interdisciplinary Connections to CS, by using aspects of sound and music such as volume, overlay, and echo. This materials also employs Meaningful and Relevant Content as students can relate these list and functions to their own interests and lives.