Happy Computer Science Week! Robotics can be used to teach foundational concepts in both Computer Science and Engineering. In this blog we’ve interviewed two experts in robotics education, Robin Shoop, the Director of Carnegie Mellon’s Robotics Academy, and Jason McKenna, the Director of Educational Strategy for Robomatter. We asked them some questions about using robotics to teach Engineering, Computer Science, and Computational Thinking.
Why study Robotics?
Robotic technologies are everywhere, they just don’t call them robots! One definition of a robot is sense-plan-act (SPA). A robotic system senses something in its environment, makes a plan based on algorithms, and then acts on the plan based on the integrated technologies. The robotic technology can be physical, like on an airplane. A plane uses a combination of GPS, gyroscope, accelerometer, altimeter, and the pilot’s commands to control servo motors, rudders, ailerons, and other physical systems to fly the plane from one location to another. Or the system can be virtual, like the Internet, your cell phone, or banking systems. These systems use multiple types of feedback to track the flow of money, locate restaurants, or find the answers to queries. Robotic systems are integrated into banking, healthcare, manufacturing, construction, transportation, and the Internet; they are everywhere, we just don’t call them robots. Since robotic systems are basically smart systems and are being integrated into all sorts of industries, then it makes sense to study robotics. In our present world, studying robots just means that we are studying the world around us.
Can Robots be used to teach Computer Science and Computational Thinking?
Absolutely. One example of Computational thinking involves identifying and framing a problem so that it can be solved algorithmically. This process begins with two related computational thinking concepts: abstraction and decomposition. Additionally, when you are learning these concepts you are also able to developing communication and collaboration skills, which are crosscutting skills that are interwoven throughout the Computational Thinking Practices design principles.
Abstraction is a technique used by computer scientists to foreground the important parts of the problem while suppressing the complex/messy parts; pseudocode and flowcharts are good examples of how a computer scientist uses abstraction to think about a problem. Abstraction allows the programmer to think about the robot problem in terms of robot behaviors without worrying about the programming language and the robotic system. It allows the programmer to focus on the problem (before developing a solution). Decomposition is a concept that is related to abstraction. Decomposition involves breaking the problem into small solvable parts. Once the problem is broken into smaller parts then small parts can be solved individually ,and eventually all the small parts can be brought together to solve the larger problem. In essence, students need to think about the problem, break the large problem into smaller solvable parts, and then put the parts together to solve the problem.
Can you identify some of the challenges facing students as they begin to learn Computer Science and Computational Thinking?
The biggest problem that I see with novice programmers is that they need to learn “how to think like a machine thinks.” This is no small task because machines need guidance every step of the way. Students need to learn how to break every part of the problem into tasks that can be solved using logic that answers questions with yes or no or true or false answers.
Another problem that I’ve seen is that novice programmers get too hung up on programming syntax and reserved words. Unfortunately, the focus on structure takes away from the amount of time that they dedicate to thinking about the logic that the machine will need to use to solve the problem. A related but different issue is that students often try to solve the problem as an individual without consulting what others have done (research) or talking to others to brainstorm (feedback). As was previously mentioned, two of the foundational concepts found in Computational Thinking Practices are collaboration and communication. The big problems that this next generation faces will be solved in teams, not by a single person. It is important that students learn to see what others have done and build on it and work as a part of a team. I’ve conducted studies with owners of companies and they’ve told me that “people who are great collaborators are huge assets for their businesses.” I can’t stress enough about the importance of the development of verbal and non-verbal communications (written, oral, and body language,attitude), and of course the ability to work with others.
What types of projects are CMRA & Robomatter currently studying to improve students’ ability to think computationally?
Research tells us that “memory and organization are not only correlated, but organization is a necessary condition for memory[i]”. There have been multiple studies involving how novice learners process new information verses how experts process new information. For example, there was a large study[ii] involving the ability of beginning level electricians verse master level electrician’s ability to recall information. The study gave the same set of electrical schematics to both groups for 15 seconds, and then asked the electrician to redraw the schematic. The master electricians could recreate much more of the schematic than the beginning level electricians. The study concluded that the reason for this is because the master electrician could organize their thought processes in terms of mental models of systems. They looked at the schematic in terms of electrical systems they knew based on prior knowledge of how each subsystem was built electronically. The beginning level electricians on the other hand didn’t see the systems, but saw individual components and were not able to draw from prior knowledge to recreate the schematics. Our lessons begin by helping students create mental models of the problem before they start to solve the problem. Our classroom tests are showing positive gain in students’ ability to think computationally. We attribute these gains to the fact that students are able to create better mental models of the overall problem as they are learning. These mental models allow them to process, validate, and store information better. To learn more about our lessons click here.
[i] Mandler, George. “Organization and memory.” Psychology of learning and motivation 1 (1967): 327‐372.
[ii] Bransford, John D., Ann L. Brown, and Rodney R. Cocking. “How people learn.” (2000).