Wednesday, January 09, 2019

Everything Old Is New Again

I try not to throw code away. I have punch cards in my attic that are over 40 years old. I also have a bunch of code from my university days on a magnetic tape (a DECtape) that I will probably never be able to recover. But a lot of code since the PC era I still have in accessible form. Today, Facebook memories reminded me of a blog post I wrote 10 years ago today. Next step was to look though my archives for the code it referenced.

I haven’t thought about the project, parsing a string to evaluate its strength as a safe password, in  some time and thought I might want to use it in one of my courses. Honestly, I didn’t remember my algorithms and while I could think of several ways to do it I thought a memory boost would be fun.

It turns out I have a second example that someone else, another teacher who shared his projects with me, had written. Comparing the two programs was interesting. There are, as usual, more than one way to solve a problem like this one.

With two very different solutions and some other options that have popped into my mind while thinking about the project I am rethinking how to use this project.

Typically I would just assign the project and see what solutions students come up with on their own.

On the other hand, I could provide a structured set of recommendations. Various ways of implementing scaffolding would leave more or less flexibility for the student. Still musing over that.

Another option is to provide students with several code examples and ask them to evaluate them. I see a couple of benefits to this plan. Students would get some valuable practice in reading other people’s code. We don’t do enough of that in my opinion. It would also show different techniques (tools if you will) that they may want to incorporate in their own future projects. And it would allow us to have some conversation about efficiency.

I’m still noodling on these ideas but I thought I would toss my thinking out for comment. What do you think of these various ideas? What would you do?

1 comment:

rwhite5279 said...

I like all three versions of the assignment! Which one(s) I'd choose to offer to students varies depending on the course, the students that year, where we are in the course. It's a type of differentiated instruction, of course. I've recently been working on incorporating multiple challenge levels into the same assignment. Students who are still acquiring their skills focus on the basic assignment, and students who are ready for something more advanced can easily hop into more advanced versions of the same problem.

It doesn't always work as well as I'd like it to, and there's sometimes the question of equity, especially when it comes to awarding points for work. Does a still-developing student who only completes the basic assignment get full credit? Does a more advanced student get the same amount of points for doing more work? Fortunately, these issues don't arise often.

I created a video a few years ago regarding my efforts to work with multiple levels of students in an AP Computer Science A class, at https://youtu.be/ZJ3z51n1Ndo. I'd be interested to hear more people weigh in on this topic.

Best regards,

Richard