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.
Layering: Cyber security uses multiple layers of defense or protecting information. If one layer is defeated the next layer should catch it.
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.
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.
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.
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.
In this lesson, we will learn the basics of Rube Goldberg machines and construct a simple one with basic supplies. Emphasis is place on using the computational thinking and design process methodology in the scope of simple machines to solve basic problems. We will be building a Rube Goldberg over the duration of camp, so this is an introduction to the concepts you will use later.
A rube goldberg
machine is a device that accomplishes a task by complex means when it can seemingly be done more simply. It is actually a great example of how NOT to build a secure system. They don’t make use of simplicity or minimization, which are two important principles of system design. That said, Rube Goldberg machines are FUN to build! They are also a useful tool for illustrating computational thinking and design process. Finally, when done well, Rube Goldbergs make great use of abstraction, modularization, and resource encapsulation.
Lets watch an intro video to see some Rube Goldbergs in action.
See this video of all of the times it didn’t work
Challenge
Create a machine that
takes the trash out
(AKA drops a piece of trash into a cup).
draw out your initial design
section. Like the girls in the video, try to plan out what concepts will work together to make your design work.test criteria
in the workbook and what your expectations are.refined design
using what you’ve learned so far.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.