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

January, 2009

  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    Useful Web Links for Computer Science Teachers


    I keep doing sets of links to hand out at various conferences. It seems like every time I do the list comes out a little differently. Some new things. Some things have new addresses. And the order of things changes for the audience. This list is from a pair of handouts I have put together for a high school curriculum panel at Stevens Institute of Technology and for TCEA. Since I’m been working on this I haven’t has as much time to write for the blog. So here’s hoping this serves as double duty.

    K-12 Faculty Community Site 

    A source for curriculum resources, teacher forums, and program announcements

    Programming Languages for Beginners

    Alice  – A 3-dimensional, drag and drop programming language from Carnegie Mellon University

    Kodu -

    A graphical programming tool for younger students. Kodu will be available via Xbox Live Marketplace this spring. A version for schools is in the works. I included that link because I am talking about it to let people know it is coming.

    Scratch  – a light weight 2-dimensional, drag and drop programming language from MIT

    Small Basic -


    Computer Science Unplugged is a series of learning activities that reveals a little-known secret: computer science isn't really about computers at all!

    MSDN Academic Alliance http://

    A Microsoft program for schools to get Microsoft Development software for labs, teachers, and students.

    DreamSpark for High schools

    DreamSpark High School provides professional-level development and design tools to students enrolled in an accredited, secondary educational institution at no charge.

    XNA Game Studio Express

    Software for developing games for Windows, the Zune and the XBOX 360. Also links to the XNA community with sample code, tutorials and support forums.

    Visual Studio Express Editions

    Free development tools (IDEs) for Visual Basic, Visual C++, Visual C# and Visual Web Developer

    Beginner Developer Learning Center

    A web site for people of all ages who want to learn programming and web development. Tutorials, videos, projects and web casts

    Microsoft Robotics Studio

    Visual Programming Language for robots, runtime libraries for higher level programming, a 3-dimensional robot simulator with sample simulations, tutorials, and videos

    Coding 4 Fun 

    A web site for hobbyists and computer tinkerers - sample projects and information for doing fun and interesting thing with programming; often combined with interesting or unusual hardware

    Alfred Thompson’s Blog  Which is of course right here.

    Sharing of resources, links, and information of interest to K-12 Computer Science Teachers

  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    Java To C# Orange Book


    So perhaps you are teaching Java and your students want to learn C# (sea sharp). Or maybe you want to learn or teach C# your self and are coming from a Java background. Well  I have found the free resource for you. Rob Miles who wrote the free “C# Yellow Book” text book that I have written about before has a new free book out. This one is called the C Sharp from Java Orange Book And of course the book has an orange color. Or should I say “colour” since Rob is from the UK. See language differences can get you in natural languages as well as programming languages. :-) If that direct PDF link doesn't work you can get to it from - Not sure why my link doesn't always work.

    The book (<500kb and about 27 pages) includes a host of “how do I” questions and answers that should be most helpful for people moving from Java to C#. The two languages are a lot a like in many ways but there are those little differences that can easily bite someone making a transition. Rob’s got a great collection here and I rate this as a must have for people doing both Java and C#. Thanks Rob!

  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    How Not To Develop Software


    The first thing you have to understand is that I am old school. Back when I was developing software for a living we didn’t generally have people whose sole job was to test software. Certainly not in the unit test sort of way that seems so common today. We did have system testers and I was one of those for a long time. I developed software to stress test whole systems (including lots of computers and lots of potential timing problems). But while I had users using my software there wasn’t anyone, ever in my career, whose job it was to specifically test my stuff before it went into production or into customer hands. So I have trouble with this whole concept of groups were the ratio between people who develop software and people who test what they do is close to one to one.

    I mean this whole idea of passing software from the developer to someone else without through testing and a good solid code review is just foreign to me. I’m not saying everything I ever wrote was bug free. Not at all. I threw the occasional side project together in a hurry or even made fast changes in emergencies without following the usual formal processes. And bugs did happen. And of course even the best process lets some bugs through now and again. And there are design flaws that pop in from time to time. But every time someone else reported a bug in my code I was both surprised and embarrassed. And yet today, it seems anyway, that many developers write code and expect other people to find and sometimes fix their bugs. Makes me want to scream.

    I was discussing this with Clint Rutkas (an outstanding developer and all round great guy on my team) and he’s new school. He sees the value in this heavy test system. And he’s a smart guy and more in tune with current development in some ways than I am. But I don’t know. And then I saw this blog post - Non Obvious ways to find bugs - Look at the developer It complicates my thinking some more.

    Briefly it is one tester’s characterization of different kinds of developers. These characterizations are scary but in fact these are types that have been around for ever. The difference is that in the past other developers and the managers of developers were responsible for keeping them in check and in helping them to get their heads on right. Now it is testers who do it. Is it better? Not sure. But let’s look at one type of developer and see where problems start. From the blog post:

    Just out of College - these developers make alot of mistakes but they learn very very fast. They typically don't test their code or they don't know what to test for. Since they are so new to writing code for production, basically any testing theme will find bugs.

    I was one of these once myself. In some respects one thing I had going for me was a lack of confidence. Yes a lack. It made me less afraid to ask for help and advice. It made me test my stuff like crazy. And it made me really pay attention to the code written by more senior and experienced developers. The very confident “I graduated from a name university and I am up on the latest theory” new hires could be just scary in what they turned out. But they would break a system build or their code would not pass the first review with either management or a customer and they would learn very quickly. Their mistakes were very visible beyond themselves. This was especially true if their code broke something (or things) built by other developers. There was no tester catching things before the developer could be embarrassed. Which way is better? Open question but the old way required fewer people. :-)

    The other categorizations are similarly interesting but to me they constitute of description of how not to be a good developer. The answer is not to use testers to find and fix the problems (or force the developers to fix the problems) but for developers to learn from these stories and not create the bugs in the first place. I am a firm believer in the lessons of W. Edwards Deming and one of those is that you cannot test quality into a product or system. I think people use all this extra testing as a way to avoid doing proper training and management of people.

    What do you think?

Page 1 of 8 (23 items) 12345»