“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

Beetle

In this lab, students dissect a working implementation of the Beetle (Cootie) game using process oriented guided inquiry learning (POGIL). Learning objectives include understanding class anatomy, using objects, and problem solving. This lab allows students to read an existing program rather than creating one from scratch.

The author of this material was awarded a 2017 NCWIT Engagement Excellence Award for this and two other of his POGIL assignments. Learn more about the award at https://www.ncwit.org/project/ncwit-engagecsedu-engagement-excellence-awards.

Engagement Excellence

Maze

In this project, a student (or a pair of students) completes a Java program that generates and then solves a maze. A skeleton file is provided so that the student need only complete several methods. JUnit tests provide instant feedback on whether each method has been implemented correctly. Learning objectives include sophisticated use of recursion and arrays (including three-dimensional arrays and fill pointers).

Conditional If Statements Assignment with the SpaceSmasher Game

The purpose of this assignment is to let students experiment with conditional “if” statements while building features of an actual game in Java.  The features explored in this assignment include collision detection, sprite manipulation, mouse and keyboard controls, as well as advanced game mechanics such as power-ups and multi-balls.  Students will practice branching and gain proficiency with Selection Control Structures (“if” and “switch” statements) while producing a customized version of their very own block-breaking real time simulation. 

Towers of Hanoi

In this lab, students using process oriented guided inquiry learning (POGIL) dissect a program that solves the Towers of Hanoi puzzle. Three increasingly sophisticated implementations are provided: one that hard-codes the solution, one where methods call other methods to solve simpler problem instances, and one using recursion. Learning objectives include understanding recursion and critical thinking. This lab allows students to read an existing program rather than creating one from scratch.

The author of this material was awarded a 2017 NCWIT Engagement Excellence Award for this and two other of his POGIL assignments. Learn more about the award at https://www.ncwit.org/project/ncwit-engagecsedu-engagement-excellence-awards.

Engagement Excellence

Anagrams

In this lab, students dissect a working implementation of an Anagrams game using process oriented guided inquiry learning (POGIL). Learning objectives include tracing through a sequence of method calls, JUnit testing, and information processing. This lab allows students to read an existing program rather than creating one from scratch.

Domineering

In this project, a student (or a pair of students) completes a Java implementation of the Domineering board game. Advice is provided on breaking this program down into methods and testing those methods. Learning objectives include using multidimensional arrays, developing a simple GUI and manually testing individual methods.

Tic-Tac-Toe

In this lab, students dissect a working implementation of the Tic-Tac-Toe game using process oriented guided inquiry learning (POGIL). Learning objectives include functional decomposition, using multidimensional arrays, and team management. This lab allows students to read an existing program rather than creating one from scratch.

Pig

In this project, a student (or a pair of students) builds from scratch a Java implementation of the Pig dice game. Advice is provided on breaking this task down into stages. Learning objectives include using Java data types, operators, and control structures.

Video Reflections

These reflective written exercises connect computer science class material to everyday life experience of the students, illustrate interdisciplinary applications of computing and technology, and highlight the new issues that computing technology brings. Each exercise consists of a video to view and discussion questions to answer in writing (e.g. "How would your day-to-day life change if you had access to an affordable 3D printer and raw materials?" or, "How do algorithms shape our world"?).  Students are allowed to work solo or in pairs, and to use any resources available to them (internet sites and forums, classmates, family members, friends outside of class, etc.) No prior experience with computer science is necessary to complete the exercises, and no programming is involved.

Conditional If Statements Lab with the SpaceSmasher Game

The purpose of this lab is to let students experiment with conditional “if” statements while building features of an actual game in Java.  The features explored in this lab include determining game over conditions, controlling sprites with a mouse, event handling to control paddle movement via keystroke, and spawning singular balls via keyboard as well as advanced game mechanics such as fire and ice ball power-ups.  Students will practice branching and gain proficiency with Selection Control Structures (“if” and “switch” statements) while producing a customized version of their very own block-breaking realtime simulation. 

Subscribe to Use Meaningful and Relevant Content