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

September, 2008

  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    Big Ideas In Computer Science


    The Wicked Teacher of the West (in real life actually a very charming middle school computer science teacher) wrote recently about the subject of Big Ideas in Computer Science. In this case “big ideas” are defined as “the things students will internalize and remember long after a course is over.” This is pretty different from say big problems in computer science (I heard Turning Award winner Tony Hoare give a talk on that once which was very cool) but for beginners this may be even more important. One really needs a good foundation to build on and “Big Ideas” are a great part of that.

    I like the ideas that were presented and wanted to a) draw some more attention to them and b) get opinions from others. First here in brief is her list (she fills in some details on her post.)

  • Computer tools are designed and the design affects what they can do.
  • Computers precisely execute instructions created by humans.
  • Computers are used to solve many problems across many disciplines.
  • Computing has a role in society
  • Now remember that her audience is middle school so working for high schools or universities or even professional developers may be different (and harder to understand :-)) but what do you think of these as a start? I like them and in fact in one form or another these are some of the key points I try to make when talking to students about the field of computer science – especially the last two points.

    The multi-disciplinary way that computer science is used today is key I think to getting students to understand that this is not a narrow field. The role in society is one that most people are sort of aware of (at least) but that today’s students really have to internalize for the future. And that goes for students who are not going into the field professionally.

    The first two ideas are key to understanding the limitations of computers as well as their potentials. In fact the way design affects what all tools (and I use tools broadly) can be used is a core concept of engineering and science in general. Compute science is a good way/place to teach it though.

    Other thoughts? What would your four big ideas in computer science be?

  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    Line Continuation and Visual Basic – More on C# vs. Visual Basic


    Clint has more on our Visual Basic vs. C# discussion on his blog today. Like Clint I am completely willing to let people choice the language of choice based on personal preference. One of the really great things about the .NET platform is how easily this is possible even when people on the same project choose different languages. And I do have a great deal of respect for C# and especially the people who designed it. I have a great deal of respect for Clint as well. But I still like Visual Basic better.

    In his more recent post Clint takes on the line continuation character which is needed in Visual Basic for breaking a statement across multiple lines. I was tempted to just say “any statement that is too long for one line should be broken up into multiple statements” but that would be both too simplistic and unfair. Many statements just make more sense as one long statement and for readability breaking them across multiple lives can be a good idea. I just thank the stars that we are not limited to 80 character punch cards anymore. And so it may be that coming from a background that includes FORTRAN and other punch card programming I do not find a line continuation character much of a strain. I also think that it helps for internal documentation. It makes it much less likely, in my opinion, that extra code will be inadvertently inserted in the middle of a statement. Or that a multiple line statement will get inadvertently cut in the middle during a cut/paste operation.

    And of course needing a line continuation character is an exceptional case with most statements fitting on one line nicely. At least I don’t need a semi-colon at the end of every statement so that the compiler doesn’t get confused.

    Some additional good news is that the Visual Basic team is actually thinking about changing this for the next version of Visual Basic. Here in a blog post Paul Vick from the VB team talks about the issues and the possibilities. Will this happen? Hard to say but I think it would be great if it did.

    I should address some of the comments on Clint’s last post while I’m at it. One commenter points out that in C# and other C family languages one can write something like:

    if (condition) { dostuff }

    and asks “try that in Visual Basic.” So I did. The following one line statement works just fine.

    If (condition) Then dostuff()

    in fact this line

    If (condition) Then dostuff() : dostuff()  ‘ Did you know you could have multiple statements on a line with Visual Basic?

    works the same as

    if (condition) { dostuff(); dostuff(); }

    Except of course in the C# version we have to remember the semi-colon after each call to dostuff (I created methods so I could be sure stuff compiled) and we use the key word “then” and the new statement coming colon on the VB code.

    Another comment says that one thing programming languages should not be is verbose. Well verbosity may be in the eye of the beholder. As someone who used to do a bunch of programming in COBOL, Visual Basic seems down  right terse at times. But more to the point, brevity has its place but too much brevity can lead to confusion. There are reasons we eschew single character variables for most things after all. The right answer is a balance and I think Visual Basic has a good balance.

    Note: See Visual Basic .NET and C# Side By Side for a look at some of the syntax of both.

  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    Saving Computer History


    The old saying is that “those who refuse to learn from history are doomed to repeat it.” Does that apply to computer science and information technology? Oh yes it does. Well I think it does. Look at today’s use of “thin clients” connected to servers. Is that very different from block mode terminals connected to large mainframes? Some but not a lot. That is not intrinsically a bad thing but it certainly is useful and instructive to look at the issues and solutions that were current with those earlier systems. And yet how much do we really teach today’s students about the history of computers and computer science? Do we talk about Babbage and then jump to the PC age? Or do we fill in the blanks?

    One of my favorite places to visit is the Computer History Museum in silicon valley. It’s actually only a short walk from Microsoft’s Silicon valley research facility. The past and the future reside close physically in that location. I think they need to be a bit closer in our minds sometimes as well. There are a lot of online resources at the Computer History Museum website by the way. Potentially very useful stuff even if you can’t visit in person.

    The year 1975 was something of a turning point in computer history BTW. Not because I graduated college that year though I think I was fortunate to stat my career at that time. That was probably the real start of the PC age. (I like the overview here that is part of the Computer History Museum’s timeline). As more and more people got into the field and the number of computers increased (along with the decrease in size and cost) more people started saving things of potentially historic value. Or so I tell my wife about the punch cards, mag tapes and old TRS-80 in my attic. In fact most of the computer museums have pretty much stopped accepting items from later than 1975 into there collections. But was are still losing valuable pieces of computer history from before that time.

    Bletchley Park is one such piece of history. This was the place where the Allies worked on breaking Nazi codes during World War II. And yes, computers were an important part of that effort. People like Alan Turing who is often thought of as the father of modern computer science and after whom computer science’s more prestigious award is named worked there during the war. The rebuilt Colossus machine is there as are the Bombe machines that were used to break the Enigma code. Recently PGP (the cryptography and security company) and IBM announced a fund raising program to build an endowment to preserve Bletchley Park.

    All too often in the past, in part because of the room early computers took up and the expense of maintaining them, computers that became obsolete were destroyed or discarded. There is one computer in the Computer History Museum that actually has bullet holes in it because someone used it for target practice after it was discarded in a field. We probably have enough interest today to save modern samples as they are passed over but I think we, as a society and as an industry, should be working to save some of the older items before they are gone for good. And one could argue that the importance of the work at Bletchley Park has been too long hidden and ignored. It would be good for the rest of society to understand how mathematicians and computer scientists made a big difference in a world changing war. That lesson may be valuable in the future.

  • Page 4 of 8 (22 items) «23456»