Monday, November 25, 2013

A New Way of Seeing

I wanted to follow up on how computer science works together with different fields (in this case, earth science) to reshape our understanding of the world through the use of innovative technology that in turn leads to new ways of seeing, thinking, decision-making, and ultimately, acting.

We started off with Greg Asner's TED talk about how technology has changed how we can view the earth.

I then asked the students to reflect on this talk by identifying the science and engineering practices at work.

"Computer science can change our view of nature.  It found out that male lions hunt at night in deep forest instead of what we thought that they sit around for food.  One main thing is that we have lot of rainforest species problems, fire, drought, goldmining and deforestation.  But we have hope.  We can help this by obtaining, evaluating, and communicating information that is important to park managers so they can make some important decisions like where to use fire.  These are some things we can use computers for - to save nature."

"My reflection is that he uses practice 3:  planning and carrying out investigations.  He was carrying out investigations when he found out that male lions are not the lazy ones.  In fact, the male lions do a lot more hunting than female lions.  People thought that the female lions do all the work because they hunt in the day for prey.  He also uses practice 3 when he finds out all about new things and then tells the world about it.  For example, he found out that there can't be too many elephants because elephants push many trees down." 

"I think Greg used science practice number 4 - analyzing and interpreting data.  He used this when he picked up data with his satellite.  The way he interpreted that data is by showing different colors as red is a lot of carbon and blue is the least.  Also, he showed every tree in the savanna in Africa and after showing it, again he analyzed which trees were being pushed down by elephants."

"Technology can change many things.  We have the CAO that can do many things.  One question is "how much carbonstock are we losing?"  The CAO allows us to resee what the canopy animals see.  It also allows us to see where the carbon is.  Goldminers are affecting carbon too.  All of this is analyzing and interpreting data."

Rainbow Loom Bracelets and....coding???

Walk down the hall of any elementary school and you will see students decked out in "Rainbow Loom" bracelets - basically mini-rubber bands woven together on a plastic loom.  As you can see from the picture above, they come out looking like a rainbow and kids are making them into bracelets, necklaces, name it.  How are these like coding?

"Coding:making a rainbow loom bracelet.  It is like that because in rainbow loom, if you put the rubber band in the wrong way, the bracelet will fall apart.  It's the same with coding.  Also, in programming you can make the computer do anything.  In rainbow loom, you can make any color bracelet.  In programming, you can make patterns and in rainbow loom you can make patterns.  That is how they are alike."

Here's one more coding analogy based on her experience with Blockly and Scratch:

"Coding is like reading the rules for a game.  Missing a rule in the game might ruin the entire game, just like missing a block will ruin the maze.  Also, you have to know which rules go first, just like you have to put the blocks in order.  You should have a pretty good idea of how the game will go almost like you should know how and where the sprite will go."

Wednesday, November 20, 2013

Let's Talk Analogies

Analogies are a great way to check for understanding of concepts.  We've been looking closely at all kinds of analogies in English Language Arts, so I thought to myself, "What a great way to see how deeply my students understand and view coding."  I wanted to see if they could apply coding principles outside of coding (decontextualize) to see how well they really "get" the thinking and process of coding itself.  In a nutshell, students were to come up with an analogy for coding along with three supporting examples.

"Coding: A baby learning to take steps because when a baby learns to walk, it starts slow and small.  If it goes too fast or big, it will fall down.  The same with coding - if you start going fast, your program will fall apart because you're going too fast.  Also, if you take big steps, you will miss a step and starting big can you mess up.  Once a baby falls down and with programming, once your program falls, you can get up and try again."

"Coding:Building.  This is because with coding, if you are not exact, it will "wonkify."  With building, you need to be exact or the building will fall.  Another way is that if you don't like your Scratch program, you can delete it and try again.  With building, you can knock down your building.  Lastly, you can remix someone else's code.  In building, you can sort of copy someone else's, but make changes, and call it your own.  Though quite different, building and coding are very alike."

"Coding is like doing crossword puzzles because one word in the wrong place affects the word that is going down or across that word.  That relates to coding because if you do Scratch and put the wrong block, when you want to do something else, it turns into a disaster.  When you do a crossword puzzle, at first it might be just experimenting and trying to fit the words in the squares.  Same with coding.  You have to experiment if the cat moves the way you want or not.  At first, the crossword puzzle might look different or weird, but it turns out cool.  With coding, it might look weird at first, but when it is finished, it is awesome!"

Tuesday, November 19, 2013

Computer Science and NGSS Practices

We had a class discussion today about computer science and investigated answers to questions like:

What is computer science?
Why is computer science important?
What do computer scientists do?
How do computer scientists help us?
How do they change the world around us?
What science and engineering practices (NGSS) do computer scientists use in their job?

With the Next Generation Science Standards (NGSS) recently released, we have been connecting the science and engineering practices to what we do in class.
1.  Asking questions and defining problems.
2.  Developing and using models.
3.  Planning and carrying out investigations.
4.  Analyzing and interpreting data.
5.  Using mathematics and computational thinking.
6.  Constructing explanations and designing solutions.
7.  Engaging in argument from evidence.
8.  Obtaining, evaluating, and communicating information.

Here are some responses from my third and fourth graders:

"I learned about coding and computer scientists.  Some types of scientists make things automatic like stoplights.  Some people think that since computers are tools, it's OK to be on it, but you have to use that tool wisely.  Computer scientists have to solve problems and get data to do their job."

"People (computer scientists) use practice number 6 - constructing explanations and designing solutions.  We've used it when programming because you might make mistakes so you would have to design solutions to make something work.  (They) also use this practice when they automate something."

"Today we learned about computer science and computer scientists.  People that program have to make a simulation.  People can help the world with computer programming and can help schools too.  For example, they made a website that grades things automatically."

"I learned that computer scientists program computers and so do we.  When you program a computer you use data.  You can program a computer to do things automatically like you can program a traffic light to time how long each light stays green.  Computer science is all around our environment.  It is in traffic lights, phones, computers, schools, buildings, and almost anywhere."

"What I learned about computer science is that people automate many things that used to done by hand.  Almost every job needs a computer scientist.  Practice number 6, which is "Constructing explanations and designing solutions," many computer scientists design things as a solution to people's questions. "

"Today I learned that computer scientists make life a lot easier.  For example, they use data to program things.  They also use science practice number 2, using models.  This is called simulation.  Sometimes we use ourselves as the models.  For instance, in class we do robotics.  We are stuck on a challenge to make the robot go in a square so sometimes, we pretend to be the robot."

"I learned that computer scientists are used in every profession.  They make some things automated like lights.  They program their products with data.  They also help with our everyday environment such as a car.  Computer scientists and computer science is very important for everyone."

"Today I learned about computer science and automation make life easier.  All of this is done by computer scientists that program things to do something.  Yet to do this, they must have a lot of data.  Data is information on certain things like amounts.  This whole things relates to practice #4 (analyzing and interpreting data) because without that, they couldn't get data to program automated things."

Monday, November 18, 2013

Scratch vs. Javascript

With some of the students fairly proficient with Scratch, I went to LearnStreet to set up a Javascript (JS) course with learn, practice, and project tutorials.  Here are some of their initial reactions to my questions:

How does Scratch compare with Javascript?  What are the similarities and differences?

"I think they're kind of the same because when you're doing Scratch, you're trying to program something to do something and JS, you're trying to program too.  But JS is different, because it gives you specific things to do.  JS is probably harder than Scratch because in Scratch, you can pretty much make it do anything you want and it's pretty easy because you're just dragging blocks, but in JS, you need to spell right and do everything exact.  With both of them, you have to think about, 'what would happen if...' but in JS you have to think that more strictly."

"For example, on Scratch, you can just drag a plus block, while with Java, you have to remember to type in 5 +5.  Also, they're different because on JS, you can do more things like you can do changing variables without having to tons of lines of code.  In Scratch, you just drag a block and another block and keep dragging until you have full code.  In JS, you have to type in your commands, but I think you can do much more in some commands like if you were trying to change a variable to two things that were joined, you can use one command while on Scratch, you need to use two blocks and two strings."

I am really interested in finding out whether or not they notice that a lot of the computational thinking is still there, no matter what the 'language' of coding is.  Algorithms, loops, conditionals, variables.  Breaking down problems.  Solving them.  On this first day of learning JS, my students seem to notice the differences more than the similarities.  I am keen to see what happens as they become more fluent in JS.

Moving on with Debug-its

After solving the debugging challenges available on Scratch, we were ready for our next challenge.  This time, my students were now 'Scratch' programmers receiving a 'job' assignment in the form of a project.  Instead of solving others' debug-its, they were now going to create their own debug-challenges based on a set of criteria and constraints.

"I feel that when you're given constraints, it kind of makes your mind think better because it means you can't just make it any kind of debug-it, but a specific type of debug-it.  They're harder when you have constraints because you have to think of a way that you'd be able to make it do that.  For example, Mrs.Mak gave me an assignment to create a 'list' on Scratch and each item disappearing when the cat did the exercise.  And there were lots of things that I could have done, but it wouldn't have exactly met the constraints.  So I had to get every last block correct to meet the constraints."

"When you're making debug-its with constraints, it's different from just fixing someone else's because you have to make a program that works, then remove something that makes it work, then after that, you have a program that almost works, but something small that keeps it from working.  Making it, removing something that is important, but really little, and then finish.  What I do is just look at a part and I think it's like a stack of bricks.  If I take one out, then it falls.  Then I run the program to make sure that it's a real debug-it...that there is something that keeps it from working."

"If I make a debug-it with my own ideas, then I don't have to think about any constraints...How about I just make ice-cream?  But if I have constraints, then I have to figure out how to make it using only the things she gives me.  It's harder if you're assigned one because you have to do one thing.  You can't just have an idea that you know how to do.  But if you're assigned one, you have to do the idea you're assigned.  And if you don't know how to do it, you have to figure it out."

Here is our class debugging studio on Scratch Ed.  It's called Mak's Debuggers, but I just got a proposal from a student to rename it "Mak's Exterminators."

Saturday, November 16, 2013

Endless Summer

This past summer, I had the privilege of being selected to be the instructor at Arizona State University's School of Engineering first ever robotics program outreach for an all-girls group.  Fifty middle school girls from all over the greater Phoenix area gathered at the engineering student center for a week filled with robotics programming and challenges using NXT Mindstorms, visits and talks with various schools of engineering, and mentoring by engineering undergrads and grad students.  It was no doubt a life-changing and empowering experience for each and every girl there.  Most had never touched a robot before let alone program one.  By the end of five days, all experienced the success and were inspired to explore future options in science, engineering, and computer science.  Mission accomplished!

Marble Run

Comparative Neuro-anatomy


Maze Challenge

Friday, November 15, 2013

Coding, coding, 1,2,3

I always like to have my students watch the video below from and reflect on its meaning and significance as applied to their exposure, practice experience with coding.  What I have shared here are some musings from 8 year olds...

"I just started coding and it is like a new world! It is amazing because you get to almost go into someone else's brain and teach them based on how they think.
I learned that computers are actually pretty dumb but the people who program them can make them do almost anything! Just start small and if you get into it, grow big, big and bigger. It really involves skill though, it's not just some game that you get addicted to, it's almost a student and you are a teacher. It even helped me think of how I can improve when I learn because the computer's mistakes seem hilariously dumb but that is only because I am smarter. I sometimes make mistakes like that and now I know that if you learn how someone else thinks, you can show them almost exactly how you think. "

"I feel that coding is great because it's like learning a new language.It is fun because you get to communicate with the computer and tell it what to do like if I put a strong tag and type something inside the tags it will make it bold.Sometimes,I personally think it does get a little frusterating when you don't understand the instructions that tell you what to do because one time I misunderstood the directions and I didn't put title tags.But overall, I think coding is a great thing to do and learn."

"I think coding is like learning a weird language and you have to remember everything. .. Coding is really hard for me and I'm stuck on the first level. I've kind of got the hang of it, but it's really hard for me to remember everything. It looks really advanced and is as hard as learning Hindi last year. "

Friday, November 8, 2013

Computational, Model Thinking and Computer Coding

Paper presented remotely to Slovakia at the International Conference on Emerging E-learning sharing about our district's initiative - "Coding is Common to the Core"

Robotics, math, and programming

Started the class on Lego Mindstorms this week.  Their first challenge was to program the bot to move in a straight line from point A to point B, marked by tape.  I asked them lots of questions about how they are going to know how to program the bot, how far to make the bot go and how they would program distance to be traveled...

Before you knew it, they took out rulers to measure the total length between point A and point B.  Once they had that figured out, they had to think about how to translate that into the program.  They had the options of:  time in seconds (which they were tempted to choose), rotations, degrees...

Here's what happened 'in their words'...

"So the boys wanted to choose 'seconds.'  I chose 'rotations' because you can't always rely on 'seconds.'  So when you're using rotations, you would measure how much one rotation is and then measure how much it is in inches or centimeters.  When we did that, it was easy to mix them up and we did.  The robot traveled about a half of the length of the course and then it just stopped.  We realized that we measured the circumference of the tire in centimeters, but then measured the length of the course in inches, so when we programmed, it went only halfway.  When we measured the circumference of the tire in inches, we got it go exactly the amount it needed to."

Square Challenge

We are also working with NXT Mindstorms.  Students are learning by starting with basic challenges. The first one was to have the robot travel in a straight line for a certain distance.  Now they are working on having the robot travel in a square...

"I think robotics is fun and interesting because sometimes you need to guess and check and other times you need to figure it out.  You need to really make sure everything would be perfect because if you put one piece of program that doesn't work, you could make the whole thing not work.  For example, if you made it turn too far by accident, you will make it go in a triangle shape it would have been successful if we were trying to get it to make a triangle, but we weren't."

"I think robotics is fun and challenging because it's not like you just go to the computer and say, "OK robot, you have to move in a square."  You really have to plan it out.  One challenge we are facing with the square challenge is we are able to make it go in a straight line, but how are we going to make it go in a square?  We know we're close, but we wonder how we can change our program to make it go along the edge of the carpet rather than onto the carpet and knocking over water bottles."

"I think it's fun and interesting because it's not something you do for just one day, but it takes a while and a lot of thinking.  Sometimes you don't get it right the first time and you try it again, and it's still not right.  You have to be very specific.  You actually have to program it.  You have to actually think and divide to get the certain amount of rotations."

"Robotics is not only about training a robot.  It really trains your thinking, helps you learn math, science and using technology.  Sooner or later, who knows? You may be controlling one classroom-size together.  Working together, with a friend, you can overcome any challenge."

"I have an idea how we fix it - if it's going in a triangle, we just add a straight line and a turn to make it go in a square."

"We used 'human robots' to plan it out.  What we mean is we used 'us' by moving around to see about how many rotations it would be and to see what direction we should program the turn.  Our feet are not the size of the wheel, so it's approximate, but we can figure out the right amount by testing. One plan we have is to make the robot go one rotation and then measure it and then change it to the number of rotations we need to make it go in a square."

"We can plan and map it on post-its and follow clues and steps that we found out earlier to figure out the 'question mark.'  For example, we need to figure out how many inches is one rotation to see how many inches the robot needs to go."