How to use MicroInventor?

This curriculum is intentionally written as a set of structured “tutorials.” It is designed both for teachers to plan their lessons and for students to follow the instructions in the lessons in class, in case they get stuck. Before using the curriculum, make sure all software and hardware is set up by following the “Get Started” guide on the left. We will be using the Raspberry Pi 3s as our platform for coding. We will also update the stock Node-RED IoT platform installed on Raspberry Pis to the latest version.

What are the goals of MicroInventor?

The first and ultimate goal of the curriculum is to foster computational thinking skills. We want the students to be able to not only understand the key concepts in computational thinking, such as abstraction and automation, but also solve problems by practicing what they have learned. We want the students to apply computational thinking skills more generically in other disciplines and in real life. The progression of computational thinking skills follows the framework being developed in Paul Xu’s doctoral dissertation. The instructional activities will explicitly make connections between what the students are doing in this class and what they could do in other disciplines.

The second goal of this curriculum is to introduce core concepts and ideas in computer science. These include software/hardware, data type/structure, input/output, flow control, and networking. The curriculum goes beyond programming languages and gives the students a brief overview of interconnected computing devices used in application. The students will learn practical skills used by professionals every day in the industry.

The third goal is to prepare students for abstract thinking through concrete and physical learning activities. The key concept is data. The students will learn how computers encode information in 0s and 1s, how they store and manipulate data, and how they transmit data among each other. To that end the course will use the programming paradigm called data-flow. Different from agent-based languages such as NetLogo, Scratch, and Alice, the curriculum will use physical activities to scaffold abstract concepts, so students develop skills critical to new fields in computer science such as data science and machine learning.

How are units structured?

The curriculum is project-based. The students will build and code devices that exchange data between each other and explain how this very idea might be powerful in solving real-world problems. The units are designed to develop skills necessary for them to build their final project. Each unit culminates with a “micro-project,” which also serves as both an assessment and a stepping stone towards the final project. The first micro-project focuses on coding skills, the second focuses on building skills, and the third focuses on putting the previous two microprojects together.

How are lessons structured?

In order to accommodate the needs of different classrooms, each lesson will specify the time required, so that the teachers can have the flexibility in structuring the lesson over different sessions/meetings. Each lesson has instructional goals for computer science skills, cross-discipline skills, and computational thinking skills as higher order goals. The vocabulary and material required will also be listed. There will be an assessment at the end of each lesson to provide feedback to the instructors, so they can plan their lessons accordingly.

Tips on classroom management

The content of this curriculum is likely to be challenging for middle school students. Therefore, we recommend at least two adult be in the classroom to provide the students with ample support. However, while support is important, students need also to develop skills to debug and troubleshoot without relying on adults. We thus recommend that each student get two opportunities to receive support from adults. Active participation is encouraged by additional opportunities of support and disruptive behavior is discouraged by taking away support points.

It is also vital to make sure that the students are on the same page regardless of their progress on the previous day. Therefore, it is a good idea to share code to the students at the beginning of a class, if this class builds on what the students have learned previously.

A third tip on classroom management is to keep students occupied by continuing to challenge them once they have finished a coding task in class. One way to do this is to intentionally break their code and introduce errors on the frequent errors list.