Follow Slashdot blog updates by subscribing to our blog RSS feed

 



Forgot your password?
typodupeerror
×
Image

Hello World! 199

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:
  • Sounds cool but (Score:0, Insightful)

    by Anonymous Coward on Monday July 13, 2009 @02:34PM (#28680433)

    I see your reasons and they aren't too bad but I wouldn't have picked Python myself. Maybe grab something from the top 3 most popular languages Java, (C, C++, C#) or PHP. As far as popularity goes though you could definitely do worse than Python.

  • Not Python! (Score:3, Insightful)

    by Un pobre guey ( 593801 ) on Monday July 13, 2009 @02:41PM (#28680547) Homepage
    Why, Lord, Oh why are blocks defined by indentation!
  • Re:Not Python! (Score:1, Insightful)

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

    Agreed. Whitespace defining control flow makes Python a no-go language for me.

    Never heard of anything so stupid in my life... Well, except for COBOL, of course.

  • by Darkness404 ( 1287218 ) on Monday July 13, 2009 @02:57PM (#28680731)
    Scratch is great in that it teaches how to "think" like a programmer. However, ends up not really doing you a lot of good in the long run. Python is an easy to use language but it also is very "real" in that knowing Python can get you somewhere. That said, Scratch is very easy to use and you can make decent applications in there, but in the end you have effectively a "toy" language which won't really help you in the long run.
  • Re:Not Python! (Score:4, Insightful)

    by Un pobre guey ( 593801 ) on Monday July 13, 2009 @03:11PM (#28680945) Homepage
    Not just kvetching, though that is certainly part of it. I like to format code for 1) readability and 2) printability on 100 character lines. This means I do a lot of indentation that Python does not like, but has no syntactical meaning or importance.

    It is, of course, purely a matter of taste and habit. Python is certainly as good a language as any. The indentation thing is a showstopper for me, but evidently not for many other people. Also, choosing a programming language for kids is no simple matter, Python or not.
  • by Maximum Prophet ( 716608 ) on Monday July 13, 2009 @03:14PM (#28680979)
    I know people who wrote, acted and filmed their own movies on Super 8, back when "Star Wars" was first in theaters. It wasn't possible for an amateur at the time to produce anything close to what a professional could produce, but they did it anyway. I don't know how you would go about instilling the desire to build your own, they just had that desire to begin with.
  • Re:Sounds cool but (Score:3, Insightful)

    by eln ( 21727 ) on Monday July 13, 2009 @03:16PM (#28681019)
    I'm not sure I agree with Python either, but popularity of the language shouldn't really enter into the equation at this stage. What you want is a language that will be easy enough for them to pick up without being overly frustrated but powerful enough to allow them to create programs that actually do something useful. The purpose is to try and spur interest in programming, not train them for a job.

    The first language I did any programming in was Applesoft Basic, because the household computer happened to be an Apple IIgs, and it was included. After that, I was taught Pascal in high school. After that, I learned Fortran 77. Now, I do a fair amount of development work, but don't use any of those languages. And yet, learning them was not a waste of time, and in fact taught me a lot of concepts that made me a better programmer down the road with other languages.

    Of course, my experience with Fortran also gave me a deep abiding hatred for languages that enforce indentation, which may be one of the reasons I never picked up Python.
  • Re:Not Python! (Score:3, Insightful)

    by rhoderickj ( 1419627 ) on Monday July 13, 2009 @03:17PM (#28681025)
    Using whitespace to define code blocks is awkward at first. I revolted at the idea for a good year or two before finally giving it a go. Ultimately, I barely noticed. Looking back, one could just as easily say, "Why, Lord Oh why are blocks defined by braces!" Honestly, most of us are just used to braces, so anything different is bound to give rise to the knee-jerk reactions of fear and disgust. Ultimately, it is much like how people refuse to use Firefox or Opera over IE: "You mean I don't click the little E to get Internet? That's absurd!" In the end, I found that I disliked Python for other reasons, but the use of whitespace is not one of them. Even so, it's a great language and deserves a look.
  • by digitalhermit ( 113459 ) on Monday July 13, 2009 @03:21PM (#28681081) Homepage

    Back then, if you wanted to play a game you often had to copy programs from source code listings. So you had things like line validators (checksum as you entered each line) and whole sections devoted to programming. The projects, I think, were also very different. I remember building a WeFax device to decode satellite weather facsimile images. There was also the Ciarcia articles that talked about everything from building a micro-computer to assembly programming.

    Sure, there are still programming magazines, but we don't have to solve the same things we did then. Now it's just a matter of running CPAN, downloading a Flash or Java snippet, or just a #include.

    That's why I'm super grateful for the availability of Linux, free software, and the suite of compilers. I remember saving up for weeks to purchase Megamax C and later GFA BASIC. I remember borrowing a Z80 card so that I could run Borland Turbo Pascal. Now it's a quick download and every language I want is available within moments.

    The downside is that it's a lot more complex now. If I wanted to make a graphics program back then, for example on TI BASIC, it was a relatively simple matter to redefine a character set with a bunch of POKEs. Now we have to worry about initializing a window, internationalization, acceleration, etc.. Sometimes it's a bit daunting for non-professionals. Sure, there things like SDL and TCL/TK and a raft of IDEs, but still I don't think it is as easy as it was back then. (Of course, today's software does a lot more).

  • by aquatone282 ( 905179 ) on Monday July 13, 2009 @03:45PM (#28681421)

    Hand your kid a copy of The C Programming Language. If they can't handle that, they are not ready.

    Why not just chase him around the yard with a baseball bat?

    A lot more humane than your proposal.

  • by Azghoul ( 25786 ) on Monday July 13, 2009 @03:52PM (#28681525) Homepage

    I love the Lament, it's incredible.

    I'd guess (hope?) that you don't bring this book out until / unless your child shows an interest.

    But at some point you have to show them SOMETHING though, right? If you don't show them, how will they know what there is to be interested in?

  • Re:MOD PARENT UP (Score:2, Insightful)

    by Anonymous Coward on Monday July 13, 2009 @03:56PM (#28681631)

    Actually, I would say it is more akin to teaching kids how to drive in an old beater with a sloppy transmission and bad alignment. Sure, once they figure out all of the little tricks that are needed to nurse it along, they will be better drivers, but it forces them to deal with a lot of extraneous issues while they are still trying to figure out how to handle traffic laws and keep the car on the road.

  • by j-stroy ( 640921 ) on Monday July 13, 2009 @03:57PM (#28681637)
    I got into computers because I could hack the BASIC games on an Apple ][+

    Accessibility is king! But finding which thread to grab amidst the jumble of a modern GUI OS is tricky!!

    I have just started playing with "Processing" [processing.org] and it seems to have a nice mix of understandable code and super powerful libraries to take advantage of: cross platform, modern hardware and complex meta-behaviours that we might expect.

    As well, I am "sandboxing" with "Parallels" [parallels.com] on top of OSX and I have found it to be very stable. (It allows virtualization of Windows flavours, OS X & varieties of linuxen concurrently) The images can be booted Read Only or not. Creating a bulletproof, clean starting environment is what kids(and productions) need, and virtualization images might be part of this.

    I'm new to virtualization, but it feels like the future to me. Since I have taught in hands-on Lab settings I think this is a better solution for a shared use lab than straight up disk imaging... It would allow week by week, class by class customization of the Boot Image, and changes could always be rolled back.
  • Re:Not Python! (Score:1, Insightful)

    by deck ( 201035 ) on Monday July 13, 2009 @04:01PM (#28681711)

    You made an excellent example of why the second sample is better. The first is nearly impossible to read.

  • by Anonymous Coward on Monday July 13, 2009 @04:12PM (#28681853)

    You drew an analogy to parents projecting sports dreams onto their children. Do you see this as a positive phenomenon? Sure, if you value programming as the absolute best thing a child can be familiar with, this makes sense. But what if your child would naturally have favored or have talent in some other area - say physics? The activity you are pursuing with her could lead to relative underdevelopment in physics when naturally she might have become a great physicist.

    Actually, I come from a different perspective. I view programming to be a liberal art (in the classic sense) - a core building block on the path towards being a well educated, well-rounded person. Very few people just program - they write applications and libraries that do things. I don't think you are going to hamper a budding physicist by teaching her how to program at the age of 9. Instead, getting kids excited about programming is probably one of the best ways to give them the tools (mental and physical) to explore whatever it is that interests them.

  • by Dragonslicer ( 991472 ) on Monday July 13, 2009 @04:58PM (#28682505)

    Scratch is great in that it teaches how to "think" like a programmer. However, ends up not really doing you a lot of good in the long run. Python is an easy to use language but it also is very "real" in that knowing Python can get you somewhere. That said, Scratch is very easy to use and you can make decent applications in there, but in the end you have effectively a "toy" language which won't really help you in the long run.

    How old is the child that you're giving this to? I'm not a huge fan of Python, but I've seen quite a few languages that are a lot worse (or just plain harder for kids to play with, such as assembly), so I'd say my opinion on it is pretty neutral. Having said that, what are the odds that Python will still be a "hot" language in 15-20 years, when the kid will at all care about "getting somewhere" or "the long run"? 20 years ago, how many people would have said that Java would be popular today (yes, I am aware of when Java was first created; that's kinda the point)? My first programming language was Commodore Basic when I was about 5, followed closely by GWBasic. Neither of those are particularly useful these days, but they still served the purpose of getting me interested in programming and ultimately to a computer science degree.

  • by RegularFry ( 137639 ) on Monday July 13, 2009 @04:59PM (#28682529)

    The problem is, they're all broken. It's far harder than it should be to get anything meaningful done reliably and well in CSS and HTML, even if the specs were implemented properly. Javascript is hamstrung by crappy implementations with crappily pointless differences between them, and a crappy standard library. Don't get me started on the DOM API, that just makes me cry.

    Really, the only advantage that HTML/CSS/Javascript has over Python is that every PC has an interpreter present out of the box, but given that if you're doing JS there's few tools better than Firebug, you've got installation to do anyway and you might as well just suck it up.

  • Re:Not Python! (Score:2, Insightful)

    by rhoderickj ( 1419627 ) on Monday July 13, 2009 @07:12PM (#28684129)

    Any language that depends on whitespace to delimit blocks of code (e.g., the code belonging to an IF or FOR loop) is poorly defined. Whitespace exists for visual depictions of code, not internal.

    And that's a perfectly valid argument, but it is still just a concept imposed solely because of previous standards. Technically speaking, whitespace is just another character, so there is no reason to conceptually differentiate it from a brace. A compiler sees whitespace just as it sees braces, but we have traditionally not parsed that whitespace. Python simply uses that whitespace rather than discarding it. On a site note, I work with Java for a living and I often find myself wishing my co-workers would effectively use whitespace. It's amazing how some people honestly don't see anything wrong with code that is unreadable by humans. At least Python makes this type of code much less likely.

  • by thenextstevejobs ( 1586847 ) on Monday July 13, 2009 @07:26PM (#28684249)

    In fact, if you do this to C code, you can run it through "indent" and it will come out clearly indented for you. It sounds like such a program is impossible for python because it depends so much on how things are indented to start with.

    Yes, it's impossible in Python. And also unneccessary.

    Let's see how smart you are when you get someone's code that isn't so clean in the whitespace department, and won't run anymore once you've opened it and saved it...

    The whitespace requirement of Python sucks. I don't like programs whose behaviors are dictated by characters that I can't see and that aren't standard across editors.

    If you're so into white space, be a man and use Whitespace [wikipedia.org].

    I'm a fan of perl, Ruby, and bash when it comes to scripting.

  • by blahplusplus ( 757119 ) on Monday July 13, 2009 @07:39PM (#28684367)

    " Shouldn't you be trying to emulate your father by moving beyond your comfort zone and bringing home something that will inspire your kids to pursue their own interests rather than yours?"

    This is where I disagree somewhat, there are certain subjects that you would love to have been forced to take at a young age but you were not long lived enough and too new to the world to realize their importance.

    My relative forced her kids all to go to music school and many ended up becoming musicians out of their own free will, even though early going they weren't so enthused but as they grew up they gained a lot of respect and appreciation for music. Even if they do not get paid professionally to play their instruments they still enjoy it and believe it was an enriching experience that they will pass onto their own children.

    Now the same is not true for all children obviously, some children would probably resent it but that's the risk you take as a parent for having lived longer and having more foresight of vision.

    The idea that disciplining your kids into activities they may (at the time) not be interested is somehow immoral or wrong is incorrect, since kids do not have the life experience to make judgements and reflections about the things they *Regret* their parents *didn't teach them* in hindsight. I'm sure many of us have had such occasions wishing our parents were better or were more clued in to their own wisdom, instead of letting the child (who has no lifetime of experiences and therefore foresight and judgement) do whatever it wants.

    There's a balance between freedom, discipline, responsbility and enrichment and I think parents should take that part of themselves back as *the parent*.

"What man has done, man can aspire to do." -- Jerry Pournelle, about space flight

Working...