Additional profile information on Alfred Thompson at Google+
Someone sent me an email the other day looking for information to help him understand Big O notation. Big O notation is used to compare the efficiency of algorithms. If you teach Advanced Placement Computer Science (APCS) then this is something you have to teach because it appears all over the exam. If you are a professional developer or computer scientist than you'd better understand it as well. In real life it is part of the vocabulary that lets people have some important discussions about what algorithm to use.
I had some materials that I've used in the past that I send to my correspondent but the web links for the original locations were no longer valid. I don't like the idea of trying to archive other people's work. I'd much rather provide links so that people can go to the source. So I asked a number of my teacher friends what online links they were using. What follows are the links they sent me. As always with Internet links I can not be sure they will stay valid for ever. But as of this morning these were all working links. I hope that others find these useful.
http://en.wikipedia.org/wiki/Big_O_notation - it seems like you can't discuss anything computer related without a link to the Wikipedia article
http://www.cprogramming.com/tutorial/computersciencetheory/algorithmicefficiency1.html - Algorithmic Efficiency -- Beating a Dead Horse Faster - This is a short but interesting introduction to Big O notation.
http://www.cs.wisc.edu/~hasti/cs367-common/notes/COMPLEXITY.html - Complexity and Big-O Notation - Some rather complete notes from a course at the university of Wisconsin
http://www.cs.duke.edu/csed/talks/sigcse2004/bigo/slides.ppt - Tradeoffs, intuition analysis, understanding big-Oh aka O-notation - a PowerPoint presentation by Owen Astrachan of Duke University. Very well done.
http://staff.fcps.net/jlreed/CS2Files/11.2%20Compl... - 11.2 Complexity Analysis A PowerPoint presentation apparently by J L Reed. Used by several other teachers that I know of.
One of these days I'll have to write my own notes up. I've never been all that strong on understanding and teaching Big O (my students already know that I don't know everything so that mystery is gone) so I really need to spend some time working on this. My feeling is that working on it hard enough to explain it well will force me to a much higher level of understanding. That's usually how things work.
Back in the day (in other words 30 years ago when I was looking for my first programming job) I took a number of programming aptitude tests. I must not have done well on them because despite a degree that included a good number of computer science courses I never received a job offer from a company that gave me such a test. Notwithstanding that I have had what I like to think of as a fairly successful career in the computer industry. I’ve done a lot of fine programming and have taught a lot of even better programmers. (Or at least I like to think my students are often out doing me.)
My previous experiences have left me skeptical of programming aptitude tests. Recently I came across some research being done by Saeed Dehnadi and Richard Bornat of Middlesex University in the United Kingdom. (Visit Saeed’s home pagefor links to this research and two papers on the subject.)They believe that they have discovered a fairly simple test that predicts with a high level of certainty which students are going to do well, which students are going to struggle and which students are not going to “get it” at all. The test involves asking a number of multiple choice questions based on assignment statements and should be fairly easy to administer. I suspect that it will not be long until someone converts the test to an online quiz that spits out a score and a prognosis of success as a programmer.
I have very mixed feelings about this test. One on hand I like the idea of being able to weed out people who are not going to get it no matter how hard they work or how well they are taught. But an even greater part of me wants to believe that everyone can learn to program if only they are taught correctly. Of course some people are going to be better at it than others but shouldn’t everyone be able to learn some of it?
I think there is value in learning computational thinking and that programming is a learnable skill. Maybe we can use a test like this to determine different learning/teaching paths but I am not ready to tell anyone they can’t learn to program. What do you think?
With the advent of digital video equipment, digital auto equipment and computers software, often free software, a lot more people are interested in doing interesting things with video. It has probably never been more easy for regular people to create great looking video. Sites like You Tube have made it easier for people to share their work of course. But often people need a little help getting started.
Thanks to a link from Alex Barnett I found this how to video on YouTube that explains how to make a movie with Windows Movie Maker. Blake Handler links to still more Windows Movie Maker resources here. I can see a lot of fun and educational things students (and perhaps teachers as well) can do with this free tool. It's about 13 minutes long, uses the Spanish version of the software, but the language of instruction is in English. Check it out.