“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

AI: Connect Four Agent

This assignment allows students to gain experience with AI game-playing algorithms, implementing minimax and alpha-beta pruningand designing a utility function for measuring game states. The assignment uses Connect Four, a relatively simple fully-observable and deterministic game that students are likely to have seen before. Students are responsible only for developing an agent to play the game; the game itself is already implemented and given as part of the student-facing materials. The assignment breaks down the requirements for the two algorithms into smaller chunks in order to make the whole assignment more approachable. We also provide code for Tic-Tac-Toe so that students can apply their code for minimax and alpha-beta pruning to a simpler game where sub-optimal moves will be more obvious, indicating potential bugs in their implementation. The assignment allows for a tournament to be played among all student submissions, potentially awarding extra credit to the winner of the class tournament.

ACM Digital Library Entry

AI: Informed Search to Navigate the Subway

This assignment allows students to gain experience with defining AI search problems and implementing uninformed and informed search algorithms. Students define the search problems for navigating a subway system, requiring them to define the goal test, cost function, and successor function. Students then implement breadth-first search, depth-first search, and A* search. Finally, the assignment requires students to implement a problem in a completely different domain (the 8-puzzle) in order to demonstrate that the search algorithms will work so long as the problem is correctly defined. Students are given data files for the Boston “T” and London “Tube” systems, including functions to parse these data files and build appropriate data structures. This allows students to focus on the search aspects of the problem, rather than implementing the required graph data structures from the raw data.

ACM Digital Library Entry

Usability Testing Plan Template: A flexible tool for planning and teaching usability evaluation

Usability testing is a key research method in human-computer
interaction (HCI). When students are designing for others, usability
testing is an opportunity to learn how the design is currently
working and how it can be improved. This usability testing plan
template gives individual students or teams a structure to help plan,
conduct, and analyze data from a study. The template walks
students through the process of planning a study through a series of
questions and planning materials. The template is especially helpful
for students new to usability testing and can be adapted and
adjusted as needed.

ACM Digital Library Entry

Using Citizen Science as a Theme for a User-Centered Design Course

Teaching students how to design and evaluate technology user experiences should be centered around understanding real-world user needs. In this project, students focus on a particular domain, Citizen Science, to motivate their learning of user research, prototyping, and usability testing. Citizen Science projects study phenomena in nature and the environment, such as monitoring the spread of invasive plant species or water quality. Citizen Science projects depend on volunteers to collect and submit data from local environments. Citizen Science is a compelling context for user-centered design because it involves multiple stakeholder groups, various front-end technologies (e.g., web and mobile), and information architecture. This project is scoped for a user-centered design and usability testing course for undergraduate computer science students. The course learning objectives are to (1) use research and design methods to develop an understanding of technology stakeholders and (2) apply that knowledge to create and refine design artifacts.

Using Affect-Aware Computing as a Theme for a User-Centered Design Course

This user-centered design project invites students to conduct hands-on human-computer interaction research and design by exploring affect-aware technology. These technologies seek to account for users’ emotions, moods, and other affective phenomena in the user experience. Examples include emojis used while texting, social robots that model emotional responses, and emotionally-aware chatbots. This project is for a user-centered design and usability testing course offered to undergraduate computer science students. The course learning objectives are to use research and design methods to (1) build an empirical understanding of technology stakeholders and (2) apply that knowledge to design and evaluate an interactive prototype. By immersing themselves in the complex domain of affect-aware computing, students learn to apply user-centered design to emerging technologies. Students create and refine common user-centered design artifacts, including personas, interaction designs, and prototypes. The reader of this paper will obtain recommendations for structuring the user-centered design projectand a high-level understanding of affect-aware computing.

Meme Magic: Project in Sprints

Meme Magic is a series of six assignments intended to provide progressive exposure to programming in Java using a popular and recent concept: Memes. Memes utilize an image conveying a concept or feeling with a caption provided by the Meme author. The series of assignments, designed as sprints in the context of a larger project, begin with the design and scaffolding of Java classes needed to write a program to produce text-based Memes and end with a fully-functional graphical user interface. For a detailed list of learning goals, please see the Learning Goals section. In the first sprint, students depict the overall project structure of a text-based meme application using Unified Markup Language (UML) and write method stubs in Java. In each of the next two sprints, students implement half of the specified functionality and integrate those components to a fully working application. Students are asked to add Comparators to sort memes to their application in sprint 4 and to unit test all of their code using JUnit in sprint 5. In the final sprint, students extend the functionality once more to a graphical user interface to experience event-driven programming.

Decision Trees for Text Classification in CS2

In CS2 courses centering programming with recursion and data structures, binary trees can be used to represent hierarchical relationships between data. Drawing on a machine learning context, this assignment presents an application of binary trees toward text classification that demonstrates how the design of programming abstractions shapes social outcomes. By the end of this assignment, students will not only be able to define methods that recursively construct, traverse, and modify binary trees, but also begin to engage with ethical questions around the design and use of sociotechnical text classification systems.

ACM Digital Library Entry

1-Hour Collaborative Learning Activity for Responsible Human-AI Design

It is challenging to concisely and effectively expose students to the social and practical considerations of designing Human-AI systems. But due to curricular or staffing constraints, Human-Computer Interaction (HCI) is often relegated to a single course (or less!) within CS curriculum, leaving little room for some instructors to integrate applied responsible design into existing CS topics. Still, the societal impact of Human-AI interaction deserves both attention and time. To navigate these tensions, I designed a self-contained activity that considers how responsible Human-AI design can fit into existing course structures. The goal of this 1-hour collaborative learning activity is to (1) give students hand-on experience applying ethical design considerations to Human-AI systems, and (2) be highly portable to fit a variety of contexts and time constraints.

CS2 Graphical Photo Library Project

This project steps learners through a series of assignments that culminate into a photo viewer/archive tool. The assignments are designed to emulate a software development "sprint" in the Agile development process parlance. Each sprint consists of an assignment that builds off the code of the previous assignment, and is by itself a valuable piece of the overall end product.

Our aim is to give students the feeling and experience of working on a large project via a sequence of carefully-crafted homework assignments. This project helps students gain experience with Object Oriented Programming in Java, combined with software development techniques, commenting and documenting code for maintenance, unit testing with JUnit, exception handling, event-driven programming and use of pre-built Java Swing components. The project culminates in a fully-functional graphical user interface and leaves plenty of room for creative expression.

The project was designed and developed with a neutral position regarding gender, race, and other protected classes. We believe the end product has a universal appeal for users of technology and the potential software developers of tomorrow.

Analyzing Airbnb data

This CS1 assignment asks students to use lists, dictionaries, tuples,
and basic programming concepts in Python to analyze Airbnb data.
Students are then asked to make a connection to the real world by
finding articles about regulating Airbnb and reflecting on how data
analysis might be relevant to those conversations.  The difficulty of
the assignment can be varied by changing the assumptions that students
are allowed to make about the input files.

Subscribe to Use Meaningful and Relevant Content