“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


CPE123 (CS1) Syllabus

This course is one version of Cal Poly's CPE123, an introductory course targeting incoming freshmen. All sections of CPE123 have the goal of engaging students in "demonstrating the relevance of computing to the world around them" by challenging "students with creative, constructivist challenges that are relevant to their own lives.” It assumes no prior experience in computer science.

In this version of CPE123, computational art is used as a means for exploring beginning computer programming, logic and math. The course uses Processing, an open source programming language and IDE built on the Java programming language.

“The hidden agenda of the class is to make you fall in love with the ability to translate thoughts into reality—also known as computer science.” - J. Clements

[Unlike other collection items, syllabi are not peer reviewed.]

CPTS111 (CS1) Syllabus

This is the first CS class for non majors and majors alike. No prior programming knowledge is required, and there are no prerequisites. This course introduces concepts such as how to solve problems by designing and implementing algorithms in Python. Specific programming concepts include: arithmetic, conditionals, iteration, functions, file IO, lists, and dictionaries. Upon successful completion of the course students should have gained the following skills and proficiencies: 

CS2 Syllabus

The CS2 course introduces object-oriented programming, data structures, and more sophisticated algorithms than in CS 171 (Computer Science I) which is a prerequisite for this course. You are not expected to have any prior experience with Java. In terms of the ACM’s Computer Science Curriculum 2013, this course addresses the following knowledge areas: • Algorithms and Complexity (AL) • Discrete Structures (DS) • Programming Languages (PL) • Software Development Fundamentals (SDF) • Software Engineering (SE)

This course is a required intro-level course for two of the three Lewis & Clark CS departmental majors: Computer Science and Computer Science and Mathematics.

Computational Creativity Exercise (CCE): Marble Maze I

In this assignment students work as a team to build, using only specified materials, a structure through which a marble will travel,  Students first work independently developing their own segment of the structure and then work collaboratively to construct a final structure. Students are required to video tape the execution of a marble traveling through the structure lasting at least n seconds. This exercise will allow students to practice problem decomposition, abstraction, generalization, and evaluation, and also debugging and testing.

This exercise was developed as part of the NSF-funded Computational Creativity project at the University of Nebraska-Lincoln.

Dynamic Word Clouds

This project, the 4th unit in a year-long high school introductory programming course, teaches students how to write programs that draw text objects in an individually designed word cloud. It uses the programming language, Processing (www.processing.org), which is a simplified form of Java.

In the 1st section of the project, students learn these new text methods, and are introduced to the for-each loop. They learn how to isolate transformation operations [ translate() / rotate() ] - that are used to render each word - from having side-effects on subsequently drawn words by book-ending drawing commands between pushMatrix() and popMatrix() calls. In the 2nd section, students derive and implement the mathematics involved in animating the word cloud.

The Word Cloud program intertwines these new concepts with the major programming concepts revisited from the first 3 units: variables, conditional statements, Boolean expressions, arrays, classes, iteration and movement.

Summary of the objectives of this assignment:

Engagement Excellence

Computing the Bacon Number Using IMDB Actor-Movie Data and BRIDGES

This is a project involving graphs that is motivated by the Bacon Number problem (or more generally six degrees of separation), i.e. to compute the smallest number of links from one actor to another. It is well known that Kevin Bacon, a prolific actor, has worked with a large number of actors over his career and it can be shown that within about 6 links you can reach almost any actor in the actor-movie graph of this dataset. Given that the graph is unweighted, we can use a BFS traversal of the graph to find the links that lead to Kevin Bacon (or any particular actor) from any actor in the graph. Using the BRIDGES API, you can visualize the graph and highlight the links (actors and movies) that are in the path.

In the project students will:

Console Game Application

In this assignment, students build a game where monsters are hidden in an array of cells and the player guesses which cell the monsters are in. It is a fun culminating project for a CS1 course that has students apply fundamental programming topics such as data types and variables, input/ output, classes, arrays, and others.

This simple console application employs all of the skills students should have at the completion of CSE 1301 (Programming and Problem Solving), and gives the instructor an idea if they are ready to move on to CSE 1302 (Programming and Problem Solving II). See attached course schedule and syllabus for more information about sequencing.

Exploring USGS Earthquake Data Using Binary Search Trees

In this project students will implement a binary search tree and its underlying algorithms (insert, find, etc) using Live USGS Earthquake data. The BRIDGES API (links below) will be used as part of this project to:

  1. Retrieve a user specified number of Earthquake Tweets through the Bridges API and will be stored a list of objects (Java or C++).
  2. The binary search tree and its underlying algorithms (insert, find, etc) will be implemented using the BSTElement type provided by BRIDGES.
  3. The elements in the binary search tree support visual attributes (highlight specific quake events by location, month, etc can become tasks as part of the project.
  4. Bridges API will be used to visualize the binary search tree.

Weather Data Analysis

This assignment helps students gain experience and proficiency with the Python pandas package in order to learn how to visualize weather data.  Students use Python to get sample outputs and then graph weather data such as maximum and minimum temperatures as well as number of days with rain. 

Matching Game, a CS1 Project

In this project, students build a matching game in order to gain experience and proficiency with loops, control flow, two-dimensional arrays, writing functions from their specifications and making simple graphical interfaces. In addition, students will learn how to manipulate game state to represent a game board, use randomness to vary the game state, change game state in response to user clicks, and draw a graphical representation of that game state.

Subscribe to Use Meaningful and Relevant Content