“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

CS1510 (CS1) Syllabus

This is the first introductory computer science course at the University of Northern Iowa. It is a semester-long course with three one-hour classroom lectures and a two-hour interactive lab per week. It is required for computer science majors but non-majors also take the course. No prior programming experience is expected, but the class is designed to be engaging to those with and without programming experience. While a major goal of the course is to provide a good start to the development of programming skills (using Python), the course is not solely about programming.  

Upon successful completion of the course students should have gained the following skills and proficiencies: general computer and operating system usage, computer operation, a mental model of how programs are executed, machine capabilities and functions, general program design, standard approaches to common (simple) programming tasks, abstraction (data , procedural, thinking), data and problem representation, and elementary data structures.

Minecraft Drawing

In this assignment, students use Python functions to create two or more types of Minecraft tiles. Examples of a drawing as well as a summary of Turtle methods are provided for guidance. In addition, past submissions are provided for inspiration.

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.

Subscribe to Use Meaningful and Relevant Content