Computer Science Teacher
Computer Science Teacher - Thoughts and Information from Alfred Thompson

January, 2009

  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    Frustration is the Mother of [Education] Revolution


    The other night I was having trouble sleeping. You know how it is – you wake in the middle of the night and your mind is racing so you can’t get back to sleep. The smart thing to do is to play some mindless game until things settle down enough to sleep. But I decided to read some blogs instead. Mistake. One of the first blogs I read was Do PLN's breed Dissatisfaction? by Vicki Davis. That lead me to Joining a PLN is bad for  your morale by Steve Dembo. (Note that I read Steve’s blog as well and would have seen this post later anyway.) Now a PLN is a “Professional Learning Network” which is a phrase that has come into broad use on education blogs and especially on Twitter. What it refers to is the collection of people online who one learns from and participates in online discussions with.

    Until Steve’s post I think most people thought that PLNs were all  good with no down side. What Steve says and Vicki responds to is that:

    In a nutshell, the newly-gone-natives are getting restless. Being close to people who are amazing examples of the best integration success stories in the world has led to mountain sized feelings of the grass being greener elsewhere. It’s leading to a great many people to think to themselves either, “Surely other schools are more ‘with it’ than mine” or even worse, “Education is doomed because nobody gets it besides we few.”

    While the default assumption has been that teachers are becoming inspired by the people they meet could it be that when that happens they later become stifled and frustrated when administrators or IT people prevent them or at least discouraging them from using these new skills and techniques? Well it’s a theory. And I have seen more than a fair share of teachers, especially those who tech technology or teach with technology, become frustrated. But the way I look at it frustration is the mother of revolution. (Feel free to quote me. :-) )

    The thing about the amazing online professional learning network is that people are learning the art of the possible. When an administrator says “that will not work” or even as specific "as that will not work in our school” there are real live examples out there that show that it is possible. There are teachers who have overcome battles with IT, administration, other teachers, their own lack of knowledge and even school boards who can share stories of how it does work. Many of these people are now presenting at live conferences like TCEA, NECC, FETC and regional conferences around the country and the world. People can point people to those sessions so that even the least technical of administrators can attend in person and learn for themselves. And there are many other ways that a PLN can help. In my job one of the things I have done multiple times is to talk to school IT people to help and reassure them that what a teacher wants to do can be done and how it can be done. I’m far from the only on doing that.

    So yes, perhaps a PLN can bread some dissatisfaction and frustration – the grass is greener over there – but at the same time the PLN holds the seeds to a revolutionary network that can help a teacher overcome in place. A lot of teachers love the communities they teach in (just ask my wife and son who both feel a real emotional attachment to their students) and will fight to improve where they are if given the support. PLNs are or at least can be that support. Let’s rock and roll!

  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    Teach Yourself Programming in Ten Years


    I remember when I finished first grade and I thought I was done with school. The reason I wanted to go to school in the first place was to learn to read and at the end of first grade I thought I had that down cold. What more was there to learn? I see some of that with programming as well. People take a first programming course and they think they’re done - they’re programmers! Well not so fast. There is more to it than that just as there was more to learning and even reading when I finished the first grade. Others come to me and tell me they want to learn enough programming to create a specific application (rarely one that is that easy) or the next Halo 3 (never that easy) or something. There is this cram school mentality that seems to overtake so many people. Unfortunately, programming like so many things takes a while to really, deeply learn.

    I ran across the article Teach Yourself Programming in Ten Years by Peter Norvig recently and it does a good job of addressing this very issue. Here is a key paragraph from that article:

    Researchers (Bloom (1985), Bryan & Harter (1899), Hayes (1989), Simmon & Chase (1973)) have shown it takes about ten years to develop expertise in any of a wide variety of areas, including chess playing, music composition, telegraph operation, painting, piano playing, swimming, tennis, and research in neuropsychology and topology. The key is deliberative practice: not just doing it again and again, but challenging yourself with a task that is just beyond your current ability, trying it, analyzing your performance while and after doing it, and correcting any mistakes. Then repeat. And repeat again.

    What is key in so many of these endeavors? Practice. Careful, deliberate practice. One can get that practice several ways – projects in class, projects while working for a living, projects for fun and competition (Imagine Cup is a great one for college students USACO is good for many high school students.), and more. But programming is still a skill – some would say an art or perhaps a craft – and it takes practice to get good at it.

    Some students like to point out some of the top programmers in the world did not go to college or dropped out (Bill Gates for example) but they neglect the fact that those people all practiced A LOT! They wrote code day and night. Plus of course they are really really smart. For most people I think formal training is a huge help and speeds up the learning process greatly. But in the end practice is what makes it work. That and a willingness to learn constantly. The article includes a recipe for programming success that lists more items than just practice BTW. I think it undervalues formal training but it does include it.

    The relative merits of formal training and practice and what the ratio should be makes for an interesting discussion. I really think the best people have some of both. What do you think?

  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    Are You Using a Strong Password


    One of the discussions that take place which I talk about Internet and computer safety is what makes a good password. Things I talk about are length of the password, mixing upper and lower case letters and including non-alphabetic characters. I found a couple of resources that talk about this issue at some length. There is an interactive website that rates your password that I found first. The page looks (in part) like this:


    This is useful and the page also has some information about how the scores are calculated. From there I found a detailed page explaining what is and is not a strong password. It’s called Strong Passwords: How to create and use them. As I read through these pages it occurred to me that testing the strength of a password would make a good coding project. There are some complications to this though. How do you determine if a string has both upper and lower case characters for example? You could uppercase the whole string and compare the result to the original string I guess. Or you could scan each letter and note if a character is upper can or lower case and at the end see if you have found both types. Determining if a character is not a letter, a number or a special character, is similarly “interesting.” Testing for length is fairly straight forward though.

    At the end of it all a programmer has to use what is and is not found to show a result somehow. I have started with this in a simple Visual Basic program. This screenshot shows the work in progress.


    I used a progress bar object to show the line between the password that was entered and the label box that shows the grade in words. The textbox where the password is entered has the password character property set so that the password is not displayed For debugging purposes I also created a list box where I show the characteristics that I used to set the score. This could be a lot more fancy or detailed but it could also be done away with completely.

    I used a lot of Boolean variables in my version. I’m still not sure if that was the best way of doing things. I was also thinking about using a status word where I set or reset bits depending on results. That would also change the way I evaluate the status for display. I imagine there are all sorts of creative ways this could be done though. That is why I think I like the idea of this as a class project – it gives students a chance at some real problem solving creativity. Of course a teacher could mandate either flag variables or a status word/value of some sort depending on teaching goals.

    I’m going to keep up on this to see if I can write it up as a good project. But I thought I would show it in the blog to get some feedback and suggestions. So let me have it.

Page 5 of 8 (23 items) «34567»