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

June, 2007

  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    The Prime Number Syndrome


    Tucker Balch, a computing professor at Georgia Tech,  blames the decline in computer science students in part on what he calls the "prime number" syndrome. According to this AP article the Prime Number Syndrome is:

    It's the traditional way to teach computer science students by asking them to write programs that spit out prime numbers, the Fibonacci sequence or other mathematical series.

    In short part of the problem with computer science courses is that they are too much about the math. Students are not all interested in the math. That may be partially a result of computer science courses originating from math or engineering departments. A lot of the people in the early years of computer science came out of mathematical traditions. Math was/is interesting to them so that is how they teach computer science. Some of the problem today may be that not everyone thinks that calculating prime numbers is really that exciting. They are interested in a lot of other problems though.

    Some computer science departments are realizing this and are bringing other disciplines into the mix earlier in the program. At some places it is robotics. In some game development. In still others there is this new idea of "media computation" programs. There are a growing number of computational biology programs as well. These programs are all about getting students interested by expanding beyond just doing the math.

    Now at some point most computer science majors wind up needing more math classes. And there are a lot of concepts that computer scientists use that are related to mathematical concepts. But the days when we need to weed out students early by forcing them to fit the mold of pure math interests are long gone.

    A lot of high school computer science teachers also teach math these days. In fact in some states a math certification is required to teach computer science. I guess I was a rarity though. I'm never been a real mathematician and while I assigned the odd Fibonacci sequence a lot of the projects I came up with on went in other directions. I like the idea of the robotics curriculum they are developing at Georgia Tech. But I'm a robot sort of guy. I'm sure the media computation and bioengineering programs also attract a lot of fans. I tend to think that at the high school level, especially for a very first course, what you might want is a lot of variety. The more different disciplines that come into play the more likely you are to catch the interest of more students. And to me, getting students interested is a major goal of a first programming course.


    Technorati tags: ,
  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    Programmer Personality Test


     I found this Programmer Personality test the other day. It is based of the Myers-Briggs Personality Test but obviously recrafted for programmers. Now I have mixed feelings about Myers-Briggs (my son  the psychology major dismisses it completely) but a lot of people put stock in it. This test, while it claims to be serious, has too few questions in my opinion to be reliable enough for serious evaluations. And of course I am unaware of any real research behind it. On the other hand it was quick and easy to take and I found the results interesting. My results are below. My comments on the results are below that. 

    Your programmer personality type is:


    You're a Planner.
    You may be slow, but you'll usually find the best solution. If something's worth doing, it's worth doing right.

    You like coding at a High level.
    The world is made up of objects and components, you should create your programs in the same way.

    You work best in a Solo situation.
    The best way to program is by yourself. There's no communication problems, you know every part of the code allowing you to write the best programs possible.

    You are a liBeral programmer.
    Programming is a complex task and you should use white space and comments as freely as possible to help simplify the task. We're not writing on paper anymore so we can take up as much room as we need.

    My comments on the results.

    Planner is completely right. If you read this blog regularly you'll know that I am an advocate of old-fashioned planning and through design before coding. That may make me a dinosaur but it worked for me my whole career.

    High level is true today but wasn't always true. There was a time when bit fiddling was a great joy for me. Setting flags, traversing lists (using pointer arithmetic) and low level coding were fun and interesting. As I've gotten older I really like to reuse code. I have been there, done that, and have no need to prove to anyone that I can "do it from scratch." Give me the blocks and I'll build you your tower!

    Solo situation? Yes, I guess so. But honestly I work fine on large multi-person projects. This happens because of the planning phase. As long as all the inputs and outputs are well defined there is no problem with people coding in something like isolation as long as everyone follows the specification. I like working on a piece of code that is small enough to keep in my head at one time. Until the program isn't broken down into manageable pieces so that individuals can work on them the planning isn't finished to me. That being said I have never given pairs programming a try on a real project. It is an idea I think I might like.

    No one who has read my posts on the value of commenting (like this one which started a lot of discussion in the comments - comments on comments?) will be surprised by me fitting into this definition of "liberal programmer." I like my code documented and "pretty." White space is your friend!

    What do you think about this test? Does it get you right?


    Technorati tags: ,
  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    Programming Proverbs 22: Get the program correct before trying to provide good output


    In some ways I think this is one of those proverbs that was more important back in the days when batch jobs were the way things worked. On the other hand there is an important, if perhaps more general, bit of advice here. That advice is to spend the time up front to get the right results before getting too hung up on how those reports are handled/displayed.

    A lot of developers, and students are horrible at this, like to spend a lot of time on appearances before they get the "invisible" parts of the program working. More than once I have seen a student turn in a beautiful program with a great looking user interface that fails to execute the most basic of functions. I've heard a lot of teachers complain that this sort of thing is made worse by tools that make creating fancy graphical user interfaces easy. There is no doubt that playing with a GUI can be a distraction. People need to remember that incorrect or insufficient information is of little use no matter how pretty it looks.

    IN most cases getting the output to look great, whether that means the columns line up or the screen is well laid out and well organized, in a fairly trivial task. It may be tedious at times and there may very well be a good deal of testing to make sure all of the edge cases display well. But really getting the output right can usually be safely left until later in the development cycle. IN professional development it might even be better to make that task a separate on and hand it off to graphic designers rather than programmers. The promise of XAML and the Expression Suite of tools among others (someone else must be doing similar things I assume) make that easier. Form and function have never been easier to separate.

    A programmers main job is to get the algorithm coded correctly and tested well. Once the program is correct someone can spend the time needed to make it look cool to the user.

    This is the twenty-second of a series of posts based on the book Programming Proverbs by Henry Ledgard. The index for the series is an earlier post and discussion of the list as a whole is taking place in the comments there. Comments on this "proverb" are of course very welcome here.


Page 1 of 8 (24 items) 12345»