Archive | February 2015

Algorithms – Teaching coding structures to 6th grade

In my Scratch / CS unit for my 6th graders, I broke the unit up into three mini-projects and then one final project. I really wanted to home in on the students’ understanding of three big structures of algorithms: variables, if/then decisions, and loops. With these basic building blocks, you can create an algorithm that does almost anything you want.

VARIABLES

The prompt for variables was:

“Write a Scratch program that asks you for the cost of an item, and then tells you the total cost with tax. Tax in the city of Fort Collins is 7.4%. To get an advanced grade, ask for the cost of two items, and say the total cost of both items with tax.”

We did some mini-lessons on variables and how to calculate tax embedded in the work time. These are some of the programs kids submitted.

Tax Hip Hop Dancer

Tax Soccer Cat

IF/THEN

The second mini-project was a project on if/then decisions. I’ll post a full lesson plan later but this was the prompt for the project.

“Create a program that asks at least 2 questions and uses if/then or if/then/else blocks to find the perfect gift for a friend. Your project submission should also include a flowchart.”

Example student flowchart, created on lucidchart.com

Example student flowchart, created on lucidchart.com

Christmas Pony Program

LOOPS

The third project seemed to be the most fun for kids. The prompt was:

“Create a repetitive geometric design using the pen tools and loops. Your program must make at least three unique designs.”

I gave the students some example programs and a rubric of:
– Programs with loops, very similar to the examples = 2
– Programs with loops, significantly modified from examples = 3
– Programs with loops that are unique, not modifications = 4

Here are some of their examples.

Flower and Other Designs

So Many Stars

The students had a lot of fun with the mini-projects. Their final project is to make an original creation using all three programming structures – variables, if/then, and loops. I added a writing component as well, and allowed them to work with a partner. I used this time to also weave in lessons on ethical use of online resources. So far I’m really pleased with how it’s coming out, and I’ll post more about this final project later!

Web Design: What do to when a unit doesn’t go as planned.

What do you do when a whole unit seems to bomb?

This is the question I’m asking myself at the end of a Web Design unit in my computer science class for 7th-8th graders. Our district has a Web Design curriculum, but I wanted to design the unit myself in a UbD sort of way. Start with your objectives and essential learnings, design lessons and activities and assessments from there.

But since the whole thing is pretty new to me, I couldn’t do much better than vague statements as my objectives. I went into this unit understanding at some level that I was going to try and refine the objectives as I went through it.

I decided I wanted students to: describe what the internet is and how it works, including how data is transmitted and how web pages and other files are stored. To understand the structure of HTML and CSS and how they are used to create web pages. To understand the process of creating, uploading, and hosting a web page. I thought that would be plenty for now, and if they took Web Design later in high school or college, they could get into scripting and dynamic web pages, and multimedia. I had a scope for my unit. How the internet works, coding in HTML and CSS, and hosting.

So I curated some lessons on Khan Academy, put a ton of effort into finding articles for kids to read and analyze, curated some YouTube videos that we could discuss. I made graphic organizers. I filled in some gaps with Screencasts that I made.

I assigned two mini-projects leading up to a final project. Students had to make a web site with elements of HTML, then include CSS, and finally include hyperlinks, images, and a second page – so it’s more of a web site than a web page.

I had trouble with technology, when FTP wouldn’t work from behind our district firewall, and our web editing tools worked on some student computers but not others. I found that students collaborated very little on the creation tasks, hiding behind their keyboards and raising their hands for help and waiting for a half hour or more helplessly instead of working together. Some kids who had a little background in web design were bored and approached me about dropping out of the class.  Others who had absolutely no background have not finished a basic webpage and I don’t know how to get them caught up. I have several students with reading and writing difficulties. I don’t know how to scaffold the lessons better for them at this point. I am at a loss for how to differentiate from here or how to summarize and tie everything together.

I also have a sense that many students have been mindlessly following the video lessons, creating code without understanding the structure behind it or what it means.

I’m going to bring this to a close and move on. But I need to explore some of these questions further before I come back to web design.

1. What should middle-schoolers understand about web design and the internet?  Am I even on the right track with these skills? Do kids need to understand HTML or would it prepare them for the real world better if we used website builders? I don’t understand what my role is in this unit.

2. Most of the resources I find for teaching are not very kid-friendly. I wish I had access to better materials for teaching kids about the internet. I suppose I have some time to look now.

3. What do I do to make web design more collaborative? I know students learn best by creating, but they need to learn to trust each other and seek help from each other – and to offer help when they can. I really want to improve this. How?

A contributing factor to all of this is that I’m really, really crunched for time. I would have been able to do a better job if I had been able to look at their work in progress and give them better feedback. Actually do formative assessment. Grade some of their work on time. I teach three full-block classes and one half-block class, and I have over 200 students. I spend every spare minute planning lessons and feeding and caring for my own family… so I just have to be able to put a lesson together and deliver it to students and hope it sticks, and then when it doesn’t and I have no backup plan, it feels lousy.

I would love tips or positive affirmations. Looking for some Stuart Smalley here. And maybe passing along some camaraderie for any of you that have also had a whole unit that displeased you and you just found yourself wanting it to end.

 

Teaching Algorithmic Thinking: Take 2

Last semester, I taught new (to me) classes in sixth grade technology, during which time I set a goal of teaching the sixth-graders how to think algorithmically and how to program in Scratch.

I gave them a pre-test, and I taught the unit by weaving lessons about flowcharts and algorithms into a project during which they created a little video game. The video game was scripted and every kid created pretty much the same game. The warm-up lessons required some group discussion and problem-solving, mostly about troubleshooting or analyzing an algorithm I had written.

Then I gave the kids a post-test. I blogged about the pre-test and the rubric by which I scored it in an earlier post.

I decided to really change how I’m teaching the unit this semester for two reasons:

1) The post-test scores weren’t amazing. They were OK, but I expected more.

Pre-test to Post-test gains in algorithmic thinking. Not bad, but not really proficient either.

Pre-test to Post-test gains in algorithmic thinking. Not bad, but not really proficient either.

2) I solicited student feedback. While some of them enjoyed making the game I created and found it fun, an equal number said they would have enjoyed being more creative with a final project. I want to give that to my students, and I think they’ll learn more and own the learning better if they get a chance to be more creative with it, so I’m going to change.

 

This semester, I’m teaching the class with three mini-projects on three concepts related to computer science: variables, conditionals (if/then decisions), and loops. After the three mini-projects, the students will be able to make their own creative final project that uses all three.

The first mini-project was on variables. Sixth-grade is when many students really learn about variables in any depth in math class. They explore percents, fractions, and equations and expressions. I created a few lessons and a mini-project that would tie in to what they did in math class. Here’s the lesson!

VARIABLES IN SCRATCH  lessons and mini-project

I’ll know more when I administer my post-test, but I was pleased with how this lesson went. I noticed students working with variables comfortably once they had processed the math operations that needed to be done.

In the coming days, I’ll also write about the next two mini-lessons – if/then blocks and loops – and a final project for the kids. I’m hopeful that I’ll see the students become more comfortable with how computers work with information and use algorithms to solve problems.