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

December, 2010

  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    Top Ten Indications You Are A Computer Industry Newbie


    Just for fun and because I am old[ish]. But more seriously, because people should know the history of computer science and the computer industry so as not to repeat mistakes.

    1. You think garbage collection came in with Java. Garbage collection has been around a long long time. BASIC  PLUS in the RSTS/E operating system had it over 40 years ago.
    2. You think cloud computing is new. It’s different more in implementation than in concept than the old mainframe computing.
    3. You think internet chat started with either ICQ or AOL Instant Messenger. There was Internet Relay Chat and VAX Phone long before that.
    4. You think the Internet and the World Wide Web are the same thing.
    5. You never heard of Digital Equipment Corporation. Once the second largest computer company in the world and a driving force behind the paradigm switch from mainframe computers to mini computers they are now gone. Lots of lessons you’ve missed if you don’t know that story.
    6. You don’t remember PostScript files. The standard for great printing before PDFs.
    7. The only mark up languages you know are HTML and XML. Few seem to remember that markup languages were used for document creation before web page creation.
    8. You don’t know what FORTRAN and COBOL stand for – FORmula TRANslation and COmon Business Oriented Language.
    9. You either don’t remember the term “Winchester drive” or you don’t know how it got that name. Hint: Sealed hard drive with a model number of 3030.
    10. You say “n00b” and not “newbie.”

  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    Do We Need A New Teaching Programming Language


    I saw some discussions lately about the need or lack of need for new programming languages. In once case especially for teaching programming. In general I think that new programming languages are a good idea. From time to time it is good to start fresh and incorporate the latest ideas in a language that was designed from the ground up. C# is one example. Java is as well. Although personally I think C# is better having been able to learn from the mistakes made in Java. F# is still another example. But none of these were designed for teaching programming. The last big success in that area was PASCAL.

    PASCAL was widely adopted for education and in fact was the first programming language of the APCS exams. It fell out of favor largely because object oriented programming became the standard programming paradigm in education. Before PASCAL we had BASIC which was designed as a language for beginners to use to learn programming. BASIC had its critics but there were sure a lot of people whose first learning about programming came from the BASIC that came with  their personal computer.

    Today first programming languages are all over the map. There is Kodu for the very young. Alice and Scratch for middle school (and up) and at the high school level we see Java (largely because of the AP exam), Visual Basic (and other versions of BASIC such as Small Basic), C++ (yes still and seeing a resurgence of sorts), C# (especially with the ability to create games with XNA) and Objective C (for some robotics and iPhone applications). Python seems to be picking up steam of late. And yes, in some areas, Scheme, which is a functional language, is being used. DrScheme is in fact designed for teaching as are Alice, Small Basic, and Scratch. So it is not as if languages designed for teaching don’t exist. But are they the right ones? That’s a question to start a debate.

    Speaking of debates, just about any time someone asks about what the first language for teaching should be someone will suggest Assembly language. Now that works for some people. Bill Gates started with Assembly language for example. Worked for him. I’m not so sure it works for everyone or even for more than a few people. Eventually people are better off if they learn it but it is not a great first language.

    SO what should a teaching language be like? I would suggest that a simple syntax with limited keywords would be a good start. Should it be an object oriented language that lets users create objects? I’m not so sure we need that right away. Use objects – Yes! Create objects? I’m on the fence. The objects first crowd would howl about that but I am not convinced that we need objects first. See mark Guzdial’s There is no “First” in CS1 What I want in a first teaching language is simplicity and creating classes is all too often not simple enough.

    Strong typing or weak? Early or late binding? Does it really matter? Think simple. And always remember that you can’t teach all of programming let alone all of computer science in the first course.

    I really like the graphical programming in Alice and Scratch. My biggest issue with them both is that dealing with variables is not easy enough. It’s not hard but it is also not obvious enough. Also input is too limited for my way of thinking. On the other hand Small Basic has much of what I like but has more syntax to mess with people. Syntax aside Small Basic has one other thing going for it that I really like – the graduate button. Small Basic has a simple and smooth transition path to Visual Basic which is a full featured Object Oriented language with professional strength IDE and everything. Alice looks like it will have a path to Java but it is still “coming” and when you get there it is still Java. I’d be happier it if took one to VB or C#. Either way a good teaching language should have a smooth path up the latter to professional tools.

    Do we need a new language? Some are saying that Python is it. I’m not so sure.It may already be too complicated. Small Basic, in my opinion, is great in that it allows us to start younger and has a path upwards. Something with the drag and drop style of Scratch and the Windows Forms features of Visual Basic and C# would be really cool. Especially if there were a “graduate button” to a next level language. What do you think?

  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    Thinking Speed over Typing Speed


    Last week I ran across a blog post by John D Cook titled How much does typing speed matter? that got into the debate over how fast programmers should be able to type. It was a response to Jeff Attwood who had compared programmers to pianists. (Cult of the Keyboard) John Cook compares programmers to writers. I think John is on to something. I know that my style of programming is a lot like my style of writing prose. In both cases I spend a lot of time thinking before I put fingers to keyboard. Sure there is an advantage to being able to type quickly especially when writing something like a blog post or a book or documentation. The marginal value of being a fast typist when entering code is not as great though. The lack of a spell checker in an IDE is alone a good reason for someone like me to slow down a little.

    But the most important part of any writing, prose or code, is knowing what you are doing. I used to accuse some of my students of the “Ready, Fire, Aim” school of programming. In some cases they skipped the “ready” part completely and jumped right into fire and then trying to do mid course corrections. Basically like they say no matter how fast you are going if you don’t know the way you are not going to get there.

    What a lot of programmers do, ok not many professionals but a lot of students, is to keep entering different bits of code and running the compiler to see if they fixed things. It’s not too far from the old line about enough monkeys on enough typewriters over enough time turning out the works of Shakespeare. It’s not the best way to do things.

    Give me a programmer who thinks about the problem, develops a plan/algorithm and then systematically and even slowly enters the code. Hunt and peck? Sure, fine, why do if care if I know that there will be a lot less wasted time debugging later on? And you know what? If you go slow and look at the Intellisence suggestions in an IDE like Visual Studio you may stumble across something new and perhaps even better. You can miss a lot by moving too quickly.

    Note: That I am on vacation this week so this post was prepared in advance for appearance now. To subscribe to this blog please use as the RSS feed source. Thanks.
     BTW I wrote this last week so it would show up today and people would not forget I exist. Smile

Page 3 of 7 (19 items) 12345»