Wednesday, March 04, 2015

Can I Give You A Hint?

Last month I attended a workshop on CodeHunt at Microsoft Research. A talk there by Daniel Perelman on Hint generation in Code Hunt (you can watch a video of his talk here) really sparked some thinking on my part about how I give hints to students. Since then I have seen some other research on automatic generation of hints including an interesting paper by some researchers at Stanford (PDF). Having automatic hint generation is an important problem for online education and MOOCs. It’s not an easy problem though. In fact at times I struggle with giving the right hints to students in live interactions.

Some times there is a fine line between pointing a student in the right direction and telling them how to solve the problem. Sometimes a simple “are you sure you want to do that inside the loop?” is enough. Other times a student needs someone to go over the statement of the problem and help them break it down into pieces. If a student is close to a solution then there may be little room of a hint. At that point it can become a judgment call between asking the student to keep working on their own and giving them the information that puts them over the top.

Different students need different hints. Or perhaps I should say that some students need more help than others. Working with students in person means that a teacher can figure out what concepts students are struggling with. A student that understands loops can be told “have you thought about a loop here? while a student who is struggling with how to set up a loop needs a refresher on the lecture they slept though didn’t quite understand the first time. That more involved help, which is more than just a hint, may be a harder problem for software tutorial systems to handle than simple hints.

I’m pretty excited about the possibilities for software giving students hints. I think that this may allow teachers to spend more (and higher quality) time with students who need more than a hint.

Tuesday, March 03, 2015

It’s the Software Stupid

Computers are magic. Well to a few people they are. To others they are annoying and useless pieces of hardware. At least until you add software. I was reading Audrey Watters’ post on “How Steve Jobs Brought the Apple II to the Classroom” recently. It is a prime example of someone finding the magic in the box and assuming that, if not everyone, a lot of others would also discover the magic. This idea never seems to go away and yet it seldom works out that way.laptops For everyone who teaches themselves there are a great many others who need a teacher.

For some people, I confess I am one of them, discovering that a computer can be programmed and used to do interesting things is enough to get one hooked. This doesn’t seem to be universally the case though. The great majority of people need more out of the software to find the computer useful let alone educational.

This is not limited to computers either. A few years ago it seemed like everyone was buying Flipcams. Workshops and presentations abounded at ed tech conferences on the amazing things that teachers were doing with them. The reality turned out to be boxes and boxes full of unused Flipcams in schools all over the place. It turns out that just giving people the cameras did not make magic happen.

Time after time some new technology is touted as being a sort of silver bullet. Apple computers, digital cameras, Flipcams, iPod and iPads, Chromebooks and tablets of all sorts. Without a doubt some teachers are able to do awesome things with these devices and their students. But they seem to be the exceptions. Some teachers are naturally creative and combine that with a fearlessness that let’s them try out of the box projects.  Other of us need a bit more direction. Some education and sharing of ideas of what works for others is needed to get things started. Teachers also need administrative support even if that support is in the form of benign neglect. :-)

Too often I get the question “we just bought [latest gee-whiz technology] can you tell me how to use it to teach [subject of the day.]” If you have hardware and need to ask about software you have, in my opinion, don’t things backwards. Find the software (be that computer software or curriculum materials) and then find the hardware to run it on.

We shouldn’t start with a solution and go looking for problems to solve with it.

Monday, March 02, 2015

Interesting Links 2 March 2015

Back in school today. It was nice to have a break but I am looking forward to time with my students today. I got no school work done at all during the week off. I’m going to be paying for that this week though. Well that is life. I did pick up a mini display port to VGA connector from my Surface Pro 3. Now using a second monitor. Productivity will improve. Yeah! And now a few interesting links that I managed to capture over the last week. Some fun ones I think.

Most vulnerable operating systems and applications in 2014 It will come as a surprise to some that Windows is NOT in the worst three. The worst two are from Apple. May spark some interesting conversations.

Level up your programming skills with this FREE introduction to #Python! Get started: http://spr.ly/60170xwS I may try this one out. I need to learn some Python.

Embedded image permalink

Great article about why having the right people develop key libraries for computing. Proving that Android’s, Java’s and Python’s sorting algorithm is broken (and showing how to fix it)

I found one link top interesting quotes about programming and remembered I had seen some other collections in the past. I thought I would list some of the best lists here.

Thursday, February 26, 2015

Lessons in Time

The other day I was microwaving some food to heat it up. Ten seconds seemed like forever. I was actually able to do several other things while I waited. The microwave has changed my perception of time in some ways. nanoseconds As I thought about that I remembered the first time I heard Grace Hopper speak.

One of her favorite stories was about explaining to an admiral why there was a delay in satellite transmission. She used a wire “nanosecond” to demonstrate. Light travels about 11 3/4 inches in a nanosecond. She would show the wire and explain that there were a lot of nanoseconds between the ground and the satellite.

Later in her career Admiral Hopper used to show off packets of picoseconds. She got the little packets in the cafeteria where they were already labeled with the letter P.

I am I am sure many others use the nanosecond story to help explain to our students why smaller computers are faster computers.  I’m thinking about adding the microwave story to my toolkit as well. Some times that we think are very fast in the abstract are actually very slow in reality. Once you realize that 10 seconds is not instantaneous and that you can actually accomplish other things during that time you realize that parallel operations can make better use of the time available. Ten seconds to you and I can be a long time. A nanosecond is a long time to a computer. Even, these days, a picosecond is a long time for a computer. We’ll see how that goes over.

Tuesday, February 24, 2015

Simulations Are More Fun

One of my favorite computer science teachers, Judy Hromcik from Texas, posted a link to a video called “The last banana: A thought experiment in probability.” The video outlines a particular statistical problem.

“Imagine a game played with two players and two dice: if the biggest number rolled is one, two, three, or four, player 1 wins. If the biggest number rolled is five or six, player 2 wins. Who has the best probability of winning the game?”

The video outlines several ways to determine who has the best chance of winning. There are several ways including logic diagrams which are interesting and perhaps even fun. For me, programming geek that I am, creating a Monte Carlo simulations seems like the most fun way. Judy is thinking about using this with her students and I’m thinking about using it with mine as well.

I’m looking forward to discussions with students about the results. image The first couple of times I ran the simulation I did so with small iterations (36 simulated rolls) and the results were not always what I expected. Player One won more than Player Two in several cases. This is well within the realm of possibility of course. Probability is not certainty. Larger numbers of iterations came a lot closer to the theoretical ratio of winners. This is also expected. I think the next improvement to the program is to show the percentages for each player as well as the raw numbers BTW. Theoretically Player Two should win 56% of the time.

I think simulations are fun but I also wonder if they might help students picture the results better than looking at a strictly mathematical look at the probabilities.

Back in college I took a number of courses in statistics (I was originally a sociology major) and I got tired of doing the arithmetic. The math was fun but doing the calculations was tedious. So I did the only logical thing – I wrote programs to do the arithmetic. Do this really helped me focus on the math, the algorithms, and save time doing the arithmetic. So some people the math is enough. Some of us like to see things in a different way.

Anyone out there teach statistics? Do you have students run (or better yet program) simulations as part of the course? Does it work for your students?

Monday, February 23, 2015

Interesting Links 23 February 2015

It's February break for my school. I’m trying to take it easy this week. And catching up with grading of course. I suspect a lot of teachers use so-called vacation time to catch up on school work like grading and planning. I also hope to play with some tools I haven't had time for. With any luck at all I’ll get my new 3-d printer working. And maybe a Kinect project I want to start. We’ll see!  IF you’re looking for interesting things I have a few good links below.

I love the suggestions that come fromCS Teaching Tips @CSTeachingTips For example “Give students a caesar cipher to teach how characters can be treated as numbers and to reinforce string manipulation. http://ow.ly/IiLhJ  “ I love Caesar cipher projects! Also this one “Give students a large data file to sort when teaching sorting algorithms. http://ow.ly/IiJZ7 “ Sorting small data sets is boring, feels to easy and doesn’t give one a real chance to see performance differences.

Computer Science Teacher: 2015 CSTA annual conference – Registration is Open. Will I see you there?

Fun images to help visualize how computers have changed. Your students may find these interesting.

Algorithms – Teaching coding structures to 6th grade.

New collaboration features in TouchDevelop   This opens some interesting possibilities. I’m wondering about how several students modifying the same program at the same time will work out in class.

Friday, February 20, 2015

Today’s BASIC Is Not Your Father’s BASIC

A post at Doug Peterson’s blog (A Different Time) sent me to a site that has a collection of old BASIC programs. And by old I mean the 1970s. I remember many of these programs as I was starting my programming career back then. One could take these programs and type them into their computer and run them. It was fun and we learned a lot. But I’ll tell you the language has changed a lot since then.

image

For example back then a comment was a REM statement. Short for REMARK of course. Today most version of Basic use a single quote to flag a comment. Today variable names can be of any length while back then one was limited to a single letter followed by a number or numbers. Variables were declared using a Dim statement as they are today but the type was specific by a $ for string, a % for integers and floating point numbers had neither of those special symbols. One can’t use them in variable names today of course.

Originally BASIC did not have subroutines as we know them today. We had the GOSUB statement which branched code to a line number (we don’t use line numbers at all any more) and a return statement brought the flow of execution back to the line after the GOSUB. There was no parameter passing and variables were basically global. There were functions of a sort. Those were defined in a single line like this:

180 DEF FNM(X)=X-8*INT((X-1)/8)

The functions were all named FN followed by some letter. Return values were loosely typed. It sure was easy to use though.

I’m looking though these old projects for ideas for updated versions to use with my current students. Some I will use with Visual Basic and some with C#. And just maybe some with TouchDevelep. Some things never get old.

Today’s versions of BASIC are both much more powerful and much more complicated than those early versions were. Stronger types, more powerful functions and subroutines,  lots more flexibility in identifier names and real error handling.  Small Basic is an attempt, and a good one, at returning in part to those simpler days.  It still has more power and complexity but many things are much easier. Visual Basic is a very powerful professional level language and development environment. It too makes some things much easier than they were “back in the day” but in other ways the complexity can be intimidating and even frustrating for beginner.  It seems to work well with my high school freshmen though as long as I stick to the basics.

I wonder how many people judge the idea of BASIC based on thirty (or forty) year old versions of the language? Today’s versions, especially Visual Basic are every bit as powerful and modern as Java or many other popular languages. And still easier to learn. I still like them.