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

March, 2010

  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    Rethinking Hello World


    Is it time to rethink and replace “Hello world?” Honestly I think so. The purpose of “Hello Word” is to walk a beginner through the process of creating a minimal computer program and getting it to run. It probably made sense when one had to use a text editor to  create a file and then manually run it through a compiler and a linker to get to the run part. For modern integrated development environments (IDEs) I’m not so sure it makes since though. It is fairly easy to enter some simple code and hit the F5 button and get a running “Hello World” to run. So what is the problem? What is the harm? Well two things.

    One is that the process doesn’t feel like it makes sense. It is just too trivial and too boring. As I  said before using an IDE is easy for students who have grown up with word processing and similar programs from early childhood. Why waste time with something that means nothing? Plus it violates Astrachan’s law - “Do not give an assignment that computes something that is more easily figured out without a computer, such as the old Fahrenheit/Celsius conversion problem.” OK “Hello world” is not exactly an assignment but more like a demo/exercise. And I am going to suggest a more powerful and interesting version of Fahrenheit/Celsius conversion but bare with me.

    The second problem is that “Hello World” does not lend itself to enough experimentation. I think that students get more out of a project, even a simple demo exercise, if they can play with it and stretch their creative muscles a little before moving on. What can you do with “Hello world?” You can change the message. If you want to introduce an input statement and a concatenation operator you can try some personalized messages. None of this makes for any thing but a slightly different trivial exercise.

    With text based console applications there isn’t much you can do though. It’s a lot of work to add loops so early for example. On the other hand with Visual Basic and C# from Visual Studio beginners can get graphic easily without writing any code. For years I have been using a version of the Fahrenheit/Celsius conversion that doesn’t require more than two lines of code with both of them being assignment statements. I use a form with two labeled label boxes and a slider bar.


    The two lines of code can be as simple as

    Label1.Text = VScrollBar1.Value
    Label2.Text = ((Val(Label1.Text) - 32.0) * (5.0 / 9.0))
    In this case I am taking advantage of some explicit type conversions of course and a little “hand waving” and “we’ll explain more of this later” but most students with some understanding of algebra should be able to handle it. You also have to spend a few minutes explaining setting some object parameters but that is a basic thing that will pay off later. It’s useful I think to get it in early as well. The result is an interactive routine that students can play around with.  

    The next benefit is that you can turn students loose and ask them to modify it to do other conversions. Currency, weights (Imperial to metric), volume or any of many that students may find interesting. This lets students take a little ownership and experiment a little in a safe simple project.

    So what do you think? Is this too much for a “Hello world” replacement or does a little additional complexity pay off in building early interest? Have you tried something to replace “Hello world” and if so what works for you?

  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    Where does Computer Science Belong?


    To some extent Computer Science is the red headed step child of K-12 education. It just doesn’t fit nicely in a box. Science often doesn’t want it because it doesn’t always meet their idea of what “science” is about. Math doesn’t always want it because it uses too much hardware and it doesn’t fit in their preconceived flow of math curriculum. What does it come before or after? It shows up in some business departments where it is an awkward fit at best. And CS programs that are not part of business departments have this tendency to look down on business computer courses as “too vocational.” And of course in most states (41 as I understand it) computer science can not be used to satisfy any high school graduation requirement. As a pure elective it is often very difficult to keep classes running let alone full as students tune their transcripts for college/university admissions.

    As reported in Dr Dobb’s and other places:

    The National Governors Association (NGA) Association Center for Best Practices and the Council of Chief State School Officers (CCSSO) have released the first official public draft of the K-12 standards as part of the Common Core State Standards Initiative, a process being led by governors and chief state school officers in 51 states, territories, and the District of Columbia. […] Interestingly, this year "computer science" is included as a senior-level high school course for students who meet the "readiness level" by grade 11 within the latest draft of the Common Core Standards for Mathematics.

    And most states that do allow for CS courses for graduation credit do so as meeting a math requirement. So it’s settled right? Well not so fast. I know a number of teachers who have some concerns about this. One of them sent me email recently complaining that the AP conference this summer had computer science listed under mathematics and suggesting that it should be a stand alone section. Well so? What is the problem of including Computer Science within math? A couple of things come to mind.

    One is certification. Certification for computer science teachers is a mess in the US as it is. Courses in math departments tend to require that teachers be certified in math which is not near the same thing as being certified or even qualified to teach computer science. Then there is the matter of CS not being seen as central to the mission of most math departments. First course likely to be lost in the shuffle or budget cuts or scheduling issues? Computer Science. As least in the perception of many. Then there is the loss of independence. In schools where computer science is independent of other departments teachers tend to have more flexibility in curriculum, texts, independent studies, and other options. Computer science teachers can be an independent bunch for one thing but things get more difficult when you have to “sell” changes to a department head who doesn’t understand what you are trying to do. None of this is a problem everywhere of course and there are schools where computer science fits comfortably into math departments. I think. :-)

    One other factor I see is that there is a movement in the greater world of computer science to be about “computer science and” where almost anything can be the “and.” CS and Math? Obviously. CS and sciences – physics/biology/chemistry? Why not? CS and pre-engineering? Oh I hope so. Is this easier when CS is its own department? In many cases it probably is.

    But the reality is that computer science needs to fit in somewhere right now. Even if run as an independent department computer science courses are only going to be accepted as graduation requirement meeting options as part of something else. The best candidate right now is Mathematics. That is the political and practical reality. We don’t have to like it but we probably have to live with it for a while. Just my opinion. What’s yours?

    Edit: Related to this post, Cameron Wilson of ACM wrote a post called Computing and the Common Core that you should read. The most important part of it is his call to action.

    Now the community can support this breakthrough by sending letters for support for the inclusion of computer science in the final document. The initiative is taking comments on the draft until April 2. There are two ways to comment. The first is by taking the survey, which as an additional comment area where you can express support for computer science. (Follow this link  External Linkand click on the "submit feedback" to get to the survey.) The second is by sending letters to

  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    Playing Video Games Will Not Get You a Job But Creating One Might


    Last week I had a chance to hear Larry Hryb (AKA Major Nelson) of the Xbox Live team talk to a group of college students at Microsoft’s Cambridge (MA) facility. The audience was made up mostly of students with aspirations of making it in the gaming industry. Game programmers, graphic designers, game developers, game audio enthusiasts, and more. Larry talked about Xbox Live and Xbox specific topics for a while and then joined a panel of people in the game industry that included someone from Linden Labs (Second Life) and some independent game companies. They talked about careers in the industry. Obviously one of the things students wanted to know was what they need to do to get into the industry. One of Larry’s kick off comments was most interesting. Basically he said (I’m paraphrasing) was “I don’t care what games you play, how much you plan, or how good you play. I hear that all the time. Tell me what you have created.”

    There is a huge difference between being a consumer and being a creator. Being good at one does not mean you will be good at the other. A video game company and in fact any software company is looking for people who can create. Several people on the game industry panel said they wanted to see code from potential developers. Art from potential game graphic artists. Potential game designers who are not also programmers (and there are places for those people) can create board games to show off their talents and imagination. The important thing is to show of what you can create. It doesn’t matter where you get or create your portfolio but that you have one. One independent game developer whose games are making him money on Xbox Marketplace said to get a hold of XNA and create a game to demo. Maybe even get it on Xbox Marketplace and have some evidence that you can create marketable products.

    This idea of having a creation to show goes beyond just games though. An interview for just about any entry level software job is going to cover what you do beyond your course work. Everyone expects you to do well in your course work and to get good grades but what they want to know is what you do outside of class. Do you create interesting projects? Do you take your own ideas and express them in code? You may talk about wanting to change the world but what steps are you doing to actually make a difference?

    Yes internships can help with this. But not everyone can get a great internship. Everyone can get development software and create software that can make a difference for themselves and perhaps even the world. Microsoft has programs like MSDN Academic Alliance (your school may already be a member) and DreamSpark that gives departments and students professional software for their use. Dreamspark is completely free for students as well!

    There are competitions like the Imagine Cup where students create teams and compete internationally. Over the past few years many students have used their projects as portfolio projects or even to launch their own businesses. You can see what some of this year’s projects look like and vote for your favorite at the US Imagine Cup People’s Choice Video Gallery. Oh and there are several types of competitions in the Imagine Cup including a Game Design competition. If you don’t think that winning a major international development competition impresses prospective employers think again. Be thinking about entering next year!

Page 1 of 8 (22 items) 12345»