Categories
Ev3 Robots Learning Tools Lesson Programming SuperTopic Update

Advanced Ev3 Robotics Lesson For Superstars – Problem Solving

advanced ev3 robotics lesson

 

My first year teaching STEM was relatively simple from a curriculum design perspective. I knew that grades 5 & 6 would be robotics, and 7 & 8 would be 3D printing (Grade 4 Was a mystery, but I knew I’d figure it out eventually). As none of my students had previous exposure to Robots or 3D printing I could just give my grades 5 & 6 the same lesson, and give my grades 7 & 8 the same lesson. After they had the basics, I would go advanced the next year. The problem was that though I found some basic Ev3 lessons, there didn’t seem to be an Advanced Ev3 Robotics Lesson to look at anywhere.

Not to be slowed down by the fact that no one seemed to have done this before, I decided to go with a series of broad based challenges. Luckily I found the fantastic Dr. E’s Mindstorm Challenges web site to steer me in the right direction. After about 12 iterations, the Advanced Ev3 Robotics Lesson you are about to discover was born. If you came here looking for more basic Ev3 lessons, check here & here.

Materials I use

  • A Core Lego Ev3 for Education kit for every 2-4 students.
  • An Expansion Lego Ev3 for Education kit for every 2-4 students.
  • Some type of cellular phone, or tablet for every 2-4 students.
  • 1 Laptop running Lego Mindstorms Ev3 software for each team.
  • Chromebooks for every 1-2 students.
  • Sumo ring.
  • Access to google classroom for all students (hereafter referred to as the classroom).
  • At least 1 extra Ev3 brick for every other team. For instance if you have four teams, you will want to have a minimum of 2 spare bricks. Ideally though, you will have a spare brick for each team.

 

Advanced Ev3 Robotics Lesson Overview

What follows is a lesson designed to be given over the course of 10 weeks to students in grade 6. These students have already had 10 weeks of basic Ev3 robotics in grade 5, but may not have had that lesson in a year or more. My first challenge here is to refresh my students on the basics. I do this by assigning the same challenge they had as a final for their previous course (Robot Sumo). I add the twist that they must design their own robot. In the previous challenge all of the robots were the same.

The greater lesson here is colored by the fact that my grade 6 students do an Egg Drop Challenge. The design challenge for my class focuses on the Engineering Concept of a fair test. Typically with egg drop challenges some neutral adult actually drops each design off of some high structure (like a roof). Part of the lesson is a discussion about what makes a fair test, and how to develop one.

Invariably we come to the idea that only if all of the egg containers are dropped in exactly the same manner is the test fair. If you refer to my previous post you will note that one of our Big Ideas in computing is that computers are good a repetition & precision. It is a really good day when one of my Sixth Graders points this out unprompted. The design challenge that will take up the majority of the quarter will be to develop a robotic device that will drop the egg container in the exact same manner every time. The device will start out simple, but will become more complex with each iteration.

Note:

This lesson assumes both you, and your students have a high level of comfort with Lego Mindstorms Ev3. Basic concepts are covered in posts here & here. In addition, you & your students should also be comfortable with control structures such as loops, waits, and switches. A high level understanding of Ev3 Sensor blocks, bluetooth operations, and math operations is also necessary for you as the instructor.

Skills Refresher Robot Sumo

For the skills refresher I give the students the following specifications regarding their Sumo Fighting robot.

  • 2 Large Motors are required for movement.
  • 1 Color Sensor is required to stay inside of the ring.
  • At least 1 arm is required that will try to flip your opponent.
  • Any arm is controlled by the Ultrasonic Sensor.

 

Students are asked to research at least 2 web sites that have information on how to build Ev3 robots. Once they have done the research most teams seem to have an idea about how to start. If a given team seems stumped I have them refer to their classmates posts in the classroom. If they are still stumped I demonstrate a couple of ways to attach large motors to Ev3 bricks as this seems to be the barrier for most students that keeps them from beginning to build.

Once they have constructed their robots we walk through a basic program with two parallel loops. One loop has the robot drive up to a black line, back up, turn, and move forward. The second loop triggers the robotic arm when an enemy robot comes within range. However, I don’t necessarily give students these programs. Instead we talk through psudocode for each loop, and I show them how to run parallel loops.

Advanced Ev3 Robotics Lesson Expansion

Once the building starts I bring up two additional Engineering & Computer Science concepts that I teach in my program. The first is documentation, and the second is collaboration. For documentation I am specifically referring to work in progress photos. I managed to get my hands on 5 Android Tablets from a project I worked on with Tufts University (similar to these), which I have my students use as digital engineering notebooks. They are asked to take pictures of their builds in progress, and post them to the classroom along with a description of their picture. I sometimes even ask them to take pictures of each step of a build, and post them. I also ask them to take photographs of their screens when they are writing their programs, and make sure each block of code is commented using the comment feature in the Ev3 software.

For collaboration I have students comment on at least two of their classmates posts in the classroom per week. This seems like a small thing, but what actually happens is that student become used to this, and begin working together. They will even use their classmates work as a resource when a particular aspect of a challenge has them stumped.

Note:

You will need to teach your students what you would like in terms of both Work In Progress (WIP) photos, and comments. These are both new skills to most students, and need to be taught continuously.

Design Challenge Sequence

The main idea with this series of challenges is to create a solution, and improve it in a specific way with each iteration. When students run into programming concepts they are unfamiliar with, encourage them to try and figure it out independently. The idea is that they find their own solution either by asking a classmate or finding an answer through internet research. As a last resort you can use guided self discovery, but don’t give them answers.

Iterations 1 & 2

The first project in this series is to have students design and program a device that will drop a box (I use a tissue box) when the program is run. I don’t give my students any hardware requirements for this solution, just the main Ev3 brick. This initial solution will work, is uncomplicated, and typically just involves running a motor (or motors) just long enough to “drop” the box. The device is then reset manually for the next drop. In most cases no new programming concepts are required, but more complex solutions may require the use of the unregulated motor block. The second iteration should have the device reset itself when run.

Iteration 3

In this iteration, students will likely run into some new concepts in programming. They should improve their device so that it uses the touch sensor or multiple touch sensors. They can use either one or two touch sensors. The program runs continuously, and is controlled by the touch sensor(s). By some combination of press and release the device will activate & reset.

Iteration 4

In this iteration students use the brick buttons to control the devices activate & reset functions. It is certainly okay to swap iteration 3 & 4, but I do it in this order to build towards the next iteration. It so happens that there is a fantastic video on youtube that will assist your students in the next iteration, but uses brick buttons.

Iteration 5

Here is where the difficulty of this set of challenges ramps up significantly. As they are asked to do something they have never done before in the Ev3 environment. Up until now all of the iterations are just variations on concepts they would have mastered the previous year. Now however, students are asked to connect two Ev3 bricks via bluetooth. One brick will act as the controller for the second brick. Students will set up a bluetooth connection between 2 bricks, they will use the messaging feature to make their device activate & reset using the brick buttons. Here & Here are some excellent tutorials that will help your students solve this problem. I make them search for the solution, but you may want to give it to them.

Iterations 6, 7, & 8

For the remaining iterations of the Egg Drop project students will change the manner of control among their connected bricks. First they will use a single touch sensor on their control brick, then they will use two touch sensors, and finally they will use a large motor. All of the information they need to accomplish these tasks can be found on the internet, or inferred from previous work on this problem set. As mentioned above, most of these concepts are pretty high level.

Final Assessment (WIP)

Ideally my whole class would get through the first 8 iterations of this problem set, and would have the opportunity to perform the assessment I am about to describe.  Unfortunately, it is a lot to expect in a 10 week program. In my classroom, none of my students has gotten further than Iteration  8 above. I hope to one day get here, I hope you can as well. In any case, always plan for more than you think you can accomplish.

The assessment here is to have your students design both a robotic car, and a remote controller for that car. They are then asked to perform a series of runs through a maze, and are competing for the best time. You could add complication by having items for them to pick up, and drop off if you so choose. If you wanted to get really challenging you could set up a system whereby students use some manner of video feed to see their robot while controlling it.

What I am aiming for with this assessment if for student to realize that controller design is as important, or even more important than the design of the car. I will happily do another, more robust post on just this assessment if I can manage to get my students far enough to do it several times. If you manage to get your students to this point please let me know how it works out.

I hope this post (long as it is) has been helpful to your teaching practice. If it has, please feel free to share it with whomever you’d like. If you’d like to be updated when new posts come out by email, please sign up for our mailing list. Thanks for your time.

Categories
Computer Science Learning Tools Lesson Programming SuperTopic Update

Creating Coding Lessons – Grades 6-8: Part 1

Creating Coding Lessons

As a STEM teacher I am continually taking workshops and courses to get better at my job. As a public school teacher I am always on the lookout for those who are willing to donate equipment to my program. While on a follow-up call for a coding PD I took last summer, I was asked what I would need in order to implement coding fully into my curriculum.  My answer was simple: “I need 9 new Android tablets”. I was half joking, but you miss 100% of the shots you don’t take. When the response was: “Okay we should be able to get those to you in January”. I realized I needed to begin Creating Coding Lessons for my grade 8 students, and the idea for this post was born.

If you don’t have access to an Android device for each student (or each pair if you are using pair programming), check out this post for your coding lesson needs.

Creating Coding Lessons Overview

I am Creating Coding Lessons for a 10 week course for 14 grade 8 students. We use tablets and cellular phones running the Android operating system to run our programs. We use Chromebooks, and the App Inventor 2 IDE to create them. This course focuses on teaching Computer Science fundamentals, and specific event based programming skills. Class time is spent on performance tasks, and all assessments are performance based. Any lecture is video based. For the final assessment, students will create an app that solves a real world problem. Successful completion of this task will show mastery of the content at Depth Of Knowledge (DOK) 4. The process for Creating Coding Lessons for this unit will be outlined over several posts.

Standards framework for Computer Science Education in primary grades is evolving. No clear system with fully developed standards, and practices seems to be available. There is a generally accepted framework I will be working from which can be found here, but this will be my interpretation of the general concepts they recommend.

Unlike most of my curriculum posts, I will not initially be focused on a full STEM implementation here. Eventually, Math and Science will be integrated, but to start I will be focusing on Technology and Engineering. Designing a full fledged STEM unit is a daunting task, but designing a focused unit to be altered later is significantly less problematic. In this case I am under a time crunch to start teaching this unit so, Creating Coding Lessons for it needs to happen quickly. Remember that much like the design tasks we use to teach engineering, we can iterate on our lessons. In fact, none of my lessons are exactly as I originally envisioned them.

Creating Coding Lessons Practices

K12cs.org outlines 7 core practices of Computer Science that students in all grade bands should work towards mastering. Within the greater context of the coding unit each performance task should be working towards fostering the following.

  1. Fostering an Inclusive Computing Culture: This practice refers to the idea that computing is for everyone, and that perspectives from various genders, ethnicities, and abilities have positive effects on computing.
  2. Collaborating around Computing: This practice encourages individual students to become used to working collaboratively on teams, and in pairs.
  3. Recognizing and Defining Computational Problems: This practice fosters the ability to recognize, and define problems that can be solved with computing.
  4. Developing and Using Abstractions: The concept of abstraction revolves around helping students develop the ability to generalize portions of a solution for reuse in other computational problems.
  5. Creating Computational Artifacts: This practice involves having students actually create things as opposed to just learn about them conceptually. Students should create programs, videos, robotics systems, and apps as part of their study.
  6. Testing and Refining Computational Artifacts: This practice refers to having students iterate on their creations.
  7. Communicating About Computing: At its core this practice asks students to not only create computational artifacts and iterate on them, but also to be able to describe what their creation does as well as how it does it.

 

Creating Coding Lesson Concepts

In addition to the core practices as outlined by k12cs.org there are 8 Computer Science core concepts. These concepts are broken out by grade band level. This set of lessons is focused on the 6-8 grade band. Additionally, this set lessons is designed to teach students these concepts to a level they should know by the time they graduate grade 8. The descriptions for these concepts, and what students need to know by the end of grade 8 are found here.

  • Algorithms
  • Variables
  • Control
  • Modularity
  • Program Development
  • Culture
  • Social Interactions
  • Safety, Law, and Ethics

 

First Lesson

As evidenced  by the Concepts & Practices above I am teaching far more than simply app development.  I will use the App Inventor 2 IDE & Google sites for the lesson, but I am teaching a core of Computer Science. As it turns out, I just had my first class in this lesson today. After the normal opening day items such as how to get permission to use the rest room, and safety concerns we really only had enough time to get set up with the various systems that will be in play for this class.

Google Classroom

For this course I will use Google Classroom primarily to assign homework, and give students direction for independent research. I use Google Classroom, because I am at a Google school, I’m certain that there are other tools available, but I find it very easy to use, and it’s available to me. Since I am working towards teaching Computer Science through App Development the first thing I did was assign the students a set research questions, and a video.

The questions are: What is a Computer? What are it’s features? What is Computer Science?

My students are asked to research the above questions, and provide answers on their individual Google site. I made the questions broad based intentionally to see what the kids come up with. This question set serves the primary purpose of getting students used to research. The discussions that will follow will work to refine their understanding of computer science. By the end of this course they should have a better understanding of the above concepts.

The video I assigned is here and just covers the basics of the App Inventor 2 IDE, as well as walking learners through creating their first app. We will actually create the app in class, but I wanted them familiar with the video before we work through it. I gave my students the option of attempting the project by themselves as well. Allowing students this opportunity will take advantage of their excitement, and allow them additional autonomy if they would like it.

Google Sites

In addition to software development, web site design is another foundational Computer Science skill. Teaching some simple design, with a simple tool will make later exploration more efficient. I also want to have a way for my students to effectively collaborate with one another in their work, and to archive their work. With all of this in mind, having them create a digital portfolio is the right call. Again, I work at a Google School so I have access to this tool, but others are certainly out there. Additionally, for younger students I really like Google Sites. It is easy to use, and incredibly easy to control who sees the content. One of the things I am trying to teach my students is the concept of safe computing, and one of the foundations of safe computing is limiting access.

Some things to keep in mind here are that students will need to “share” their site with you in for for you to view/edit it. You should also have them set their privacy settings to “anyone with the link”. This allows them to share it more easily while keeping the  circle of viewers small. I ask my students to set up an about me page, a links page, and an assignments page to start. When they complete an assigned question they put the link to their answer in the comments to the question in google classroom. Later I will have them collaborate using their sites by posting links to them in the google classroom.

 

Talk to me App

The first App we will develop is a simple piece of software that is designed to use the text to talk feature of the Android Operating System. This feature allows a user to input a string of text, and the computer will “read” that string out loud through the device’s speakers. In this first iteration of the App, students will program in a graphical button on the device’s screen which when tapped will “speak” a pre-determined statement. The tutorial for this app can be found here.

This particular App isn’t overly complex. It requires changes to the code itself in order to change the message spoken, and only has one component. However, if we look a bit deeper it teaches a good deal more than we think. First, this tutorial, and the app created with it gives students a solid overview of how App Inventor 2 works, which will serve them well later on. Second, it shows all of the computing practices outlined above. Thirdly, it opens up conversations about algorithms, program development, and modularity. You can also add important general coding good practices such as annotation. Finally, this program allows you to ease students in to how you will be assessing, and grading them.

Grading & Assessment

If you’ve already had a look at my Ev3 Robotics Lesson 2 post you are familiar with my method for assessing a computer program. Assuming you haven’t gotten to that post yet, I assess computer programs by breaking them down into three measurable components. They are Accuracy, Efficiency, and Annotation. Accuracy refers to whether the program functions predictably. Efficiency deals with how many commands are used, and Annotation refers to what manner of commentary a program contains. In the case of this first lesson, as we will be creating the program in class by following a tutorial so using this method gets a bit tricky.

For most of my classes I use a class participation rubric, which would apply here. When students have advanced sufficiently for assessment I create a separate rubric for the assessment. For an example of what that may look like, click the link in the first sentence of this section.

Part 1 Conclusion

This first article is about getting set up to teach using  variety of tools. Though the first lesson is discussed here, it is not done in detail.  I will do a series of reflection posts about how the lesson is going, and discuss further lessons in greater detail. If you found this article helpful, please share it wherever you think it will do the most good. Stay tuned for more in this series.