WelcomeWelcome | FAQFAQ | DownloadsDownloads | WikiWiki

Author Topic: Recommendations for a 14 years old intelligent boy: where can he start in PCs?  (Read 15283 times)

Offline Rich

  • Administrator
  • Hero Member
  • *****
  • Posts: 11178
Hi Lee
Quote
Oh, that is -so- 1970's!    ...and that seemingly pitiful little dribble of eprom space is room for a lot of progam in assembly.
Considering that many operations have to pass through the accumulator, and the limited choice of
instructions, it can fill pretty fast. http://en.wikipedia.org/wiki/PIC_microcontroller#Instruction_set and
scroll down to  12-bit PIC instruction set  to see.


Offline Lee

  • Hero Member
  • *****
  • Posts: 645
    • My Core wiki user page
Well now.  Back on topic...

I did it.  I introduced the twelve-year-olds and the ten-year-old to the fine art of computer programming using...

( go ahead and flame me, I can take it! )

BASIC   (*)

I had thought to use vice.tcz and start with C64 BASIC because I still have all the references for it and because it insists that every line be numbered.  The line numbers were the primary reason I chose BASIC - I felt that, for a beginner, having each line labeled with a (sequential) line number and the flow of execution closely tied to the sequence of line numbers would make it much easier to get a handle on all of the iteration, branching and subroutines (all of the flow-of-control).

Alas, vice.tce is not yet in the 4.x repo so I had to settle for smallbasic.  Of course, I -don't- have all the references for smallbasic and line labels -aren't- required, -don't- have to be numeric nor even, if numeric labels are used, do they have to be in sequential order!  That certainly makes it harder to see the advantage of using BASIC, but I have to admit that, other than for the complete novice, smallbasic is a much nicer BASIC than the C64 one.

Anyhow the kids have now got an inkling of the concepts of I/O, branching logic, iteration and simple data structures.  But that's not the best part...

They're -excited- about it!  That one thing is what makes me think I've done something right.  This is going to be fun.

The next steps will be to just let them run wild with small basic for a few days, maybe learn about file i/o.  Then we can start on a simple application - probably a data storage and retrieval tool ("database" is too big a word for what I have in mind).

Floppy, have you talked with the neighbor boy?  Found out what his interests are?  How much he already knows - or thinks he knows - about PCs?

Lee

(*) Hey, I could have picked Mumps!  I seriously considered that (but only for about 5 seconds).    :)
32 bit core4.7.7, Xprogs, Xorg-7.6, wbar, jwm  |  - Testing -
PPR, data persistence through filetool.sh          |  32 bit core 8.0 alpha 1
USB Flash drive, one partition, ext2, grub4dos  | Otherwise similar

Offline Lee

  • Hero Member
  • *****
  • Posts: 645
    • My Core wiki user page
It never hurts (well, usually not) to just try stuff.  I brought over vice.tcz and alsa-oss.tcz from the 3.x repo and vice seems to work.  Now I have to decide if it is worth fooling with it at this point.

32 bit core4.7.7, Xprogs, Xorg-7.6, wbar, jwm  |  - Testing -
PPR, data persistence through filetool.sh          |  32 bit core 8.0 alpha 1
USB Flash drive, one partition, ext2, grub4dos  | Otherwise similar

Offline Rich

  • Administrator
  • Hero Member
  • *****
  • Posts: 11178
Hi Lee
There's nothing wrong with BASIC for what you are doing. Programming concepts tend to be
language agnostic.

Offline Lee

  • Hero Member
  • *****
  • Posts: 645
    • My Core wiki user page
Thanks for those encouraging words, Rich.

You're right of course that the concepts are independent of the language.  Yet I'm kind afraid they'll fall in love with their first programming language and/or develop the bad habits that are so easy to develop in BASIC.  Not that they couldn't develop bad habits in other language... to counterfeit another phrase: "A real non-programmer can write BASIC code in any language".

Lee

32 bit core4.7.7, Xprogs, Xorg-7.6, wbar, jwm  |  - Testing -
PPR, data persistence through filetool.sh          |  32 bit core 8.0 alpha 1
USB Flash drive, one partition, ext2, grub4dos  | Otherwise similar

Offline cast-fish

  • Hero Member
  • *****
  • Posts: 1000
  • hi there
Yes

honestly take alookat Logo programmng. Free tools like "Imagine Logo". A child will pick this up instantly and be able to create computer graphics.

Then show them "Elica Logo" which again is surprisingly simple to get stunning graphics programming capability.
 It takes some understanding of how the owner has completely abstracted away any need for people to understand
object orientated techniques. Instead, a new comer just being introduced to Elica woul probably get right into
the ideas behind it. ELica uses the Logo language but in a more powerful way to produce 3D graphics.

Elica can also do most of GUI windows programming. It has many widgets and controls so it's possible to get right into making simple but effective win32 programs for the desktop. Personally i only got so far with Elica but was able to grasp the notion of how 3D programming is done in the tool. There creator told me that there tends to be issues with people from different programming backgrounds because they think Elica is "too" simple and tendto overcomplicate the issues of object orientated principles...but when Elica is explained with the good email help you can begin to see the principles of designing a 3D program. You can then also continually look atthe 800 examples in the help section and learn by demonstration.

Elica does not have a hierarchy in command listing order. Logo can have commands in any order. True each command has a syntax, but routines and structure is loose.

I think it would be perfect for young people getting into programming because you see immediate results. The actual power of Elica, in the right hands, is very high.

personally, i am a big fan of coding or programming but i am  doing moreand more of system "batch" things and general up keep of operating systems and scripting. Chron jobs and sometimes makros. The kind of scrips that
belong to a host tool, for example, verysimple SQL commands and general things like that.

For your interest, there is also Limnor tool which is a win32 programming tool which is completely codeless. There is never a single line of code seen.It is quite powerful and good tutorials exist. However thiskind of tool isn't exactly commonplace at all. If your youngsters need introductions to proper scripting and thereality of computer coding
then Limnor may throw people off track. Currently there are just over 3200 computer programming languages in the world............. and i imagine a tiny tiny amount are codeless. I know of only about 10 codeless tools.

Thanks

V.

Offline Rich

  • Administrator
  • Hero Member
  • *****
  • Posts: 11178
Hi Lee
Quote
Yet I'm kind afraid they'll fall in love with their first programming language and/or develop the bad habits that are so easy to develop in BASIC.
I don't know about the version your running, but I believe nowadays BASIC supports call statements.
So tell your kids "no goto's allowed", at least not to or between subroutines. The best way to move
them to a different language is to create a situation that offers a path to something they want. For
example, faster program execution. Try to give them something that BASIC does not handle easily
or very well.

@cast-fish: Abstraction can be a wonderful thing but it comes at a price. In this particular case it gives
you the opportunity to not learn about what's going on behind the scenes of that abstraction, like how
is that pushbutton made, or how do they make that cube look like it's rotating.

@Lee: By showing them how an ASCII to integer routine works you can teach them recursion. Showing
them integer to ASCII will expose them to the modulo operator, which makes a nice stepping stone
to array indexes that wrap around automatically. For extra credit, do those same indexes to a power
of 2 without using the modulo operator.


Offline Lee

  • Hero Member
  • *****
  • Posts: 645
    • My Core wiki user page
Elica looks like an MS windows executable, which is not always a bad thing, but right now I need something that I can run on all the boxes in my basement "computer lab" - and I only have one truly "working" windows box in the entire house.

But beyond the practicality issues, I'm not convinced that Logo is the way to go for kids in this age group.  I've played with Logo a bit myself over the years, though I admit I've probably never given it the consideration it deserves, and found that the whole turtle graphics idea (*) is fun but not hugely useful beyond learning the simplest concepts of programming.

For the very youngest of budding programmers, the immediate visual feedback of the graphical output is better than character based output - but I don't know if I'm ready to start my youngest (5 - 8 years old) ones on any kind of programming yet.

The 10 - 12 year olds are just (I think) able to get the idea of abstract data, distinct from its representation as character or graphical output, I'm leaning toward the character based approach and maybe having them learn how to build simple graphs the hard way.  That will reinforce some of the mathematics we'll be doing this year as well.

(*) It certainly looks like Elica has gone beyond just "turtle graphics"!


Just looked at vice again... and realized that the 25 x 40 character screen is just a hair smaller than a business card on my monitor.  Still a very neat toy, but I think I'll stick with smallbasic for the kids until they're ready to move on to bigger and better forms of torture programming.
32 bit core4.7.7, Xprogs, Xorg-7.6, wbar, jwm  |  - Testing -
PPR, data persistence through filetool.sh          |  32 bit core 8.0 alpha 1
USB Flash drive, one partition, ext2, grub4dos  | Otherwise similar

Offline Lee

  • Hero Member
  • *****
  • Posts: 645
    • My Core wiki user page
I kind of want them to go down that "goto" road, just once or twice.  Then it'll be their own idea to never go there again.  ;)

And you're right again, Rich, it will be features that lead them to other languages - the speed of a compiled language, the data structure capabilities of C, the utility of shell scripts, database access,  the sheer horror of pointers with several-layer-deep indirection.  ;)

As for recursion - Michael already learned about stack overflow - it was a "gosub" thing.  If you're interested in such things, smallbasic's return stack capacity is 256 elements.  That gave me the opening to describe how the stack works. Oh... you mean intentional recursion... we didn't get into that, except to mention that there is such a thing and it is sometimes useful.


32 bit core4.7.7, Xprogs, Xorg-7.6, wbar, jwm  |  - Testing -
PPR, data persistence through filetool.sh          |  32 bit core 8.0 alpha 1
USB Flash drive, one partition, ext2, grub4dos  | Otherwise similar

Offline cast-fish

  • Hero Member
  • *****
  • Posts: 1000
  • hi there
Yes,

very interesting to read and see the funny comment(s) like "torture"......but that kind of humour
actually touches on a serious point.

You want to be able to nurture kids into having a true buzz about computers. You want them to feel
some passion for it and drive and enthusiasm. Ok, it may start out as a hobby, but you want to be certain
that the enjoyment level is high enough that the learning then comes naturally and with delight.

Just because somebody is passionate about a hobby or interest does not always mean they are able
to convey that passion over into others and i think that's where speaking to teachers and educational people
really helps.

Logo and "imagine logo secondary" are educational programming tools and not production tools. Although they could
equally fit each role. You get the feeling that this is how the tools have been designed. They are designed to
be interesting and yield quik results that satisfy and can promote further learning.

It's real interesting is this http://www.r-e-m.co.uk/logo/?K=SECONDARY

shows types of software teaching tools about systems for younger people.

With computers being so widespread these days, and handheld computers with cheap apps (phones) to widespread
internet terminals and usage....... it's wise to assume that's computers are pretty much embedded into major aspects of
ones everyday life. Kids therefor are growing right into this embedding which is very different from my upbringing.

They say now it's not unusual for 6 year olds to be telling adults how to use java cell phones or i-phones
or indeed PC's and the like. Kids are already "into" computers because they hold one in their hand. They are far more
"imprinted" with this technology than anything close to my upbringing.

What i mean to say is that kids are genuinely "imprinted" with computing now from reading age upwards. It's something
they already really know about and enjoy. ALthough not everybody is so lucky and hence inventions like the Raspberry pi
computer are to bring computers into the hands of everybody. I live in a large city and can't believe the proliferation of
computing in society
now.


PEople need to know some raw facts about a diciplin like personal computing before they embark on the lower end theory
of operating systems and computers and code. For example, Debian Linux Computer operating system BASE is
40 million lines of code. A full Linux installation like that with desktops and tools maybe more than 80 million lines of code. Apparently to print out win32 takes a shipping pallette of those blocks of A4 paper (copying paper.)
Tinycore is about 10 thousand lines is it?


I have used 3d programming tools which give you 3D results in 5 to 10 lines of code.

That's 3d graphics creations which are essentially what any kids will be interested in. There are such visual teaching tools as ALICE 3D for kids learning 3D graphics programming skills. These are simply excellent and can't be over-stated.

http://www.alice.org/

Essentially people should understand the nature of computer coding and while it's prolofic, also understand how
much of todays approaches have learned from history and are now geared towards abstracting away "coding".

This "abstracting away" is putting the computing diciplin into a more generalized interest-group for the masses now. I feel that "coding" is something adults need to step around very carefully with youngsters. The reason i say that is because computing is such a
widespread diciplin that coding is only a fraction of that diciplin. Coding is by no means a large proportion of the computing
diciplin. It's an "area" of computing. Kids have a huge arena of computing diciplins to choose from in life...it's really vast and
many many many of those diciplins are not concerning "coding" at all. All i want to say is that for adults trying to help younger people learn the "raw" tools of the trade is a very good idea. IT should just be done in a very careful manner to help nurture
the continuing natural interest the youngster has.

i hope this helps out someway

V.

Offline SvOlli

  • Full Member
  • ***
  • Posts: 193
  • Linux Developer
Imho, the discussion of what programming language he should use is rather academic.

If he really wants to get into programming and hacking the best thing you can do, is find him some kind of tutor. A person he can turn to, if he can't figure out, what's going wrong. Someone who will also take his time not just find a missing ";", but also for example explains why you shouldn't do all the work in a gui-thread. Anyone I know ran into this trap...

The choice of OS and programming will be made by the tutor indirectly, a guy who's doing C/C++ exclusively all day just can't help with Python or Java problems.

Just my 2c,
SvOlli

Offline floppy

  • Hero Member
  • *****
  • Posts: 577
As a first poster of this question, I would like to thanks everybody for all proposal: I see that everybody here wants to do its best for making young people (and the next generation) interested in a smart actrivity (not banker.. except I would apologize if a banker is making extensions for free of charge here). So, for the people who had questions to me, wait a bit, I will answer as soo as I can.
AMD K6-IIIATZ 550MHz MB DFI K6xv3/+66
P4 HP DC7100 3GB 3GHz
Samsung NC10 boot from SD card port (via USB reader)
.. all TinyCore proofed

Offline Lee

  • Hero Member
  • *****
  • Posts: 645
    • My Core wiki user page
I certainly agree with cast-fish that there are different levels of programming just as there are strata of computer usage scenarios.  Putting together a complex email filter in MS Outlook might be considered "programming" and indeed  I suppose it is, but on a different level than writing a device driver or something like that.

I want to expose my kids to programming at many different levels and, remembering back to the excitement I felt when I first started (*), I want to start them out -about- the same way I started out - with a simple but useful language that (as luck would have it) translates easily to other languages as one moves on.  There are probably many good choices.  Basic seems to be working for us.

As for the torture part... Our home schooling routines are pretty relaxed but I worry that sometimes the kids want them to be a little -too- relaxed.  I have to keep it fun, as I firmly believe that's how learning happens, but I can't let it be all "fun and games" - I'll have to guide them into the harder stuff, but only when they're ready.

(*) I was 19 or 20, not 12, when I first started to learn programming.
32 bit core4.7.7, Xprogs, Xorg-7.6, wbar, jwm  |  - Testing -
PPR, data persistence through filetool.sh          |  32 bit core 8.0 alpha 1
USB Flash drive, one partition, ext2, grub4dos  | Otherwise similar

Offline Lee

  • Hero Member
  • *****
  • Posts: 645
    • My Core wiki user page
I just downloaded and compiled UCB logo 6.0 and my eight-year-old daughter just loves it.

The older ones are still enjoying smallbasic - but now they want to play with logo, too.  :)
32 bit core4.7.7, Xprogs, Xorg-7.6, wbar, jwm  |  - Testing -
PPR, data persistence through filetool.sh          |  32 bit core 8.0 alpha 1
USB Flash drive, one partition, ext2, grub4dos  | Otherwise similar

Offline grandma

  • Full Member
  • ***
  • Posts: 213
  • Never forget Grandma Loves You & made that candy4U
    • Back when a 10MB HD was $500 bucks
In 1983 I exited the East L.A. Gang Banger scene
and started Kids Computer Kamp - free PCs for Kids
we teach in Barrios, Ghettos, Juvenile Facilities
and even (don't faint) to straight A kids.

Over the years, we've given away several 1000 PCs - always 100% free
and always - 100% built by the kids themselves.

There are 9 basic labs starting with the really fun one:

The kid gets to rip apart a broken desktop that
won't boot anyway.

We have a pile of parts - most tested so we know what hard drives are shot
and to start the lab, after giving them a screw driver
I take a hard drive - hold it out and drop it on the floor
and tell them - YOU CAN'T BREAK THESE PCs - THEY ARE ALREADY DEAD

(donated gear we pick up)

Yes - its possible that one or 2 bits of equipment
might have had some life in them
but usually we fill these cases - the ones for the first lab
with known dead motherboards and drives
and the kids get to rip em apart - oh the joy

...then at 4pm we give them a triple espresso
tell them to keep the screwdriver - take it home
and operate on their father's PC (kidding)

Phase 2 - they put it all back in the case
and have to do it in under 20 minutes
then move on to a functional PC
repeat - and configure
BIOS
FDISK
FORMAT (old DOS 3.3 - but could use Linux as we are switching to that THANKS TO TINY CORE - YEAH TEAM)

if they get a C: prompt in under 20 minutes and pass the lab
they go to the parts pile - rustle up the ram, a CPU, motherboard etc.
a drive, CD/DVD - whatever is there
and build one and take it home.

We have a little joke: we either have to bury it as hazmat - or give it to the children.

We always serve pizza in the labs
and have served all kinds of kids.

You asked "WHERE SHOULD MY KID START?"

At Kids Computer Kamp its always that lab first
so we know - absolutely positive
they will never fear a computer repair
they will never fear any new challenge with computers
and they will often innovate and make all kinds of things
I have seen a kid take a cordless phone
and a am/fm radio and make a tracking device
and plenty of other strange things come out of those labs

We use cutting wheels to reshape cases,
coolers - name it - and the kids have a blast

AFTER the KCK 101 lab
we get em into networking
50 ways to connect 1 - 2 - 3 - 5 - 10 - 20 PCs
and then get them into the various applications
office, image processing, CAD/CAM etc.

Then onward to web design - html - javascript

Then on to setting up an Apache Server
buying a domain, learning to configure a little PERL CGI to get some backend processing,
selling a wifi signal to neighbors (a favorite of mine as it puts immediate cash in their pocket),
getting a paypal account, and then doing the old job search - client search because these kids are hot to trot

So...it all starts with a couple of milk crates and a sheet of plywood and a power source with a few screwdrivers

Its a great after school program - a lot of latch key kids out there
and the labs can be hosted in a garage, in a driveway, on the tailgate of a pickup
anywhere

In this century, we believe that every kid should be able to build a PC from parts in a bench in under 20 minutes and install Windows and .... oooops....that was last century

In this century they should be able to install and run Tiny Core (what was I thinking?)

~ Luv Grandma
"When children of all nations
play in the sandbox together
all morning-all day-all week, and
one fine sunny day; all year long ...
... then war will become an ancient memory
and Grandma can knit that sweater
you'll hold near to your heart
until long after you're my age.