On 5/12/13 8:29 AM, "Vincent Diepeveen" <[email protected]> wrote:
> >On May 12, 2013, at 4:07 PM, Lux, Jim (337C) wrote: > >> >> On 5/12/13 4:01 AM, "Vincent Diepeveen" <[email protected]> wrote: >> >>> You find it a cool idea to learn students how to drive a moped and to >>> steer well with a moped >>> in order to let them understand the problems of how to fly an >>> airplane, meanwhile at home they got a car? >>> >>> They will never respect you in this manner, and they are da*** right >>> doing that. >>> >> > >[SNIP] <lawnmoyers and such> > >Jim, > >If you want to train a new jetfighter pilot, you're going to just >give them a course how to drive a moped, >and after they can drive a moped, you are going to give them a pilot >license and wave good bye to >them: "good luck to you flying your own Cessna". Nope.. My goal isn't to train fighter pilots..it's to teach basic flying skills. Some fraction of the people will then decide "yes, flying is my life" and go on to be fighter pilots or whatever. Others will say, "that's nice" and go on to do other things, but will still remember the basic flying skills, so when they are a manager of, say, control towers, they'll have a better understanding of the use case. Interestingly, there's a whole variation of approaches in training commercial pilots (for large planes, not commuters). One group, familiar with the 70s, where you had a lot of pilots coming out of the Vietnam war, looked at it as "retraining" from military transports, etc. to civilians. Another group, the "stick and rudder" types believed in a gradually increasing complexity approach. This is enshrined in the pilot licensing in the US.. You get Airplane Single Engine Land Private Pilot, and then get things like Instrument ratings, Commercial, Airline Transport Pilot, etc. with Type Certificates for specific large aircraft (a pilot trained on a 737 can't just go out and fly a A320). During the 80s, a lot changed (all those Vietnam era pilots were already hired). Lufthansa went into a new ab initio training process. Take people who had never flown before and send them to a flight school in Arizona (cheap, good flying weather all the time) and learn in a single engine turboprop trainer, and then transition to multiengine jets from there. My contention is NOT that you'd learn on an Arduino and then never do any education beyond that. The Arduino provides a cheap, constrained platform that could be made (with instructor supplied libraries) to be a good platform to learn distributed algorithms, without getting involved in the complexities of managing an actual full-up cluster. The techniques of partitioning, trading CPU vs communication overhead, etc. can be done at Arduino scale as well as at any other. And, because the platform isn't just a "simpler" version of something else, when you move to that "something else", you're forced to translate the abstractions to the new environment, which reinforces the underlying conceptual understanding. I think that's a lot better, pedagogically, than teaching "how to turn the crank" on a specific library or platform. I absolutely despised writing significant amounts of code in MIXAL to run on the MIX machine in school (since I already knew PDP-11 Assembler, and learned Z80 Assembler on the side when in school, and wondered why they didn't just teach BAL, since the machine we ran on was a S/360). Writing a kernel and scheduler in MIXAL was painful. However, in retrospect, Knuth and his disciples were wise. When I was done, I knew 3 different assemblers, and more important, I understood both the common aspects of kernels AND also why some processors were better suited for some applications than others. My "coding skills", per se, were probably worse than if I had done all the work, in say, PDP11 ASM (that is, I was an OK coder in all three). But my "computer science skills" were substantially better for the experience. Same thing applies to being forced to write in Pascal at UCSD, when I already knew FORTRAN and Basic, and then had to do PL/1 as an undergrad at UCLA. (in the late 70s, it was PL/1, PL/C, or CALGOL). After a few years, after writing the same darn quicksort or bubble sort algorithms in all those languages, you *really* are language independent. You know WHY FORTRAN is good for some things (numerical computation) and not so hot for others (things requiring strings or linked lists or data structures). In summary, I think there is HUGE value in starting with a deliberately limited cheap platform that is basically disposable. Now, if your goal is to create a software factory in a third world country where you have a room full of coders cranking out code from design and requirements documents prepared by others, another strategy might be more useful. Start them with the eventual target enviroment, don't let them get distracted with different ways, make sure they know .NET or MFC or whatever you want to use. That will get you coders sitting at screens and keyboards cranking out your code cheapest and quickest. Just like textile workers. There's no point in teaching them to sew with needle and thread by hand: put them at a sewing machine with 100 others from the get-go. Coding, per se, is more and more considered a clerical skill, with the corresponding low wages and "blue collar" treatment by employers. And sadly for all those folks going through "retraining" from lost manufacturing jobs and learning how to write java, .NET, or Excel Macros, or whatever, it's one that can readily be outsourced to a place with lower living costs and even lower wages. My goal is NOT to train the next generation of assembly line factory workers, but to find those people who will come up with new algorithms and fundamentally change how we do computing. I want people to figure out how to create a generic tool that can parallelize or partition without being dependent on the particular platform (so we can farm out the software production work to those low paid wage slaves in third world countries<grin>) The way we find those people is to give them something to "play" with, something different, something that makes them think about new ways to do stuff. The CS community has been fooling with parallel and distributed processing for decades, and we're not moving real fast. It's a hard problem. Maybe solving it requires people coming from a different background? Maybe we need a way to let those creative people find out that they have a talent for it without spending a lot of money. Sure, I'd love to have every elementary school in the country have a supercomputer. But it would be expensive, it would have controlled access, and you'd have to go through a review process to make sure that your project was "worthy" and sufficiently low risk. Or it would have exercises carefully designed to work with everyone in the class ("Now Class, It's time for our monthly hour in the supercomputer lab") So, spend $100k on a school supercomputer cluster? Or spend that same $100k on 100-300 copies of a "cluster computing toy"? The latter is, I think, the way to advance the state of the art for High Performance Computing. I want that bright 8 or 12 or 16 year old who has the flash of insight about distributed computing to get interested. By the time they get through school, maybe they'll be in a position to make a substantial contribution, rather than being resigned to being a third assistant java coder for the upper left corner of the window border. > _______________________________________________ Beowulf mailing list, [email protected] sponsored by Penguin Computing To change your subscription (digest mode or unsubscribe) visit http://www.beowulf.org/mailman/listinfo/beowulf
