Please create an account to participate in the Slashdot moderation system

 



Forgot your password?
typodupeerror
×
Education

Best Introduction To Programming For Bright 11-14-Year-Olds? 962

firthisaword writes "I will be teaching an enrichment programming course to 11-14 year old gifted children in the Spring. It is meant as an introduction to very basic programming paradigms (conditions, variables, loops, etc.), but the kids will invariably have a mix of experience in dealing with computers and programming. The question: Which programming language would be best for starting these kids off on? I am tempted by QBasic which I remember from my early days — it is straightforward and fast, if antiquated and barely supported under XP. Others have suggested Pascal which was conceived as an instructional pseudocode language. Does anyone have experience in that age range? Anything you would recommend? And as a P.S: Out of the innumerable little puzzles/programs/tasks that novice programmers get introduced to such as Fibonacci numbers, primes or binary calculators, which was the most fun and which one taught you the most?" A few years ago, a reader asked a similar but more general question, and several questions have focused on how to introduce kids to programming. Would you do anything different in teaching kids identified as academically advanced?
This discussion has been archived. No new comments can be posted.

Best Introduction To Programming For Bright 11-14-Year-Olds?

Comments Filter:
  • Functional programming is making a comeback- it's going to be to the 2010s what OOPs was to the 1990s. I'd suggest these, and make recursive loops a major sticking point. Dr Dobbs has a nice article on why [ddj.com] these functional languages make excellent methods for taking advantage of multi-core processors.
  • LOGO! (Score:5, Insightful)

    by mamono ( 706685 ) on Wednesday December 10, 2008 @07:44PM (#26067761)
    It is partially in jest, but LOGO was created to teach kids how to program. Real world wise, though, I would say C or PHP. They are both currently used, relatively easy to learn and require no cost to get started.
  • Python (Score:5, Insightful)

    by EvanED ( 569694 ) <{evaned} {at} {gmail.com}> on Wednesday December 10, 2008 @07:44PM (#26067767)

    See subject.

    I started with QBASIC, and I would rather recommend against that. Things like real functions (as opposed to GOSUB) and such, even though you can do them in QBASIC, I didn't see for years.

  • TI-85 (Score:1, Insightful)

    by Brigadier ( 12956 ) on Wednesday December 10, 2008 @07:45PM (#26067773)

    Always enjoyed programming teh old TI-85 calculators. Not sure if yrou still required to use them in school, it allows simple graphical stuff, plus it is mobile which woudl appeal to a kid.

    http://tibasic.wikia.com/wiki/Main_Page [wikia.com]

  • DO NOT (Score:4, Insightful)

    by MindlessAutomata ( 1282944 ) on Wednesday December 10, 2008 @07:45PM (#26067787)

    DO NOT, I repeat DO NOT do what many comp sci departments and high schools do, and that is "begin with Visual Basic".

    NO! NO NO NO NO NO! Okay, so they learn about variables and shit, but, just, NO. Terrible programming practices and weird little things where commenting is done with apostrophes and other typical retarded shit is what you'll end up teaching them.

    Visual Basic is OK for a quick and dirty Windows program. But if you want to teach the basics of what "real" programming is, I wouldn't recommend VB.

  • Lego Mindstorm (Score:5, Insightful)

    by Dynedain ( 141758 ) <slashdot2 AT anthonymclin DOT com> on Wednesday December 10, 2008 @07:51PM (#26067855) Homepage

    If you're trying to introduce the concepts of looping, iterations, etc and don't want to get hung up on the details of the language, I highly recommend the Lego Mindstorm kits. They have a flow-chart programming interface that I had great success introducing programming to my 11-13 year old cousins, and if I remember correctly, they also have a lower level interface to let you start writing your own functions.

    For kids this age, nothing is better/cooler at showing them the basics of programming than something that gives a physical response. Loops, conditions, make so much more sense when trying to figure out how to keep your robot from running off the edge of the table.

    Tangible real-world feedback, and a sense of real accomplishment. If you just give them abstract languagues for the sake of language, they get disappointed they can't just whip up the next Madden game. Besides, they probably all already have Legos at home, and a Mindstorm kit is something they can easily get at home, which probably won't happen with Pascal compilers or Basic editors.

  • Re:PHP? (Score:5, Insightful)

    by moderatorrater ( 1095745 ) on Wednesday December 10, 2008 @07:54PM (#26067895)
    PHP or C are ideal for a number of reasons. Enforcing OO from the outset is a terrible way to teach programming, so java should be right out. Functional languages are fun and interesting, but unless a major paradigm shift happens in the next decade, it's not going to be as useful.

    With a procedural language, you get the benefit of showing them with just a few lines of code what you can do. The basics of programming can all be taught from the outset including arrays, loops, conditionals, functions w/default parameters, etc.

    As they learn more, they'll have a natural step up to OO with C++ or php's built in OO. With C, they get the benefit of compiling code and having an avenue for more sophisticated programs, graphics libraries, etc. With PHP, they'll be able to set up web servers and use that as a stepping stone to html, servers, and javascript.

    Neither language needs a large investment to start programming with in terms of money or teaching, both languages are widely used, and both languages give them a clear avenue to more advanced topics.
  • by fuzzyfuzzyfungus ( 1223518 ) on Wednesday December 10, 2008 @07:55PM (#26067911) Journal
    Huh, funny. I could have sworn that I'd heard of some other little outfit that let you download free source code and programming tools and stuff.

    I'm not going to disagree with you on MS's offerings; but you make it sound like they are an oasis of free stuff in a sea of unaffordable tools. With the exception of the various outfits that sell pro tools for various languages and scenarios, is there any major programming language(or, for that matter, many minor ones) for which you cannot get the necessary free stuff to get started?
  • Re:Assembly (Score:3, Insightful)

    by Ethanol-fueled ( 1125189 ) * on Wednesday December 10, 2008 @07:56PM (#26067929) Homepage Journal
    I'm pretty sure that guy was kidding. As far as calculators go, wouldn't you think that sum = num1 + num2; is much more intuitive than the equivalent assembler instructions? I believe the most useful languages for rudimentary procedural programming are C or C++ (for bare basics C++ because cout
    As far as assignments go, It always bothered me that things that made a computer fun and more interactive were never taught at the early level. For example, using the alarm escape sequence \a in conjunction with an infinite loop, or to make the program beep whenever something happens etc.
  • simple: use perl (Score:5, Insightful)

    by petes_PoV ( 912422 ) on Wednesday December 10, 2008 @07:56PM (#26067931)
    You want a language where it's possible to start producing results with very little initial effort. That precludes anything which uses or requires an IDE - just learning to navigate that is a morning of classes with nothing to show for the effort - a definite demotivator. You also want a language that has a printable form - so they can have something tangible to work with - not merely a bunch of files.

    If these children really are the gifted ones you say, they'll already have the basic concepts of an editor: create, change, save, so they can start creating programs much sooner.

    You also want them to become familiar with the basic syntax od computer languages - most of which are quite similar and look a lot like Perl's syntax.

    Perl also gives those who wish, the ability to develop further, after the classes finish.The large amount of freely available documentation and examples on the internet will help then learn from properly written code from other people.

  • HTML (Score:4, Insightful)

    by grege1 ( 1065244 ) on Wednesday December 10, 2008 @07:57PM (#26067937)
    These are kids of the 21st century. Start with simple web pages in HTML, then add picture loading, tables, etc. If they take to it, then basic javascript. Start by using a text editor then later introduce graphical tools. All free and easy to implement.
  • C, please (Score:2, Insightful)

    by geekgirlandrea ( 1148779 ) <andrea+slashdot@persephoneslair.org> on Wednesday December 10, 2008 @07:59PM (#26067963) Homepage

    Please keep them away from any form of BASIC. The last thing this world needs is even more programmers who couldn't understand pointers or recursion if their lives depended on it. Start them with C, and then let them try high-level stuff once they understand what's going on under the hood. No, it really isn't too difficult. I did my first non-trivial programming and learned C and x86 assembler around that age.

  • JavaScript (Score:5, Insightful)

    by Cyrano de Maniac ( 60961 ) on Wednesday December 10, 2008 @08:00PM (#26067975)

    I hate to say this since I don't even know the language (heck I'm barely competent with HTML) and came up through GW-BASIC, Turbo Pascal, assembly, FORTRAN, C, Tcl, C++, Perl, and some others I'm sure I'm overlooking, but...

    JavaScript

    First, it's nominally C-like, so it gives them exposure that will help them with a large variety of other languages (e.g. C, Pascal, C++, Java).

    Second, it's available to be used pretty much anywhere the kids have access to a computer. At home. At school. At a friends house where they can show off their newfound coolness. Don't underestimate this, because it's very important that they have access to the necessary programming tools in their idle time at home and elsewhere. It's also important because they don't need to learn how to use a compiler, linker, and all those other tool distractions that will get in the way of understanding programming itself.

    Finally, it's useful in a context they likely already somewhat understand -- web pages. Fibonacci sequences and prime number sieves and such are all wonderful, but an environment that allows them to build something a bit more interactive and, lets face it, relevant to their day-to-day life, will inspire some portion of them to continue the pursuit. Granted, I got a lot of personal satisfaction out of writing BASIC programs to print "x" characters in a sine wave scrolling up the screen, but somehow I think the bar has been raised for today's kids' expectations of what a computer can do.

  • by WarJolt ( 990309 ) on Wednesday December 10, 2008 @08:18PM (#26068191)

    I always wonder why colleges start out teaching Java first. Procedure based languages are easier. You learn
    2 + 2 = 4
    before you learn
    a^2 + b^2 = c^2.

    You can learn the basics in any language. The syntax is all very similar. Lets look at the difference.
    in C explain a routine.
    int main(int argc, char *argv[]){
        return 0;
    }
    In java explain a class and a routine. Plus the string class is more complicated than a char * and an int.

    class javaprog
    {
                    public static void main(String args[])
                    {
                    }

    }

    Always start with the fundamentals.
    You should know what pointers are and what memory is before you learn what a class is.

    A programmer needs to know why if he allocates 2 million empty string classes why his memory gets chewed up. To a C programmer the answer is obvious.
    Fundamentals! Fundamentals! Fundamentals!

  • Re:JavaScript (Score:1, Insightful)

    by nobodylocalhost ( 1343981 ) on Wednesday December 10, 2008 @08:23PM (#26068247)

    No, just no. You ever debugged js before? I am sure those kids will make mistakes, but finding that one typo in 2000 lines of code using js console output is a nightmare. Let's not even get into the js cross browser compatibility issues. Also, unless you are using chrome exclusively, odds are your program will be very very slow and eats tons of memory.

  • by dlcarrol ( 712729 ) on Wednesday December 10, 2008 @08:30PM (#26068333)
    I'll get modded to oblivion, but I'm leaving others to answer the question actually asked

    The answer is a sound education from ages 3 to 10, not a good text. There's so much of a push-- personally and in our educational systems, to train ourselves in whatever the hot job is for today rather than securing an education that matures one into the kind of person that can span any discipline with ease.

    Looking back to Stroustroup's(sp) article yesterday, the reason there are fewer good programmers is because fewer and fewer are actually -educated- in how to think, much less higher math. If you want to teach your kid(s) useful/fun skills, teach them the liberal arts (in the classical sense); once well understood, picking up a computer language (grammar + math) will be as easy as anything else. I freely grant that a good text will eventually be necessary, but if your child is not chewing your arm off for some kind of resource on their own-- be it chemistry, astronomy, CS, mechanics, or what have you, you've missed something in their earlier education

    /rant
  • Comment removed (Score:4, Insightful)

    by account_deleted ( 4530225 ) on Wednesday December 10, 2008 @08:31PM (#26068349)
    Comment removed based on user account deletion
  • Re:Lua? (Score:2, Insightful)

    by shirro ( 17185 ) on Wednesday December 10, 2008 @08:32PM (#26068367) Homepage

    Oh, and if not lua, then javascript.

    It is also a modern language. You can learn functional programming - it has closures, map and reduce functions (in 1.8) etc.

    The performance is getting good with V8, tracemonkey and squirrelfish, and it is embedded in the single most useful non-game app that any teenager uses - the browser.

    Pick up some c as well. Always handy, particularly in a *nix platform.

  • Algebra I (Score:3, Insightful)

    by mosel-saar-ruwer ( 732341 ) on Wednesday December 10, 2008 @08:34PM (#26068377)

    I wouldn't want to try to teach "programming" to any child who hadn't had Algebra I [and preferably Algebra II].

    I suppose that "programming" could serve as an introduction to Algebra I, but my gut tells me that that's the wrong way to go about it.
  • Re:I fully agree (Score:3, Insightful)

    by DragonWriter ( 970822 ) on Wednesday December 10, 2008 @08:35PM (#26068383)

    It's about knowing what is going on inside computers. [...] Definitely stay away from languages like BASIC.

    I don't get endorsing C and telling people to stay away from BASIC when its "about knowing what is going on inside computers". Unstructured, old-school BASIC is, in many ways, a lot closer conceptually to what goes on inside computers than any structured programming language, C certainly included.

  • by tknd ( 979052 ) on Wednesday December 10, 2008 @08:36PM (#26068401)

    The problem with most introductory programming courses is that they drop you in the deep end and expect the student to eventually figure out how to stay alive based on all the tools they start throwing at you. And I'll be honest, I don't have an answer as to what programming language you should use or if it even matters. Let me explain.

    I first started learning programming at the age of 14 (first year in high school). So I might have been one of these kids. Prior to that I knew how to write html and make webpages. That part was easy because there is no programming there. But when I got to my introductory programming course taught in C/C++ at the time, I didn't feel equipped as a student to tackle the problems presented. For example one of the tougher problems in the course was printing a diamond (ascii art) of stars based on a given number as input. So if they provided you with an input of 5, that meant at the widest point, the diamond would be 5 consecutive * characters with the previous and next lines being 3 consecutive * characters followed padded by one space on each end, and finally the top and bottom lines having one * with 2 spaces padding the left and right sides. Keep in mind that by this point, as a student, the most I had learned was basic algebra and perhaps a bit of geometry. The real heavy math/science courses were to be taught later in high school involving trigonometry, calculus, and physics.

    Continuing on with the story, most students in the introductory programming class failed at this simple task of printing a diamond to the screen. It wasn't because of their lack of knowledge regarding programming, but their lack of knowledge regarding problem solving skills and the application of math. Had the teacher reviewed the problem at hand, by examining the necessary parts (calculations involved) on a black or whiteboard, I think all students could have implemented a solution. But the place where students were struggling was finding A solution. They would start writing 'for' loops knowing that this was a test of how well you understood 'for' loops without having a clue of why they needed the loops or what the loops were going to do.

    So if you want your students to succeed, the language of choice will be the least of your problems since you are not bothering to teach high level programming paradigms (OO, functional, logic etc). The bigger problem will be how to teach the students to apply what they already know in a fashion they've never seen.

  • Re:Assembly (Score:3, Insightful)

    by riceboy50 ( 631755 ) on Wednesday December 10, 2008 @08:56PM (#26068593)
    You jest, but that is actually a fabulous idea because then you get a little understanding of how computers work at the same time without having to unlearn "magic" later.
  • Re:Algebra I (Score:5, Insightful)

    by caerwyn ( 38056 ) on Wednesday December 10, 2008 @09:03PM (#26068669)

    Why? I taught myself BASIC at 7 with an Apple IIgs' built in interpreter- I was a good 5 years from my first Algebra I class at that point.

    Algebra is relevant for the manipulation of expressions with variables, but is completely unnecessary for the *evaluation* of expressions with variables, which is what programming really is. Higher math is generally required for complex algorithm creation, but for introductory programming assignments it's really unnecessary.

  • by Tom ( 822 ) on Wednesday December 10, 2008 @09:06PM (#26068695) Homepage Journal

    Whatever you do, never ever ever teach someone BASIC. Not QBASIC and not any other flavour. It was my first programming language, too, and it took almost ten years and a study of computer science to finally get all those bad habits you acquire in BASIC out of my system. DO NOT POISON INNOCENTS WITH BASIC.

    You can consider Pascal, which after all was designed specifically as a teaching language. There's also Oberon if you want to go more into OO and make sure that the language they learn on will never be used in an actual real-world context. :-)

    Java, Mono, C++, etc will probably all be suggested, but I wouldn't consider them suitable for beginners.

  • by soundguy ( 415780 ) on Wednesday December 10, 2008 @09:07PM (#26068701) Homepage

    I started with line-numbered basic on a TI994A. To this day, I don't think I have ever seen a simpler and more perfect beginner's manual than the one included with that machine. I was programming sprite animation with conditionals and loops within hours of opening the manual. Since the TI994A didn't have a C compiler available, I moved on to the assembler, which it DID have. Never got very good with it but it definitely taught me the low-level nuts & bolts of computing. After an eventual transition to x86 hardware, I learned a little C++ to help me manage my servers but backslid to Perl for day-to-day GUI web stuff.

    Considering how much of computing has shifted to the client-server model lately, I don't think starting out with simple html & cgi would be inappropriate. For a 2nd or 3rd project, I highly recommend giving the kids some thumbnail images of fruit and having them build a CGI slot machine. That's how I learned Perl. It's a great base project to build on too, and you can teach them version naming conventions along the way. Once they master the basic mechanism, you can add flat-file I/O to keep track of winnings and results, and then finally convert the whole thing over to a simple MySQL database with the images stored as blobs. (OK, that last bit might be a little over the top for first-week noobs :)

  • Re:HTML (Score:3, Insightful)

    by Red Flayer ( 890720 ) on Wednesday December 10, 2008 @09:10PM (#26068721) Journal
    But that's not programming at all... HTML is a translator, that's it.

    Using HTML to teach programming is like using a French-English dictionary to try and get laid in Paris.

    You might be teaching them the grammar and words, but it's not going to enable them to programmatically solve a problem.

    I'd start by demonstrating a finished product that can be programmed using all the techniques you'll teach in the course, and work backwards to teach them the programming logic and constructs. By the end of the course, they should be able to code something similar to the product you demonstrated.

    I'd suggest that at the end of the course, they have a large "thesis" project they've completed... it's the sense of accomplishment that'll drive some of them to continue their studies.
  • Scratch (Score:5, Insightful)

    by Jimmy King ( 828214 ) on Wednesday December 10, 2008 @09:10PM (#26068725) Homepage Journal

    I was just looking into this recently for my nephew. Scratch [mit.edu] looks really cool. I downloaded it and played for a few minutes and e-mailed my sister to tell her to install it for her kid. She hasn't done it yet, so I don't know if it was as good of an idea as I thought, but it sure looks cool.

    It has color coded, drag and drop logic stuff that interlock like a puzzle so that kids can see how it fits together. It takes seconds to get a little animated sprite "walking" and do the fancy, whiz bang, pretty stuff today's kids will be wanting to see right away.

  • by SuperKendall ( 25149 ) on Wednesday December 10, 2008 @09:18PM (#26068825)

    I know that I am piggybacking but I thought that the educational world had moved on from the terms bright, gifted and related words.

    Indeed, the educational world has moved well away from those terms.

    The rest of us recognize the realize the reality that some people are in fact academically gifted and prefer to recognize talent instead of trying as hard as possible to homogenize it.

  • by Simulacrus ( 1003107 ) on Wednesday December 10, 2008 @09:29PM (#26068963)
    And for even younger kids, eToys: http://www.squeakland.org/ [squeakland.org]
  • by raddan ( 519638 ) on Wednesday December 10, 2008 @09:46PM (#26069135)
    JavaScript will give young programmers the immediate feedback that I think many of us found so addictive back in the early days. Lots of comments here talk about "kids these days"; about how they're somehow dumber than us for not jumping into C right away.

    But I think we forget: modern computers are extremely complicated. There wasn't much that could go wrong on my old TI (OK, there wasn't much to go right, either, but I digress). How many of you out there have really written something in C? I don't mean something academic, like some command-line thing that sorts randomly-generated numbers into a tree. I mean a program that actually _does_ something. I have, and it's a bitch, let alone getting it to run on both, say, Linux and BSD, which are both, in theory, POSIX.

    Kids need feedback. HTML + Javascript gives them that, right away. They can run it anywhere they get a web browser. They don't need a development environment. They don't even need a server! Or makefiles! Or autoconf! And it's fun.

    Another language, which is really underappreciated in my mind, is AutoIt! [autoitscript.com] Yeah, it's hodgepodge, and doesn't conform to your paradigm-du-jour, but it will give young programmers some idea of how you put together a GUI app. And heck, it's useful! We use it for all kinds of automation of stupid Windows apps where I work, and it's so damn addictive to play with it makes me forget how much I loathe my Windows machine...
  • MIT's Scratch (Score:2, Insightful)

    by Dennis G. Jerz ( 473507 ) <blog@jerz.setonhill.eBLUEdu minus berry> on Wednesday December 10, 2008 @09:57PM (#26069271) Homepage

    Someone in another thread noted that kids who haven't yet had Algebra may not be ready for complex programming. I agree. If you're not actually planning to prepare these kids for life as code monkeys, and you're just trying to introduce them to procedural thinking, I'd suggest MIT's Scratch.

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

    It's sort of like Flash for kids, with a modular interface so that kids never see an error message. If you try to put a number in a slot where the syntax demands an operator, the number will just bounce out of the line -- it won't fit. All the elements have shapes that plug in only a certain way. The Scratch website has screencast tutorials (with cute kids narrating them) and a community for sharing creations.

    Unlike Mindstorms, Scratch is free.

    I've taught my own son when he was 9 and 10, using Just BASIC (we created a simple Choose Your Own Adventure story) and Scratch (he created a catch-and-avoid game).

    I have also taught college English majors the fundamentals of computer programming, using Inform 7 (a relatively new developing environment for creating classic text-adventure games).

    I should think that most kids in your target age group would get very excited by making their own mods, which could be a gateway into teaching them actual coding.

  • by ClassMyAss ( 976281 ) on Wednesday December 10, 2008 @10:01PM (#26069305) Homepage
    If you want to go the Java route, start with Processing [processing.org] instead of pure Java if you really want things to be easy - things like drawing take no work ("line(10,10,100,150);" on a line by itself in an empty Processing file will draw a line, just like any extreme beginner would expect...), and it's very easy to transition to real Java later on (and also possible to use it within Processing, for that matter, so you lose very little). There's also lots of 3D stuff and libraries for advanced students, and as an additional bonus you don't have to hit kids with something as complex as Eclipse or Netbeans when they're just trying to write "Hello, World!".
  • Re:Lego Mindstorm (Score:2, Insightful)

    by spopepro ( 1302967 ) on Wednesday December 10, 2008 @10:03PM (#26069329)
    I second Mindstorms. As an educator, it does allow for easier access to different modalities. Also, you can solve authentic problems, (get the robot to rescue a ball out of a maze) as opposed to contrived programming exercises. The programming environment is intuitive, and flexible and a great introduction. I use NXT kits in my high school math classroom with kids who know C++, and kids who have no computer access outside of school with great success. Also, if you have more advanced students, the NXT brick also supports ROBOTC. So if so compelled, you can have your super-driven students working in C and other students getting their feet wet with the legos drag and drop software. More modalities + differentiated instruction = good education. Regardless of the level of incoming student.
  • BASIC (Score:1, Insightful)

    by Anonymous Coward on Wednesday December 10, 2008 @10:15PM (#26069441)

    At the risk of getting crucified for making this suggestion I say use BASIC as the introductory programming language. There are free open source versions available and you could even create a bootable mini-distribution of GNU/Linux with just enough to provide an environment to learn BASIC.

    All the primary language constructs are supported and it is easy to implement show how the same problem can be solved using a variety of these constructs.

    After all, you are not teaching computer science theory to these students. And learning a language their fathers probably started out on many years ago might spark a few dinner table conversations.

  • by Anonymous Coward on Wednesday December 10, 2008 @10:31PM (#26069571)

    11-14 year old kids want to write video games, or at least, that's what I wanted to do at that age. Python is simple enough that it gives a very good introduction to procedural and object oriented programming. If you couple that with the Pyglet, Python makes it very easy to put together video games.

    You should take a look at http://pyweek.org for hundreds of examples of Python games (written in Pyglet or Pygame) that were put together in 1 week.

  • Re:Lego Mindstorm (Score:1, Insightful)

    by Anonymous Coward on Wednesday December 10, 2008 @10:38PM (#26069629)

    One step up over Mindstorms is the producer, National Instrument's LabVIEW. I is graphical and is a commonly used system in Industry.

    The FIRST robotics program is a good place to go, It is a robotic competition run through high schools. I started at 16 and now have a basic understanding of c/c++ and am learning LabVIEW along with several Freshmen and Juniors.

    With FIRST the programming team actually learns how to write code for the robot, involving everything from drive code, to sensor inputs, and writing autonomous code

  • Re:PHP? (Score:3, Insightful)

    by lwsimon ( 724555 ) <lyndsy@lyndsysimon.com> on Wednesday December 10, 2008 @11:01PM (#26069827) Homepage Journal

    Like anyone on Slashdot is going to take advice from someone who calls PHP a "pathetic insult to programming", then holds on VB.net as a paragon of virtue?

  • by Firehed ( 942385 ) on Wednesday December 10, 2008 @11:11PM (#26069907) Homepage

    Talent doesn't disappear due to a bad system, though it certainly may be wasted in such an environment. Either you're able to pick up on new concepts and ideas easily or you're not. And if you are able (as the best and brightest tend to be), you'll pick it up somewhere. With the entire knowledge of the human race seconds away, having teachers cram facts down your throat isn't the way that the gifted will be getting ahead. If they don't understand something, they'll look for the answer, and learn along the way.

    It's much more a matter of motivation than one of the learning environment.

    (having said that, I'll definitely agree with anyone claiming that our educational system is in desperate need of an overhaul)

  • Re:Assembly (Score:2, Insightful)

    by cong06 ( 1000177 ) on Thursday December 11, 2008 @12:22AM (#26070575)

    I posted this before in a very similar topic.

    One of the main points of schooling is to get people to find what they're good at. To get them interested in what they COULD be good at. Contrary to popular belief school isn't only about learning hard facts.

    I recognize that there are quite a few things that carry with you, though, too, so I see why many slashdotters seem to recommend assembly to "weed" out the poor programmers. I have seen to many fellow students simply turn up their noes at Science and math simply because they've been taught to be scared of it.

    Please...recognized that assembly would not encourage people to learn programming as much as you wish it would.

  • Re:LOGO! (Score:4, Insightful)

    by laird ( 2705 ) <lairdp@@@gmail...com> on Thursday December 11, 2008 @12:34AM (#26070697) Journal

    I'll second this. While Logo has a reputation as a limited language, it's actually as expressive as Lisp, which is to say that it's a more powerful language than most, though teachers tend not to go too far with it.

    Back when I taught kids programming, I found that the best languages were the ones that supported iterative development so that users could easily try ideas. For this, Logo is perfect. Once kids learn Logo, they know about variables, scope, functions with parameters and return values, recursion, closures, etc., all of which apply to any civilized language.

    There more modern instructional language options, such as Squeak/Scratch (http://scratch.mit.edu/) and OpenStarLogoTNG (http://education.mit.edu/starlogo-tng/) that are really fun as well. They are (IMO) a bit too complex for very young programmers (I taught 5-6 year olds simple Logo programming, as it's designed to be super-approachable for kids, but I think that a kid would have to be 7-8 to tackle those).

  • Re:PHP? (Score:4, Insightful)

    by Samah ( 729132 ) on Thursday December 11, 2008 @01:39AM (#26071185)

    To be honest, it's the algorithms and paradigms that are the most important thing to teach. The language is merely the tool. I would recommend some form of procedural BASIC (eg. QBasic, GWBasic) since the syntax is very clear and concise. No fancy braces or semicolons for a new person to worry about.

    Which of the following examples would be more understandable for someone who's barely even heard of programming?

    if foo = "bar" then print "Hello world!"

    if(foo.equals("bar")) System.out.println("Hello world!");

    if(foo=="bar") Console.WriteLine("Hello world!");

    if(strcmp(foo,"bar")==0) printf("Hello world!\n");

    if($foo eq "bar") { print("Hello world!\n"); }

  • Re:JavaScript (Score:4, Insightful)

    by cathector ( 972646 ) on Thursday December 11, 2008 @02:05AM (#26071333)

    wait, "debugging" at this level of learning should absolutely be on the order of Print Statements sprinkled throughout the code, which alert() in javascript will satisfy just fine.

    i recommend javascript as the best choice here as well.

    here's what i see as JS's big wins for young, potential coders:

    * it runs anywhere.
        this means the code you write at home is going to run identically at school.
        now, other languages also do this, but:

    * there's no intermediate steps between editing the source and seeing it run.
        no compiler, no server, no runtime library or environment other than a browser.

    * you can share your work in a web page!
        pretty cool.

    * it's a very forgiving language.

  • Re:Assembly (Score:4, Insightful)

    by Iron Condor ( 964856 ) on Thursday December 11, 2008 @04:54AM (#26072241)

    Umm yeah ok. But if you do sum = num1 + num2, sum _does_ equal num1+num2 after the assignment. I am not sure what you're getting at. Perhaps you meant the expression x = x + 1 is counter-intuitive unless you understand the '=' operator means 'assign to x'.

    No, after the assignment the symbol "sum" DOES NOT equal num1+num2.

    The algebraic equation X=Y+5 is a description of reality. It does not matter what Y is, X is five more. The computer statement "X=Y+5" is an instruction to a machine to perform a certain operation once. It is not a statement of fact and if it were a true description of reality it would lose its validity as soon as the value of "Y" changes.

    Algebra:
    X = Y+5
    Y = 5

    What is X?
    Y = 6

    What is X now?

    [pseudo]Computers:
    X = Y+5 ;
    (possibly an error because Y isn't declared/defined yet. Depends on your language)
    Y = 5
    print X ;
    Do you really expect 10 here?
    Y = 6
    print X ;
    Do you really expect X to have a different value now?

    The fact that you imagine that the statement "Y=X+5" means the same in programming as in algebra indicates that you have a rather weak grasp of at least one of the two.

    On the other hand "take a value; add another value to it" is an operation that is the same in both cases.

    [pseudo-code; really PostScript in this case)
    5 %
    here's a number
    6 % here's another number
    + % add those two numbers.

    At no point is there an expectation that this sum will change if some "variable Y" changes. This is a lot closer to the way kids learn addition: "You have five apples, you receive six more apples, how many do you have total?"

    The point is not whether one uses letters to refer to numbers, it is whether one expresses what one expects the computer to do. There's no conceptual difference between

    [pseudocode, vaguely scheme this time]:
    (sum 5 6 7)

    or
    (sum a b c)

    in both cases what is expressed is the sum of a number of values. Which the string "X=Y+5" doesn't necessarily express.

  • Re:Assembly (Score:3, Insightful)

    by Workaphobia ( 931620 ) on Thursday December 11, 2008 @05:27AM (#26072425) Journal

    Both you and the AC GP missed the point - the problem is that of the imperative programming paradigm versus declarative or something with a single-assignment store.

    i = i + 1;

    This is a contradiction in algebra, but just fine in imperative languages. You'd have to do a renaming that distinguishes between the old value of i and the new one for it to work like algebra.

  • Re:PHP? (Score:3, Insightful)

    by terjeber ( 856226 ) on Thursday December 11, 2008 @08:06AM (#26073175)

    what other language could have done a better job in easily developping web pages for the past 10 years

    Honestly, I am not too concerned with "hastily" doing anything at all. In my experience things done hastily is usually done badly. Are there better strategies for putting applications on the web than PHP. Absolutely, various Java technologies for one. Ruby (which has been available for that long, but not with Rails) is another.

    The problem is that hastily done stuff usually ends up with a much longer life span than was intended when it was hastily put together, and in the long run the cost of ownership is significanly higher than would have been the case if it was built a little less hastily from the get-go.

    I have seen a lot of what has hastily been put together with PHP and MySQL (for example) and it is usually put together by people who don't even know what normalized means. Friends of mine have twice walked away from lucurative contracts because they were not allowed to do the only sane thing, which wast throw out everything that was written and start from scratch.

    Enabling "developers" with tools that encourage hastily throwing things together means that a lot of people who should never be allowed to write SQL are given tasks they are not qualified for.

  • by Justin Hopewell ( 1260242 ) on Thursday December 11, 2008 @11:00AM (#26074853)
    I skipped kindergarden and my parents and myself ended up regretting it later. I was almost always the youngest in the class, and some of my classmates resented me for having the "nerve" to be smart enough to start regular grade school early. I got so tired of getting picked on for making good grades, I stopped trying as hard and my grades suffered because of it. I also became lazy, but I'm not sure if that was a result of all of that, or just because I have a natural aversion to work.
  • Re:PHP? (Score:3, Insightful)

    by shutdown -p now ( 807394 ) on Thursday December 11, 2008 @11:06AM (#26074951) Journal

    Actually, VB.NET is sort of okay (it's little more than C# with a verbose syntax +/- a few extra minor features). Most of the flak that VB gets is from the days of VB6 and before, where it was indeed a monstrosity, QBASIC++ (I speak this as one who actually developed production apps in VB6).

  • Re:JavaScript (Score:1, Insightful)

    by Anonymous Coward on Thursday December 11, 2008 @11:54AM (#26075665)

    "it's a very forgiving language."

    I don't agree. Javascript can be an exercise in debugging hair-pulling.

    Besides, do we really want to share curly braces with beginning programmers?

Thus spake the master programmer: "After three days without programming, life becomes meaningless." -- Geoffrey James, "The Tao of Programming"

Working...