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

May, 2010

  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    Programming and Excel


    Not everyone needs to be a programmer! You probably hear that a lot if you talk about trying to get more students to program. I know that I do. And of course there is some truth to that. But I believe programming is valuable for several reasons (learning critical thinking is one, algorithmic problem solving another, and more) and one of the commonly neglected reason is better usage of spreadsheets. Yes, spreadsheets.

    Everyone knows how to use spreadsheets right? Actually no. And even many who know a little about using them take very little advantage of features that could be very useful for them. A little programming knowledge can help here.

    I used to give placement tests to incoming high school students who thought they didn’t need to take a computer applications course. One part of the test was to enter data in a spreadsheet and have it show the results of some basic formulas. I could often tell who was going to do poorly – they took out calculators and used them. No, really! Clearly they didn’t “get” what a spreadsheet was all about. If they could not use the spreadsheet features to total a row or column of numbers you can imagine what else they were missing! (You can can’t you? Please?)

    The two must useful and over looked features of spreadsheets are (in my opinion) conditionals and built in formula functions. take a look at this screen image (of Excel 2010 BTW) and just look at the categories. There are many functions under each menu item.


    In programming we quickly learn to use and to create functions. It becomes part of the way we think about solving problems. In spreadsheets it can be the same. Now a lot of those functions are conditionals – things like “If” that we use in programming all the time. There is also conditional formatting.Did you know that you could set a lot of things in a cell based on their contents?


    This image shows only a few of the options included in Excel 2010 for formatting. You can add icons, background colors, data bars and more. But of course you have to understand a little about Boolean constructs and conditional coding. Not a lot really but some. While most people are not going to need programming in the sense of writing code in C# or Visual Basic or even F# a lot of people are going to be using spreadsheets to evaluate data and make business decisions. We do them a disservice if we don’t make sure they know how to use more of the advanced features that programming can help them use and understand.

    Late edit: This post is listed on DZone (at - thanks for the positive votes BTW) and there are some comments there. One in particular is interesting to me because it makes an interesting point.
    Ric Rude replied  Excel is a declarative programming language but one where, unlike other languages, the program output is prominent while the code is hidden.

    Of course we can use tools like this and teach these concepts outside of programming courses. I found this set of Innovids in the category How to use Excel across the curriculum. Some of them include:

  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    What do you need to know?


    The Microsoft Job Blog recently has a two part interview study guide set of posts. In the second (Microsoft interview study guide: Part II of II) there was a long list of Knowledge Questions. It starts with a list of basic computer science concepts. Interestingly enough it seems to map very well with topics from the Advanced Placement Computer Science curriculum with a heavy dose of data structures. This shouldn’t surprise anyone really. These are after all basic computer science concepts. But they are the tools that professional developers use every day.

    A problem develops when students learn things “for the test” and then assume they can forget it. I used to remind students that anything that had been covered previously in the course (and often times previous courses) was fair game for any test/quiz at any time. I wanted to emphasize that in programming and computer science there were building blocks – basic thinks that you could not move forward to unless you retained knowledge of previous topics. Concepts depend on each other and you cannot just forget them.

    The other knowledge question part I liked was about comparisons:

    *C++ vs. Java
    *C++ vs. C
    *Arrays vs. Linked Lists
    *Hash Tables vs. Binary Search Trees
    *Stack Memory vs. Dynamic Memory vs. Static Memory

    Personally I believe that a good computer science education, not just even in high school but especially in high school, should expose students to multiple programming languages. Not all problems are nail and requiring hammers if you know what I mean. Plus students should be able to think about and explain differences. Opinions are great things but you need to have them based on knowledge and defendable positions. Real development jobs want people who have a depth of knowledge and who can explain the options and why one is better than another. As they used to say at IBM THINK.

  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    Point Them in a Direction and Get Out of the Way


    I’ve heard Bill Gates talk a number of times about how influential his middle school experiences with computers were in his life. (You can hear him talk about it a bit from his recent visit to the Science Leadership Academy in Philadelphia - The Bill Gates Experience ) The short version is that the mothers club at his school paid for a remote connection to a mainframe computer. Bill and some others were cut lose on the connection and left to figure things out mostly for themselves. They wound up doing some pretty impressive things including writing a student scheduling system for the school. This experience pretty much resulted in Bill and Paul Allan creating Microsoft some years later. The early experience and the lack of artificial constraints on their learning resulted in them learning quite a bit. And exceptional experience? In some ways yes. I was in school only a couple of years ahead of Bill and didn’t get my hands on a computer until college for example.

    Today computers are pretty much ubiquitous and you’d think that a lot of students would have that sort of experience these days. Unfortunately that is not quite the case. In the first place there are a lot of artificial constraints and limitations on students, especially at school. No access to the C prompt for example. Little privileges to install software or to browse some very educational sites on the internet as well. Secondly there is a lot of advanced hardware that many students do not have access to. Budgets are tight after all.

    The system lockdowns have some logic behind them of course. It is pretty easy to make a computer unusable or to do malicious activities on them. I maintain that at some point educators have to do some trusting of students. At least some students. It’s not good to hold back self-motivated and intelligent students who really want to put in the work to learn new things. I see great things when that happens. When they also get some extra hardware – WOW!

    Students had Springbrook High School students have gotten access to Xbox hardware (controllers at least and I think an Xbox) and were one of ten finalists in the US Imagine Cup Game competition. They were competing against university students BTW. And then there is Plymouth Whitemarsh High School. Here is a video of high school students from there demoing the work they are doing with a Microsoft Surface. Now not every school can afford a Surface but clearly it is something students can work with. Give them tools, point them in a direction and get out of the way!

    There are other unexpected (or perhaps just not well known options) that can lead students to more experimentation if given the chance. The Microsoft Multipoint Mouse SDK lets people create applications that respond to multiple mice attached to a single computer. XNA, already alluded to, allows students to create games for the Xbox 360, Zune, Windows PC or Windows Phone 7 phones. With screens that support it Windows 7 supports touch input (similar to but not quite up to what Surface has) that you can access through the Touch API for Windows 7.

    Tech support may be timid about setting students lose on ever computer in the school and I understand that But I think there is a place for fewer restrictions on specific computer labs, perhaps with their own subnet and firewalls to keep them separate from the rest of the school’s network, where students have more latitude to experiment. I think that more often the surprises will be good surprises as motivated and unshackled students learn by doing, failing, trying again and succeeding.

Page 1 of 7 (19 items) 12345»