Thursday, October 23, 2014

Instructions and Removing Ambiguity

Recently I found the following image on Facebook. I plan to use it with my students this semester as a starting off point for conversation.

spagetti

This is a perfect description of someone dealing with ambiguous instructions. Context and assumptions come into play as does words that mean different things to different people. To some people “put some spaghetti on the stove” implies a multi-step process that results in cooked spaghetti. Or failing that at least spaghetti that is cooking when the wife gets home. To someone not used to cooking the obvious request is the literal one shown in this picture.

This brings to mind the old programming joke about the need for a “do what I mean” instruction that many of us have wished for from time to time.

When we ask people to do things we have a certain level of expectation that ambiguity and missing steps will be handled by the person we are talking to. Things like shared experience, known training, and common vocabulary and idiom are a big help here. Computers don’t (yet?) have much of this. We have to be very clear about what we want them to do.

BTW one of my friends, I have some geeky friends, suggested on my Facebook posting “Depends on if those were primitive operations or if it was a method call with anticipated output of cooked spaghetti.” A good point which also suggests that the method call could be better named to more clearly indicate what was happening in the method. Smile

All in all I am hoping for an interesting classroom discussion around this image.

Tuesday, October 21, 2014

Picking Good Variable Names

Actually picking any sort of name is important in programming but we can focus on variable names for a bit. The CS Teaching Tips team tweets and posts a lot of great suggestions. Today they send out a tip about variable names.

Avoid using x and y as variable names to prevent students from confusing variable assignments with mathematical expressions.

CS Teaching Tips Logo

I’ve been working on my variable naming for demos and sample code this semester. The x and y confusion is part of it. It’s tough because I learned in an era where short, even one character, names were the rule not the exception. Memory was expensive and long identifiers took up room in memory. Plus there was a certain amount of laziness on many people’s part. Well at least on mine. None of this is true anymore. Well that part about needing to save room with short variable names is no longer true.

Loop control variables in FORTRAN were almost always I, J, K, L, M, and N back in the 1970s. Variable names that started in those letters were automatically integers and so this was easy. Old habits die hard and I still tend to use those variables for FOR loops. I’m trying to get away from that in class.

I find that using “index” as a loop control variable, especially when the loop is iterating through a string or an array, makes things a bit more clear to students. It also helps reinforce the idea that variable names should have meaning. It’s hard to tell students, “yes I am using x, y, and I but you should all use meaningful names.” and be taken seriously. Using meaningful variable names in demos may take a little bit of extra effort but in the long run I think everyone is better off when teachers model the practice they try to teach.

CS Teaching TipsThere are lots more teaching tips at http://csteachingtips.org/ and you can also see tips from there on the side bar of this blog if you read it in a web browser. Follow @CSTeachingTips on Twitter too!

Monday, October 20, 2014

Decision Trees–Possible Interesting Coding Project

I found this interesting flowchart for determining where one should eat Thanksgiving. It’s pretty complete which also means it’s complicated. I guess if you know the answers it is not too bad to follow. If you just want to see the paths it is complicated. As I was wondering though it I thought “I’d rather have a computer program ask me the questions and spit out an answer.” Naturally the next thought was that I should ask students to write such a program.

And maybe I will. Probably not this particular flowchart but if I can think of something more relevant to teens I may just do it. Anyone have any ideas?

thanksgiving_final-1

Interesting Links 19 October 2014

You know those school weeks with lots of interruptions, strange schedules and little normal routine? Yep, had one last week. I also managed to record a good number of Office Mixes on various programming topics. I’ll post a list of them as soon as I have a few more under my belt. One of my earlier Mixes is a finalist for a contest Microsoft is running. The winners are chosen by community voting, so if you are willing to help me get some computers for my school, please vote for my mix at https://mix.office.com/Gallery/Category/vote 

Now for a few links I collected last week. Lets start with a couple of good articles addressing the question of why CS should be in schools.

I backed Notable Women in Computing Card Deck on @Kickstarter I signed up to get a deck of cards and a matching poster showing all 52 cards with information about women in computing. It will go up on the wall in my computer lab when it comes in.

The Null Professor a post by Crista Lopes   via @cristalopes  in which she shares some thoughts on CS education prompted by Mark @guzdial's recent posts.

Creating Surveys using OneDrive is a post by Rob Miles about a tool I’ve also been using a good bit in my classes.

I ran across this Ultimate List of UK Education Blogs last week. A lot of education blogs there that will probably be useful for educators in the United Kingdom and else where.

Thursday, October 16, 2014

Help Me Win Surface Pro 3s for My School

OK so the good news is that I am one of 15 finalists to win 15 Surface Pro's for my favorite school. The winners are chosen by community voting, so please vote for my mix at https://mix.office.com/Gallery/Category/vote Mine is the one on Binary Numbers.
Each person can vote for one mix per day, now through October 30th. You have to sign in (only one vote per person per day) using a Facebook, Google, Microsoft or Office 360 organization account. You can vote once every 24 hours. Note that the sign in is at the top of the web page not the button under each entry.
Please vote and ask your friends to vote.Thank you for your support.

Wednesday, October 15, 2014

Idea vs Implementation–Using What We Learn

You’re at a great conference and you are hearing all sorts of great ideas. It’s exciting! You hear about tools and techniques that are working wonders in the presenter’s school or in the schools the researcher or vendor repeats stories from. You love it. It could make a world of difference in your class. And you get home and never use it. Has that ever happened to you? It has to me though I am embarrassed to admit it.

What happens to us? Lots of different things. Sometimes the tech is too expensive. Even when it is free perhaps we don’t have hardware capable of running it. Most likely though we start our planning for the year and it looks hard to find a place to use the tools. We may not have gotten a good idea of how the presenter uses it. It’s cool but what does it really teach? Perhaps we get push back from other teachers who are more resistant to change than we are. Or perhaps we just don’t have as much time as we’d like. Taking the idea/tool we heard in a conference and translating it into our own curriculum and style can be hard, at least in part, because we don’t know enough about who to teach with the tool. What does it teach? How well does it teach? When/where in the curriculum does it belong?

So much of what we hear at conferences is presented as how to use a tool with implementation in the curriculum left up to the teacher. Scott McLeod has a great post on Wasting opportunities at ed tech conferences that puts a lot of the blame (largely correctly) on the sessions presented at conferences. There are 78 comments there as I write this BTW. .

This problem isn’t limited to conferences though. How often do we teach tools to students where the focus is more about how to use the tool (this is how to format in Word, this is how you create a graph in Excel) without teaching them how to use the tool to solve problems or do useful things or learn other things?

One of the things we’re focused on in my school in our first course in the CS department is teaching with context. That is to say solving problems with the tools and learning more than the mechanics. We’re trying to make it more about the concepts and the ways you can learn things than about the tools themselves. I feel good about that but we still have a ways to go.

Two of the tools I learned about over the last year (Code Hunt and Office Mix) are relatively new. Teachers, especially including me, are still figuring out how to use them to teach better. I’m off to a slow start. I planned on creating a whole bunch of Office Mixes over the summer – I made two. I introduced Code Hunt late when I should probably have introduced it early. Currently I am working on a couple of Office Mixes that incorporate Code Hunt. I’m excited about seeing them in action but they’re not ready.

I bring this up in part because over the weekend I was thinking that I’d wished I’d submitted a proposal to the CSTA Conference to present on these tools. After all I think they are really cool. But then I read Scott’s post and realized that I am really not ready to present them. I don’t know yet how well they work with students or how I am going to fit them into my curriculum. Oh I have ideas and I have excitement. but how will they work in reality? That I don’t know yet.

While I hope (assume) they will be good and have some tentative plans I will not have real (or even good anecdotal) evidence until the spring. So while I might have a great talk for the summer it is not a sure thing. I may be missing an opportunity to present or have saved myself embarrassment. Fortunately I have a blog and I will be able to share what works and doesn’t work that way. Not the same perhaps but I think the important thing is that sharing goes on and that it is more about how to teach than how to use the tool for its own sake. That’s my goal anyway.

Related posts:

Monday, October 13, 2014

Interesting Links 13 October 2014

It was Spirit Week at my school last week. It’s always interesting what students wear when they have really wide latitude – they wear uniforms most days. I also tried out Code Hunt with my students. I blogged about that yesterday in case you missed it - Experiments with Code Hunt. Next I need to tell them about the Imagine Cup Code Hunt Challenge.

Mike Zamansky has another great post on Using easy assignments to introduce deep concepts.

How good is school IT? by Garth Flint   About the big problems schools have doing IT support on the cheap. I wonder how many people understand how under resourced school IT support is in most schools.

Please check out the 2014 We Are the Faces of Computing Contest Information I posted last week. And have your students enter!

GitHub has a free Student Developer Pack with some developer tools in it. I don’t know why Microsoft’s DreamSpark isn’t included? My tweets to Microsoft went unanswered and most of the people I would have asked about this two years ago have moved on to other roles or even companies. In any case Dreamspark is worth checking out independently.

Google CS Engagement Small Awards Program that may be of interest to my friends in higher ed teaching CS 1 or CS 2

Another contest. Microsoft wants to hear from students navigating the future of cybersecurity. College/University students only apparently.  Student Essay Contest: Cyberspace 2025

Embedded image permalink

Sunday, October 12, 2014

Experiments with Code Hunt

splash-logo-lowresI tried something new last week with my Honors Programming students. I feel like they need more practice problem solving and writing short bits of code so I sent them to Code Hunt and had them go at it. Their interest perked up a bit more when they found out I like to do those puzzles for fun. At least one student told me he was going to do more when he got home. Long term we’ll see how it goes.
I’m pretty sure at least one student found some  answers on the Internet though. Not ideal but as long as most of them try most of the puzzles on their own it could work. On the other hand creating my own puzzles to match the curriculum and for which they likely could not find answers on the Internet might be even better. And it looks like that can be done.
I found the Code Hunt Designer manual and will give trying to create my own levels this week. I also want to try out Code Hunt with Office Mix. There are a couple of samples (if statement lesson or this substring lesson) that look good.
I see a lot of “flipped classroom” possibilities here but I also see these tools are making it easer to make accommodations to different learning styles and paces. For me it is not about technology for the sake of technology but using technology to teach differently and better. We’ll see how things work.
Oh and Microsoft is running a Code Hunt based contest as part of this year’s Imagine Cup. I need to tell my students about this. Read more at the Imagine Cup Code Hunt page.
  • WHO CAN COMPETE? Students 16 and older worldwide
  • WHAT'S THE TEAM SIZE? Individual Challenge
  • WHEN? Challenge #2 Begins October 18th
  • WHAT CAN YOU WIN? $1,000 for first place
I have a couple of Office Mixes that use Code Hunt now.