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

November, 2009

  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    Interesting Links November 16 2009


    Early in the week last week the @tcea Twitter account tweeted (Twittered?)

    "They may forget what you said, but they will never forget how you made them feel." Anonymous

    That has sort of been my thought for the week. How do we make our students feel? Our peers feel? Other people we interact with? Do we leave them feeling better or worse about themselves, about life, about us, about what we want them to know? It is the sort of thing that makes Twitter a lot more than people saying what they had for breakfast for me.

    Interesting article called Educators That Rock!: danah boyd danah impresses me because of how well she approaches young people on the internet with questions rather than preconceived notions. I wish more school administrators and policy makers did the same.

    Just What is Computer Science? Perhaps the key question for computer science educators as discussed on the CSTA blog.

    One of my friends turned me on to for anagrams. It is an interesting look at how a computer can generate anagrams but I think it is also a good way to have a discussion about how it still takes a person to pick out the really interesting or even ironic anagrams after the computer generates them.

    Looking for a timely discussion topic? Take a look at Debate: This house believes that the cloud can't be entirely trusted on the web site of the Economist magazine.

    Mark @guzdial followings the continuing saga of getting graduation credit for Advanced Placement Computer Science at  Georgia Board of Regents reconsiders APCS decision and will now "count" it. Next, the Department Of Education has to look at the issue again.

    From @blogCACM “CSTA Chapter Liaison Fran Trees writes about email etiquette with 20 useful composition tips (plus 1 good joke)”

    From @PeterVogel I see that Paint.NET 3.5 has been released in final form. Paint .NET is free software that is widely respected as an alternative to applications such as Photoshop. IF you are looking for a great tool for image editing this may be what you need.

    From Liz Davis aka @lizbdavis I see that MIT is hosting a free Intro to Scratch workshop on Saturday, November 21 from 1-3pm at MIT Media Lab.

    Microsoft Technology Blueprint for Primary and Secondary Schools

    These resources provide guidance to assist educational institutions in fully utilizing their current technology and migrating from their current state to a more efficient and effective institution. Because each school has unique issues, priorities, and resources, no general Technology Blueprint can be expected to address the specific needs of all schools. Although educational institutions have very specialized requirements, many lessons that have been learned in the business world can apply to the needs of educational institutions. Visit the Microsoft Technology Blueprint for Education website to learn more.

  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    Dealing With Complexity


    I had an interesting conversation with two teachers last week. One the chair of the computer science of a large state university and the other a teacher in a career/technical high school. We were talking about how beginning programming students worked on their programs. I said that time and again I’d seen students trying to fix nested loops by adding end loop constructs in random places until they got a clean compile. Then they were often surprised that the code didn’t work as they expected. The others responded that a lot of those sorts of problems came from students trying to write too much code at once rather than working more iteratively.

    For example, one teacher is using Alice which is a great tool. But many students start by adding all the characters they think they need all at once and then have trouble getting them to all work the way they want. The college professor related students trying to write all the methods and functions in a project at once and before testing any of them. The end result was code that was all but impossible to debug because finding where there heart of the error was is so difficult.

    Students want instant results though. They think that they can keep many more details in their head then they actually can. Perhaps it comes from multi-tasking so much. Perhaps it is just youthful vanity. or perhaps it is because they see others keep large amounts of details in their head (perhaps their teacher) and assume that it is easy. Lots of students assume they are smarter or more knowledgeable than their teachers. Usually they’re wrong. What they fail to realize is that years of practice and experience gives their teachers an edge that only time and practice will let them catch up to.

    I  think we all try to get students to break problems down into small pieces. We emphasize modular coding with small methods and functions. We talk a lot about top down design where we break a large problem down in to progressively smaller pieces. I wonder if we don’t always talk enough about getting each small piece to work right before moving on to the next one. Do we talk enough about unit testing? Do we talk enough about keeping it simple?

    I think this is a point that goes far beyond programming BTW. In English class I remember being told to start with an outline and then fill in the outline. One didn’t try to write the whole paper as one run-on sentence. Rather one planned out each section and wrote them in order. Well maybe not exactly in order but one typically made sure one section was in good shape before moving on to another section. Or at least that is always what worked for me. Many problems work better if one focuses on one piece of the project at a time. That is the most efficient way to do things.

    Software is getting more and more complex all the time. Student projects are generally fairly simple compared to professional software development. that just means that it is more, not less, important that they learn to keep it simple, work in phases, and deal with complexity from the very beginning.

  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    Wait while I look that up on the Internet


    Recently I have been doing some mock interviews with high school students. I have some business cards with a coded message on the backs with a challenge for students to solve the code. For a number of the mock interviews I handed the student one of these cards and asked them “what’s the first thing you would do to solve this?” The first part of the code looks like “8BF3A13B” and some many students say “that looks like hex. so I’ll convert it to decimal.” Others say they will compare it with a table of ASCII codes. But at least one in four says “I’ll search for it on the Internet.” OK some of them say they will “Google it” which of course lets me asks me ask if they are sure Google is the reference they want to use when interviewing with someone who works for Microsoft. :-) I learn a lot from the answers to that question as well. But I digress from the issue of if searching for answers on the Internet is really problem solving.

    Of course the Internet is a great resource for looking for information and finding the answers to all sorts of questions. Watching student search the Internet for years now I have to say that many of them do a very poor job at it. They don’t always know how to ask questions or what questions to ask. Now searching for an example of a coded message is easy. I expect that many students who get these coded cards from me or from others in my group will find this blog post in the future. I will be of almost no help to them at all though. Well at least not with decoding the message. False positives on the Internet are common.

    Information is only half the battle though. Problem solving may start with what questions to ask but it moves on to knowing what specific information or algorithm must be use to solve general problems. This is where it gets difficult for many people. I think that learning to move from specific to general is the key important thing in teaching computer science. This is what makes the difference, for example, between teaching the syntax for a loop and having students who can use a loop to solve problems. Or for that matter in math the difference between teaching what the Pythagorean theorem is and having students who can look at a problem and think “I need to use the Pythagorean theorem to solve this one.” Students need to exercise the problem solving muscles.

    There is a fine line though between making things too easy and too hard. Finding it is the art of teaching.

    BTW a related post is Are Your Students Good Problem Solvers, or Good Mimics? on the CSTA blog. And there is a collection of puzzles in the archive of the Microsoft College Student Puzzle Day event.

Page 3 of 5 (14 items) 12345