# Public Keys, One Way Functions and Hard Problems

Security has always been a major focus of computer science research, and with the explosion of Internet use by commerce, the need for secure transactions has taken on more urgency. Most recently, cyber-thieves demonstrated that true security on the Internet is going to require a new level of understanding of how to protect personal data, and more importantly, financial transactions. This lesson introduces two important concepts: public key encryption and one-way functions. It provides an opportunity for students to understand the underpinnings of almost all Internet security: they will come to appreciate that any lock can be eventually broken, and that theoretical computer scientists study ‘hard’ problems to lengthen the time it will take to break a lock. Note that this is not a lesson in encryption, but in how mathematics is used to secure information.

# Virtual Reality and Anaglyph Stereoscopic Technology

With the mass production and availability of low cost and robust head-mounted displays (HMDs), there has been increasing interest in virtual reality technologies - for example the Oculus Rift, HTC Vive, Samsung VR Gear, Microsoft HoloLens, and Sony’s PlayStation VR. These display technologies are based around artificial stereo images, and provide a view with illusions of 3D depth in virtual environments. Students will use the scientific method to study ‘anaglyph’ (movie 3D) technologies to model computer science design and learn how stereo images create the illusion of 3D.

# Smart Buildings and the Internet of Things

‘Smart buildings’ meld environmentally responsible design with cutting-edge computing technology. This lesson explores the practical, scientific, ethical, and environmental issues that emerge in building ‘smart buildings’ that rely on ‘the internet of things’. Students work in teams using resourced technology to design and perhaps later implement, smart building solutions to make their school a better place in which to live.

# Binary Basics

This lesson is intended to provide very young students with a basic understanding of how the system of binary numbers works.

# Sorting Socks is Algorithm Complexity

How do you know how fast a computer can calculate an answer, or whether an answer can be calculated at all? The field of Computational Complexity is the study of whether problems can be solved, and how fast. This lesson introduces some simple ideas about algorithms and their complexity through a series of exercises involving a collection of socks. Of course, other objects can be used as well. This is an active learning lesson that does not require access to a computer. Linear, polynomial, and logarithmic algorithms are explored building an intuitive understanding of order of magnitude.

# Animation with Object Efficiency

One of the most important ideas in modern computer science is the object. Without objects, modern window-based user interfaces and much of modern film techniques would be almost impossible to do. Objects allow designers and programmers to encapsulate information so that other details can be ignored when necessary. This lesson shows how an object made of connected parts can be animated by displaying it as a series of graphic images. This lesson can be done entirely off computer by building a traditional flip book with a PostIt note pad, or entirely on a computer using slide production software (PowerPoint, Keynote, Google Drive Slides). Or you can combine them for a very rich experience.

# Data Representation: Millions of Colors

Display devices on cellphones, tablets and computers of all sizes, use bits of information to represent color. By first creating, and then playing a card game, students learn how additive color is represented as binary and hexadecimal numbers. They will also get practice in recognizing and manipulating binary and hexadecimal representations.

# Coloring Discrete Structures

Is it true or false that Discrete Structures and Discrete Mathematics are the same thing? This is the kind of question that is asked in this field – or both fields if they are indeed different. Most Middle School students see a mix of discrete and continuous math without ever noticing the difference. This lesson introduces them to areas of mathematics that computer scientists use to do computational problems. Search techniques through discrete structures are illustrated through graph traversal and graph coloring.

# Vector Graphics Use Functions

For a half century computing technology has played an increasing role in how we create visual imagery. Vector graphics was the original method for rendering images on a display screen. It fell out of favor in the 1990s as increasing memory size allowed raster, or bitmap images, to be stored. Within the last decade there has been a resurgence of vector graphics to efficiently support graphic displays as large as billboards and as small as postage stamps. Vector graphics are dependent upon functions. This lesson introduces vector graphics and functions through a collaborative design activity.

# Recursion: Smaller Sibling Pyramids

Recursion, Iteration (Looping), and Concurrency. In the first of two sessions (at most an hour each), students are asked to calculate a simple summation by themselves, based on a procedure they are given. Then, through a guided role-playing procedure, students are asked to do the same problem by pushing a sub-problem off onto a ‘little sibling’. In the second session, they use a divide-and-conquer approach to understand a simple formula for summation. During this session they also talk about the big ideas behind these three problem solving methods.

## Search Lesson Plans

and/or

Quickstart: we have resources for Students, Parents, Teachers, and Guidance Counselors