Welcome!
Computational thinking means solving hard problems of all kinds using ideas from computer science. These include algorithmic thinking, decomposition, pattern recognition and abstraction, as well as confidence in the face of ambiguity and tenacity to persist through challenges requiring iteration and experimentation.
My computational thinking curriculum is freely provided here for you to incorporate within your own classrooms. You’ll find lessons divided into disciplines along the top of this and every other page. With these lessons and projects, I hope you will encourage your students to grow and flourish as computational thinkers, ready to face the real-world challenges of their generation!
Lessons by subject
Basketball Motion Analysis
Use motion-tracking data to analyze a play
Rational Football League
Recruit a team based on random statistics presented as ratios
Racial Bias in Traffic Stops
Evaluate evidence of racial bias in public traffic stop data
Superhero Transformations
Design a superhero comic using geometric shapes and transformations
Guitars and String Vibrations
Apply direct and inverse variation to make music with guitar strings
Polygon Transformations
Explore reflections, translations, rotations and dilations
Drawing With Coordinates
Create art by plotting coordinate pairs and connecting the dots
Body System Amusement Parks
Design amusement parks based on body systems and organs
Making Babies with Punnett Squares
Practice Punnett Squares with a fun game
Mapping Earthquakes to Save the World
Leverage real-time data to plot earthquakes on a map
Designing a Solar System
Experiment with a solar system simulator
Hanging Atom Models
Create physical models of atoms
Cell Analogies
Create a visual representation of an analogy for cells
Cell Division Comics
Draw a six-panel comic featuring cell division
The Evolution of Zoe the Protozoa
Play an evolution game to learn about genetic mutations
Designing Greek Monuments in 3D
Create a 3D model of your own Greek monument
Ancient Civilizations
Create a civilization in a computer-based activity
The Scramble for Africa
Explore and discuss the tragedy of colonization in Africa
Ancient Civilizations - Paper
Create a civilization in a paper-based activity
Modernizing Myths from Ancient Greece
Bring classic myths into the modern era
The Enigma Machine
Discover how encryption was key to ending WWII
Criminal Justice Reform
Critique and redesign the American criminal justice system
Voting Rights and Voter ID Laws
Discover the history of voting rights in the US
Creating a Podcast
Write and record a podcast about a novel
Lord of the Flies Island Map
Visually represent the central themes of Lord of the Flies
Writing Historical Fiction
Interview a family member about historic moments
What is computational thinking?
Popularly defined by Jeanette Wing in 2006, computational thinking is a way of solving problems, designing systems and understanding human behavior by drawing on the concepts of computer science. It is the thought processes involved in formulating problems and their solutions so that the solutions are represented in a form that can be effectively carried out by an information-processing agent.
Gerald Sussman offered a strong analogy in 2010’s Report of a Workshop on the Scope and Nature of Computational Thinking, saying, “Scientific thinking is about apples and oranges and how they may be different or the same. Mathematical thinking is about [apples and oranges as] spheres and where they have areas and volume and the fact that they may involve a particularly high number of dimensions. Computational thinking is about how a group of people can cut and share an apple so that each person feels he or she got a fair share of the apple.”
Computational thinking skills include:
- Algorithmic thinking – using a well-defined series of steps to achieve a desired outcome
- Decomposition – tackling a complicated problem by breaking it down into its components and working on pieces one at a time
- Abstraction – stripping away the specifics of a set of problems to find the generic solution that can be used for them all, or representing a complicated system with a simple model or visualization
- Pattern recognition – analyzing trends in data and leveraging that information to inform solutions
Solving problems as a computational thinker also requires some specific attitudes towards problem solving in general. We strive to empower our students with the confidence needed to tackle ambiguous problems, the tenacity to persist through challenges requiring iteration and experimentation, strong communication skills to facilitate collaboration and presentation, and a general curiosity across all disciplines that leads them to asking and answering big, scary questions.
Press
Acknowledgements
This work was funded by the Paul G. Allen Family Foundation and Green Dot Public Schools.
Contact
Questions? Comments? You can reach me at [email protected].
Privacy
Please find our privacy policy here.