Middle School Computing with Robots: 2010
Section One: 4 students
We ran through Ashley Gavin's first lesson plan. The class is about half the size of hers so it went very quickly. To remedy this we did more discussion topics at the end and also talked about other things the students might like to study in the course. I brought up Grace Hopper and the story of the first computer bug and it was determined that the students would like to learn about successful women in the field of computing. I thought this was a great idea and so I will incorporate it into the rest of the classes. At the beginning of the class I gave a short questionnaire to the students so that I could learn more about the technologies they use on a daily basis (see attached file).
In answering the discussion questions I was delighted that some of the students talked about things they have already seen or experienced. Also, two of the students shared that their favorite subjects in school are the sciences and that they are really excited for the course.
The class went very quickly because of the small number of students. A few issues with the robots.
Section Two: 10 students
Modified Ashley Gavin's first lesson plan for the new location (I was not able to transport the maze to the middle school). Also used my Grace Hopper Worksheet even though the class has only one girl (it will be interesting to see how the boys react to learning about women in computing).
One student already knows python and many of the boys in the class were in the robots club offered at the school last year. When we talked through the discussion questions they brought up some of their own examples of robots and proceeded to look videos up online to share with the class. They seem really excited to learn more about the programming that goes on behind robotics.
Some issues with robot connections. I need to bring more robots to the next class which could be challenging as transportation is an issue. There are different levels of experience in this class (while in the first section all the students are on the same beginning level) and this may prove difficult to handle.
Today we used the second lesson plan. This lesson did not require any changes. I also made up an extra lesson to talk about Megan Smith, this week's woman in computing (see attached file).
The lesson plan went great. They had a lot of fun learning to program their robots to draw shapes (One student even produced the most perfect square I've ever seen drawn by a scribbler robot). I really enjoyed our discussion at the end of class; honestly I think it was my favorite part. We read the lesson about Megan Smith and then talked about her life and the awesome things she's done. I read a short bit from an article she wrote for the Grace Hopper Conference 2009. This prompted discussion about their parents jobs and how even when you're not computer science or in a directly related field you still have to use technology all the time. This conversation was really exciting for me.
In contrast to Ashley's findings: there were some cases when the students were not paying attention to their classmates successful program runs and then they wanted them to run the program again.
I'm also a TA for other undergraduates at BMC and the differences in the way the middle school-ers and the college students have approached the relatively equivalent course content has been interesting. The students in this class were much more willing to take their time in thinking about the problem before rushing to program. They really wanted to learn and did something (without my prompting them) that our professors are always telling us to do: THINK ABOUT THE PROBLEM ON PAPER BEFORE YOU TYPE ANYTHING.
The lesson plan went over great for the most part. Some of the students really enjoyed the programming people exercise while others seemed frustrated and didn't really understand or want to do the project. However when it came time to really program the students loved testing out different shapes. One student even asked me if it were possible to make the code shorter since it has repeating steps (I helped him learn for loops! It was exciting that he thought of this idea all on his own!).
Some of the students didn't listen very well to instructions, but mostly everything went good in the listening department. There were problems with a few of the computers and the connection to the robot. It's definitely a lot more chaotic in the room when you have twice as many students!
These students were more mixed when it came to thinking about the program ahead of time. Most thought it out before hand (they used more visual methods like mimicking the angles their robot would draw with their arms, etc) but some rushed straight into the programming.
I used Ashley's third lesson plan with a few changes. I removed some of the extra information on for loops and added some discussion topics. One new student joined the group.
They really enjoyed writing a robot dance and didn't procrastinate when picking the song for their dance (in fact they all used the very first song that they googled). The talk about Mary Lou Jepsen was even more of a hit. They loved experimenting with the One Laptop Per Child (OLPC). I'll probably try to incorporate them into a later lesson plan.
I would have liked to go more in depth about the programming syntax. I think it will be helpful to ask them to recap what we've learned at the beginning of every class. Standard issues with the robots: batteries, and problems connecting.
One discussion topic that I added to this lesson is the question of whether computer scientists are creative and whether computing is creative. The students had an interesting response to this question. All of them stated that they believe computing is creative (for reasons such as video game design, the dances we made today, having to come up with innovative technologies like those in health care, etc), but they were also clear in their belief that most people who have not been exposed to computing in a meaningful way would not agree that it is creative. One student gave a direct example. In one of her math classes her teacher decided to have the students use Basic. It backfired majorly with no student interest and cheating to complete the assignments.
Our last formal class. Next week is the field trip to the BMC labs!
They liked the lesson plan (I was worried the boys might think it wasn't "cool" enough for them) and most took to the project with relative ease.
There were a lot of distractions in the room that the school provided for me. It was a high traffic area and some students from outside the class were there, which caused some issues. Many of the students got sidetracked taking about other technology or even looking it up online. Although this was outside of the curriculum, it did cause some interesting discussion.
I used Ashley's fourth lesson plan and added my worksheet about Anita Borg.
The students really enjoyed the madlibs exercise and seemed to understand the concept of variables. Most of the students remembered the syntax from the previous week's classes.
Problems with the computers in the lab. The students were really rowdy today and didn't seem especially excited about the Braitenburg vehicles. Also when we talked about our Woman of the week, as a whole they were not interested and weren't listening, and only one student engaged me in conversation about her.
I used the fifth lesson plan and made a worksheet about Ada Lovelace.
The students really loved writing and running the universal maze program. They all remembered most of the syntax that we have been learning throughout the class and they were really excited to discuss our activities today. I mentioned the Programming Paradigms course I am taking where we are working on the Microsoft Surface and during are next class I'm going to show them the interface. They can't wait! They were begging me to show them this week but we ran out of time. They also liked hearing about Ada Lovelace.
Everything went really well today. We all had a lot of fun. Other than the normal issues (batteries etc) nothing was a problem.
The maze program writing section on the worksheet was entitle "Artificial Intelligence." This prompted a discussion about whether the students thought this was an example of artificial intelligence. They agreed that it was definitely not an example of intelligence in the strictest sense. They robot still didn't know which way was toward the goal and we had to tell it exactly what to do. It was really cool to hear them talk about what they think intelligence is.
I used Ashley's six lesson plan with no changes. I also used the attached worksheet about Judith Bishop and took the students into the lab to see and experience the Microsoft Surface.
Even though we had not had class for two weeks they still retained most of the syntax knowledge. They also readily understood the simple algorithms behind the assignment and used pen and paper to explore different ways of writing the code. They were really excited about the Microsoft surface and asked lots of questions about the class I am taking that it using it. From the beginning of class it was clear that the robot has limitations. The students were eager to discuss improvements that could be made to the scribbler in order to make the tasks it can do more efficient.
Just as Ashley said this lesson plan went over really well. I only had one disappointment. One student realized that they could put getLight("center") in a while loop instead of just using the if statement, however they choose not to implement it.
I used the sixth lesson plan but instead of doing the kinesthetic activity, I had them actually program the first activity.
They really enjoyed the activity and were excited when they found out what the activity was. I think they were really happy to see tangible results from the project. They all email the finished products to themselves and some even used their pictures from facebook. One student was absent last week so we went to see the surface again and that was a huge hit!
Everything went really well! But we all got so carried away with obamafying pictures that I forgot to give out the woman of the week handout.
I used the 8th lesson plan (which is mostly a make-your-own program day with some suggestions) and I remembered to give out the woman of the week handout for week 7.
They were really excited to start messing around with the obama prgrams we wrote last class. Most the the students choose to work with robot vision for the whole class period and had a really great time. One other student wrote a robot play based on one of her class assignments. At the end of class we discussed how this course in computer science has changed or not changed their perceptions of this field of study. All of the students agreed that it really really changed their minds about a lot of the stereotypes and content of computer science. They said they would love to take more computer science courses in the future.
There was some procrastinating. Some students didn't know what they wanted to work on, but overall it went well.
Sample Student Code
wait(3) for i in range(1): turnRight(2,4) forward(2,4) for i in range(1): turnLeft(2,4) forward(2,4) for i in range(3): forward(2,.5) backward(2,.5) wait(.5) forward(2,.5) backward(2,.5) wait(1) for i in range(2): forward(2,1) turnRight(2,1) turnLeft(2,1) forward(2,1) backward(2,1) forward(2,1) backward(2,1) turnRight(1,.2) forward(1,3) turnLeft(1,.2) forward(1,3)
forward(1,3) turnLeft(5,3) for i in range(3): turnRight(7,2) backward(5,4) wait(5) forward(7,4) turnRight(6,3) for i in range(4): turnLeft(10,5) wait(4) backward(2,5) turnRight(8,5) wait(3) forward(4,7) turnLeft(5,6) wait(10) forward(5,4) backward(1,8) turnLeft(4,2) wait(7) turnRight(5,7) for i in range(5): wait(2) backward(1,4) forward(10,5) wait(5) forward(8,2) backward(2,3) turnRight(2,5) turnLeft(8,4) backward(1,5)
while timeRemaining(240): if getObstacle("center") > 555: turnLeft(1,1) else: forward(2,1)
while timeRemaining(300): if getIR("left")==0 and getIR("right")==0: turnRight(0.8,0.3) backward(0.2,0.4) elif getIR("left")==0: turnRight(0.7,0.4) elif getIR("right")==0: turnLeft(0.5,0.7) else: forward(0.3,0.4) if getLight("center")<300: speak("Ha! I beat you, sucker!") stop()
while timeRemaining(120): if getIR("left")==0: turnRight(.5,1) if getIR("right")==0: turnLeft(.5,1) if getIR("left") and getIR("right")==0: backward(1,1) turnLeft else: forward(1,1) if getLight("center")<300: speak("Benvolio, Romio I have found Juliet! She is here with our enemy, her kinsman, Tiibalt! HOW NOW BROWN COW named Tiibalt!")
myPic = makePicture(pickAFile()) def Obama(myPic):
black = [0, 51, 76] red = [217, 26, 33] blue = [112, 150, 158] yellow = [252, 227, 116]
for pixel in getPixels(myPic): gray = getGray(pixel) if gray > 180: setRGB(pixel, yellow) elif gray > 120 and gray< 180: setRGB(pixel, blue) elif gray > 60 and gray< 120: setRGB(pixel, red) else: setRGB(pixel, black) show(myPic) savePicture(myPic,"Obama Me.jpg")
myPic = makePicture(pickAFile()) def obamify(myPic):
blue = (112, 150, 158) black = (0, 51, 76) red = (217, 26, 33) yellow = (252, 227, 166) for pixel in getPixels(myPic): gray = getGray(pixel) if gray >= 180: setRGB(pixel, yellow) elif gray>= 120 and gray <= 180: setRGB(pixel, blue) elif gray >= 60 and gray <= 120: setRGB(pixel, red) else: setRGB(pixel, black) show(myPic) savePicture(myPic,"jack donaghy.jpg")