Course Level
Data Structures
Knowledge Unit
Collection Item Type

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. Once the full sequence is completed, students will be able to generate and save graphical memes. Steps and learning concepts include designing the project structure using UML diagrams, implementing that design, unit testing with JUnit1, and event driven programming using Swing.


This series of assignments has been developed for students with some exposure to programming, though students do not necessarily need prior exposure to the Java programming language. It is therefore recommended that this project follows some introductory material on Java. It may also be helpful to provide instructions on (i) designing classes using Unified Modelling Language (UML), and (ii) good coding practices such as writing thorough comments, including the use of JavaDoc style commenting.

Given that each sprint in the series builds on prior sprints (to work on assignment 𝑥, the students must have completed assignment 𝑥 − 1), instructors should help students avoid falling behind. One strategy to avoid having an individual student fall behind is to have them work with a group of 3-4 other students. An approach that preserves individual work is to have the students discuss their approach but not share code until a sprint has been completed. This ensures everyone has a fully working version before the start of the next sprint. Another approach might be to allow students to fully collaborate, but it may be hard to ascertain if all students are internalizing the learning objectives. If each sprint is assessed independently from prior submissions, this provides a mechanism for students to be prepared for the next sprint while continuing to assess individual student contributions.

Engagement Highlights

Meme Magic engages the learner with content relevant to a modern student by leveraging a recent social media phenomenon: the meme. Students have the opportunity to create memes and are encouraged to share them at the culmination of the series of assignments. This series utilizes a modern technique of software development: breaking a large, complex problem into smaller deliverable sections intended to simulate an Agile approach. Each section of the project, or sprint, has key learning goals emphasized in the work assigned, affording the learner an opportunity to understand the object-oriented approach one layer at a time. This approach also helps the learner to complete a more advanced project that might otherwise be accomplished by students in a CS2-level course.

Given the prevalence of memes across most social media platforms, and their familiarity of and use by students from different backgrounds, supplementary assignments to this series can leverage existing interest to incorporate class discussions, presentations, or activities on ethical or soci- etal issues surrounding the creation and dissemination of memes. Relevant topics may include:

  • Copyright considerations: including discussions on the implications of using images that are not your own in creating a meme, providing appropriate attribution, etc;

  • Women (and other prominent figures) in computer science: encour- aging students to research prominent computer scientists and use their stories and images for the memes they create, as well as asking students to give a short presentation about these prominent figures of computer science using their memes;

  • Inclusivity: discussing the use of inclusive or contentious images and language in memes, with an opportunity to bring in a guest speaker from the liberal arts or the school of education;

  • Art and design: coordinating with instructors or practitioners in the Arts to facilitate discussions or create activities about selecting an image, color schemes, choice of font, composition, graphic design, etc; and

  • "Netiquette":including activities or discussions on the impact certain images have on different individuals and groups in society.

Computer Science Details

Programming Language

Material Format and Licensing Information

Creative Commons License