Forgot your password?
typodupeerror
Image

Hello World! 199

Posted by samzenpus
from the read-all-about-it dept.
stoolpigeon writes "Hitting middle age has been an interesting time. I catch myself thinking about how well kids have it today and sounding a lot like my father. One difference is while my dad was happy to teach me about sports or cars, we never spent any time knocking out code together. I think he did realize that home computers were important and I will always be grateful for the Commodore Vic-20 he brought home one day. It was a substantial purchase for our household. I spent many days copying lines of basic from magazines and saving the results to cassette tapes. In my home today we have a considerably better situation, computing wise. There are usually a couple laptops running as well as the desktop machine upstairs. My kids take for granted what I found to be amazing and new. Still, that's all pretty normal and I'd like to give them an opportunity to go deeper if they are so inclined, just like we give them opportunities to explore other skills and pursuits. With that in mind I brought a copy of Hello World! home a few weeks ago, and the response from my oldest has been surprisingly enthusiastic." Keep reading for the rest of JR's review.
Hello World! Computer Programming for Kids and Other Beginners
author Warren and Carter Sande
pages 430
publisher Manning
rating 9/10
reviewer JR Peck
ISBN 978-1933988498
summary Computer programming for kids and other beginners.
Warren Sande wanted to teach his son Carter about programming but had difficulty finding what he thought was a suitable book to guide the process. At the encouragement of Warren's wife, he and Carter decided to write their own while Carter learned to code. Warren chose Python as the language they would work in and then the two together outlined the book and created the sample applications. As the book moves into more complex territory the sample applications are the kind kids like best. They are games. As soon as my daughter saw that she would get to make her own computer games she immediately asked me if we could start working through the book together. When it has been a while since we've had a chance to crack it open, she reminds me by asking when we will get back to it. I would say that on her end it has been a complete success. It has been a great time for us as father and daughter and educational for us both.

Language choice can be quite a hot topic amongst us geeks. In the preface Warren defends his choice of Python with a bullet list I'll summarize here.
  • Python was created from the start to be easy to learn.
  • Python is free.
  • Python is open source software.
  • Python is not just a 'toy' language.
  • Python is multi-platform.
  • Warren likes Python and thinks others will like it too.

I think the list is pretty solid. The only one I think may not be directly applicable to the case it hand is the FOSS angle. Warren explains that being open means that more can be done with the software and that there is a large set of corresponding code out there freely available. A case could be made that this is also true of more closed languages. The one thing I think that could make this important is if the teacher of the material is interested in not just teaching the technical side of programming but is also interested in communicating the philosophical values of freedom. In light of the amount of closed source software and ignorance in regards to FOSS options I've seen in the public school system where I live, I think this may be more important than some think.

The rest of the reasons though I think make Python an incredibly solid choice, and above all else is the simplicity. My daughter has been able to have fun typing code into IDLE without having to get hung up with a complicated environment. The syntax is clean and simple, there is no compiling, it's very easy to just jump in and start making things happen. I think this is important, the younger the student. I was concerned that nine might be just a touch too young for this undertaking. The book itself does not make any recommendations concerning age. The more I've thought about it, the more I agree with that choice. Children vary so greatly and any number chosen would be rather arbitrary. My nine your old has done well so far, but she is already quite a book worm and leans towards more academic pursuits. An older child may struggle and there may be some that are even younger that would be fine with the material in Hello World! So rather than focus on age I think a parent needs to come at this from a perspective of ability, proclivity and experience.

In the ability area, a child is going to know how to read, work with a mouse, and type things via the keyboard. Of course the mouse is optional strictly speaking but most will probably want to use it. Some math skill would be good as well as the ability to understand the use of variables. The book tackles the necessary material in a kid friendly way but it is not dumbed down. In fact the learning potential here is huge, as one may imagine. The book is formatted with lots of visuals and fly-outs that give information on how computers operate and how programming languages deal with information processing. My daughter and I have already had interesting discussions on subjects like integers and floats. An example that draws a sine wave lead to a great teachable moment about amplitude and wave length. Then there is the constant need for approaching problem solving in a structured manner using logic. I think that taking on programming brings a wide number of benefits.

One of the features, is a little caricature of Carter that is placed throughout the book with observations that the real Carter made as he learned with his dad. These are things that a real kid noticed, and so they are likely to stand out to a child working through this book. For instance in the chapter on "Print Formatting and Strings" Carter says, "I thought the % sign was used for the modulus operator!" The book explains that Python uses context to choose how the % sign is used. There are other little cartoon characters that appear throughout the book drawing attention to important points that need to be remembered. Learning is reinforced through quizzes at the end of the chapters. The chapters are not too long but I've found that my daughter and I have to break them into sections because of her typing speed. I've been tempted at times to move things along by typing for her but I know that she will not get the same benefit from the exercise if we do it that way. I will also let errors slide by at times to allow her the opportunity to look at error messages and find the problems.

As I mentioned the book is billed as being for kids and "other beginners." I'm going to say that the primary focus is rightly on kids, and probably kids who are in grade school or maybe junior high. This is not to say that the examples and information wouldn't be great for anyone brand new to programming. There are even some nuggets for someone who has written some code but is new to Python. I am going to guess though that the average high school student will not be as taken with the cartoons and puns. I'd have loved to have written my own lunar lander game at that age though, so maybe I'm selling this short, or maybe it would be something a teen would be happy to work on away from the eyes of others, so as not to appear childish. (I may take heat for this but even as a teenage geek I was immensely worried about the perceptions of my peer group.) I think an adult that was serious about learning to program, even if they had no prior experience, would do better with heavier material. All that said, I think for children they've really hit the sweet spot and as much as marketers would like it to be so, no book can be everything to everyone.

Things start simple with print statements and loops that took me back to good old days of watching messages scroll endlessly by on display computers at Sears when I was a kid. The move towards games starts even then with text and quickly moves on to leveraging Pygame for games that utilize graphics. I think this is important as it keeps things entertaining while teaching important concepts at the same time. I have to say it is quite a bit fun to sit with my child discussing nested loops and decision trees. By the end of the book examples will have included a simple virtual pet, a downhill skiing game and a lunar lander simulation.

I've discussed a child's ability a bit but I think the last two things I mentioned must be taken into account as well. They are proclivity and experience. I've let my daughter drive the time we spend working on this. Just like the parents who project their sports dreams on their kids, I think there is a possibility to do the same with my love for all things digital. It may even be easier to do so as I view the ability to do some amount of programming to be an important life skill. The thing is I don't want to push her too hard and have her back away from it completely. This fits in with the experience part. We take it as it goes, and if things stop being fun, we will back off. I don't do this with her core disciplines from school like reading and math, but for something that is extra right now I'm not going to push. It would transition from being a joy to being work. That brings up a last and unexpected benefit from Hello World! I'm rediscovering a lot of the fun and excitement that drew me into this industry in the first place.

You can purchase Hello World! from amazon.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.

*

This discussion has been archived. No new comments can be posted.

Hello World!

Comments Filter:
  • Free alternative (Score:4, Informative)

    by johnjaydk (584895) on Monday July 13, 2009 @02:35PM (#28680445)
    There is a really nice, free alternative available in "How to think like a computer scientist". Despite the title, it's aimed regular school kids and is being used to teach a class on python programming. It's just come out in a second edition. http://openbookproject.net//thinkCSpy/ [openbookproject.net]
  • by CastrTroy (595695) on Monday July 13, 2009 @02:49PM (#28680647) Homepage
    Good point. Also, how do you really get somebody interested in programming in this day and age? I think it would be very hard to impress a kid with a "Hello World" console program with the current state of technology. I mean, when QBasic Gorillas was right up there with the most advanced games, and you could learn how to modify it yourself in a week, then you got interested really fast, because you realized that programming wasn't some kind of magic. But compare that to now, where it would take years of learning to get anything close to a current program, and it could be a difficult thing to get someone interested in the first place.
  • Re:Not Python! (Score:2, Informative)

    by lysdexia (897) on Monday July 13, 2009 @02:55PM (#28680719) Homepage

    There are several reasons usually cited for using whitespace to define code blocks. Here's a decent intro.

    http://www.diveintopython.org/getting_to_know_python/indenting_code.html

    It's one of those things: I find it completely easy and intuitive. I don't have any trouble switching between python, perl and ksh (which are what I use to get most of my work done). A decent editor (I like vim) will usually take care of auto-indenting.

    Or were you just kvetching?

  • MOD PARENT UP (Score:2, Informative)

    by starglider29a (719559) on Monday July 13, 2009 @02:57PM (#28680727)
    This isn't a Troll, it's Truth! Teaching a beginner to program in a sloppy language is like teaching them to drive a car with GPS, traction control, anti lock brakes, collision detection and rear-view camera. That's all fine until they have to know what they are doing. (Picture driving an MGB)
  • Re:Thank you! (Score:2, Informative)

    by Anonymous Coward on Monday July 13, 2009 @05:53PM (#28683279)

    My kids love Scratch from MIT

    http://scratch.mit.edu/ [mit.edu]

  • by Cillian (1003268) on Monday July 13, 2009 @08:20PM (#28684733) Homepage
    In DOS, without a memory manager, if you use pointers / arrays you have unrestricted access to every byte of RAM on the computer. Completely raw. Think about every time you get a segfault or a "Program performed an illegal operation" - that could easily be a dead system right there.

"I have more information in one place than anybody in the world." -- Jerry Pournelle, an absurd notion, apparently about the BIX BBS

Working...