Abstraction: An abstraction is a representation of an object or concept. It could be something such as a door, a speedometer, or a data structure in computer science. Abstraction decouples the design from the implementation. The gauges in an automobile are an abstraction of the performance of a car. A map is an abstraction of the earth.
Modularization: The concept of modularity is like building blocks. Each block (or module) can be put in or taken out from a bigger project. Each module has its own separate function that is interchangeable with other modules.
Minimization: Minimization refers to having the least functionality necessary in a program or device. The goal of minimization is to simplify and decrease the number of ways that software can be exploited. This can include turning off ports that are not needed, reducing the amount of code running on a machine, and/or turning off unneeded features in an application.
Resource Encapsulation: Encapsulation is an object oriented concept where all data and functions required to use the resource are packaged into a single self-contained component. The goal is to only allow access or manipulation of the resource in the way the designer intended. An example, assume a flag pole is the object. There are fixed methods on how the flag pole is to be used. Put the flag on, take the flag off, raise or lower the flag. Nothing else can be done to the flag pole.
Least Privilege: One of the ways to protect information is by limiting what people can see and do with your information and resources. The principle of least privilege says to allow the minimum number of privileges necessary to accomplish the task.
Simplicity: Simplicity allows a person to better understand hardware and software. Without the clutter of unnecessarily complicated code and interfaces, the software will be more understandable by people that will update the code when requirements change. It will be easier to understand by the testers and they will be able to spot problems sooner. By keeping software as simple and as focused as possible, the reliability and security is greatly increased.
Layering: Cyber security uses multiple layers of defense or protecting information. If one layer is defeated the next layer should catch it.
In this lesson, students will apply design thinking, what they learned previously about line-programming Ozobots, and their critical thinking skills to solve a puzzle challenge. To solve the puzzle, students will need to select from the maze cards, arranging them accordingly, to satisfy all of the zone requirements.
Complete a maze functional programming puzzle challenge as the first step of a Rube Goldberg Machine.
Make sure to print one of each of the maze tiles. Set aside the start and login zones. The start zone will be your left-most card and the login zone will be the right-most card. Now, stack the other three cards. Students need to satisfy all of the zone requirements listed below. To satisfy the requirements they should select a maze card and attach it to the start card. Once they have satisfied the requirements for a zone, they can try to solve the next zone.
Matt Hale
Thanks to Emily, Raeanne, Corie, and Veronica for their maze tile designs and prototype testing.
Nebraska GenCyber
is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Overall content: Copyright (C) 2017-2019 Dr. Matthew L. Hale, Dr. Robin Gandhi, and Dr. Briana B. Morrison.
Lesson content: Copyright (C) Dr. Matthew L. Hale 2019.
This lesson is licensed by the author under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.