Click to See Complete Forum and Search --> : Learning (and teaching) programming to kids


Mip
10-13-2000, 12:15 PM
Hey Gang,

I'm teafching technology at our middle school. For the most part I just teach apps (on the Mac OS), but I'd like to start a computer club so the kids who aren't into other offerings (like sports) can have something cool to do.

Some of the kids want to learn about website design. Any good ideas for how to start them on that?

More importantly, some of the kids want to get into programming, so that they can make games. I've told them that this is a long road, but one that will be very fruitful. How should I get started with this?

What language should I use? I have only done minimal programming myself (writing simple code for data analysis programs - SAS).

Thanks in advance,

M

PS: At least for now, I'll be teaching on Macs, but I might be able to set up a few machines for a Mac based Linux system down the road.

kmj
10-13-2000, 12:29 PM
Disclaimer -- I have never used python, and though I am familiar with the basic syntax my knowledge of it is limited...

The two languages I know of that were designed with education in mind are python and pascal; of the two, I'm willing to bet python is the more powerful, though I'd guess they're both about as easy to learn. You could go with basic or logo or something, but I'd skip that. Check out www.python.org; (http://www.python.org;) I think python will also teach good programming practices (i.e. indenting and whatnot). I don't know how many good python books there are for new programmers, but the above website has an extensive tutorial (again, I haven't used it so it may not be suitable for novices.)

Not only is python geared towards education, but it is becoming a widely used language in the industry, so you'll be giving kids direct experience with a language that a few years down the line they may actually be using (as opposed to pascal.)

I think C, C++, perl, and java are a bit too advanced (maybe, except for those who are really into it).

BASIC and whatnot are too simple, I think.

Well, I think you get my point. Good luck, and have fun. You'll probably learn more than the kids, just by trying to teach them



------------------
-Pacotron- You are what you edit- vi -------- GAIM: KMJ2L
Don't be left out! STAND UP AN BE COUNTED! (http://www.cs.rit.edu/~kmj9907/cgi-bin/pollster.cgi)
--*real men use man*--
-The only reason I keep my DOS partition is so I can mount it like the b*tch that it is.

TheLinuxDuck
10-13-2000, 02:51 PM
Mip:

It sounds like you've a road ahead of you. http://www.linuxnewbie.org/ubb/smile.gif

I don't know anything about Python, Java, JavaScript, or the like.. I do know C, Perl and a little c++.

I agree with kmj that perl and c may be too advanced. However, that doesn't mean that you can't offer them, in case there are some who seem interested.

I would suggest doing about 30 minutes or so online just learning about python.. maybe even try running some of the examples online, and see what you think about it.

I hope all goes well, I think what you are doing is very cool.. Sorry I'm not more helpful. http://www.linuxnewbie.org/ubb/smile.gif


------------------
TheLinuxDuck
Wait... that's a penguin?!?!?
:wq

Phuzon
10-15-2000, 02:14 PM
If games is what they want to do, teach them the basics of C and then get into the more advanced stuff as the finish absorbing the first stuff. I my self am 13 years old and I write games. Tell them that and it might motivate them a bit. Download a my game at http://silicon-palace.com/spingoof-latest.tar.gz

Phuzon
10-15-2000, 02:16 PM
Originally posted by Phuzon:
If games is what they want to do, teach them the basics of C and then get into the more advanced stuff as the finish absorbing the first stuff. I my self am 13 years old and I write games. Tell them that and it might motivate them a bit. Download a my game at http://silicon-palace.com/spingoof-latest.tar.gz

*NOTE*
it's the very first version and is very limited. And if anyone is interested in helping me continue the project, great. E-mail me.

toolie
10-16-2000, 09:30 PM
Personally, I would start them out with something like Lego MindStorms. That way you seriously spark their interest and they get to SEE results.

Its a really good way to get kids hooked.

Mip
10-16-2000, 11:23 PM
That's an interesting point. I really want them to have fun AND get something done. I'm sure that they are miles away from creating a cool game, but don't realize that.

Can you tell me more about Lego Mindstorms?

Darth Tminos
10-17-2000, 12:00 AM
The Mindstorms thing is a good idea. I would say to start them off with Python and show them how to make programs that will do their Math work for them or something http://www.linuxnewbie.org/ubb/smile.gif IE, programs to automatically calculate large multiplication, division, some algebra, etc. etc. where it is one program for one kind of problem. For example, mutlipy asks for two numbers and then spits out the anwser. divide does the same, algebra takes in a line of algebra and spits out the anwser... make sense? Python would be good to start with. BASIC is too, well, basic and doesn't prepare them for what they will find later on in C, Java, etc. so I would start them with Lego Mindstorms and then go on to Python or Perl.

Mip
10-17-2000, 04:10 AM
Okay, now MY interest is piqued. I did a bit of searching and found some pretty cool stuff on Mindstorms, but it looked like a workable set-up might be $1000 (from the Pitsco-dacta lego site).

Are there any cheaper avenues?

Thanks,

M

kmj
10-17-2000, 08:26 AM
Are there any cheaper avenues?

Linkin' Log BrainQuakes?

per©oDåN
10-17-2000, 09:10 AM
*don't get me wrong, here... I'm can go either way (Mac~Intel) very comfortably*

But, why is it the only place that we ever see Macintosh PC's in production is in the movies, on TV, or in [lower grade] primary school?

I think they have a great idea, getting in with kids in school (you know, if they learn it there, they'll want to buy it later), however I don't see this happening. The Mac is a great deal more solid as an OS and hardware platform than many of it's Wintel counterparts... Still people [myself included many times] prefer to use other technology when available...

That sucks.

Oh, & BTW: the Code Warrior programs are ggggggreat for starting prople (even little people) off in the right direction and they all include everything you will need in one little distribution... I have Discover Programming with JAVA and " " with C.

toolie
10-17-2000, 12:02 PM
The initial setup for the MindStorms is about $199/set. How many kids do you have? I figure teams of about four are just about perfect. From there, the other sets are less expensive (most are sub-$100, the StarWars ones are ~$119).

The great thing about MindStorms is the range of skills that are developed. In traditional programming in school, kids work by themselves on a single problem. This approach teaches kids to work in teams (much like the rest of the real world), programming, engineering, creative thinking, and problem solving.

Mip
10-17-2000, 01:17 PM
Toolie,

What is included in a basic set? I'll have about 15 kids in the computer club, and about 24 kids in the class room.

I figure that groups of 3 would be optimal.

Can you give my your source for the product? I assume there must be a break for educational institution uses.

THanks,

M

Mip
10-17-2000, 01:18 PM
per©oDåN,

Can you tell me more about Code Warrier, or point me to a link?

Thanks,

M

toolie
10-17-2000, 02:48 PM
http://mindstorms.lego.com is where I look for the info/new stuff, etc.

The basic set includes the programmable brick, a sensor brick, the compiler, like 700 parts, maybe a remote (dont remember). Its enough to get you going.

The current version is 1.5, I saw on http://www.kbtoys.com or http://www.toysrus.com that they were having a sell on the 1.0 kits, and upgrade to 1.5 was $20. That might be a cheaper way of getting the number of sets you need. I don't know of an educational discount, but I'll look around and see what I can find.

I'm thinking about getting one of these sets for my nephew. He's only four, so its probably a little early... maybe something cooler will be out in the next few years.

Why didn't they have stuff like this when I was a kid and could devote all day to playing with it?

Edit:----------- More info added below.
Taking a look at the MindStorms FAQ at http://mindstorms.lego.com/products/whatis/faq.asp shows that they have a special division devoted to classroom work. http://www.pitsco-legodacta.com and http://www.lego.com/dacta/robolab/default.htm are the edu-centered sites. Maybe they can give you a break.

[This message has been edited by toolie (edited 17 October 2000).]

per©oDåN
10-17-2000, 03:21 PM
http://www.codewarrior.org/

Serbot
10-17-2000, 04:38 PM
the only bad thing would be losing the pieces http://www.linuxnewbie.org/ubb/smile.gif

happaned when I was in middle school...but they got rid of that and I got to mess with a robot arm, cad thingies, lasers, etc etc http://www.linuxnewbie.org/ubb/smile.gif

Phuzon
10-17-2000, 08:53 PM
#include <stdio.h>

void main(void)
{
printf("Hello, World!");
}


http://www.linuxnewbie.org/ubb/cool.gif C++ http://www.linuxnewbie.org/ubb/cool.gif

Xprotocol
10-17-2000, 09:02 PM
I'm not against your idea what so ever, I think a strong computer club at my school would be really neat. As for teaching them programming (something obviously high-end) my stomach turns. When I got my first computer at around 9 years old, my parents knew nothing. I had to spend hours using trial and error to firgure out how to run the thing and know what I know today. No body sat down and spoon-fed me piece by piece how to do everything.
I think that if too many kids learn programming, the nead for programmers will go down and those who actually worked hard at learning it (ie. reading 2 or 3 800 page books) will be missing the pay they deserve cause someone went out and just gave away everything.
As I said before, I'm not against your idea but I think computer clubs should be more for the kids who already want to learn more about computers (basically what you said) and not for the other who could care less. Also, teaching programming won't be easy so watch out http://www.linuxnewbie.org/ubb/smile.gif. As for a language just start out with something basic, like BASIC http://www.linuxnewbie.org/ubb/smile.gif.

Xprotocol
10-17-2000, 09:04 PM
Originally posted by Phuzon:

#include <stdio.h>

void main(void)
{
printf("Hello, World!");
}


http://www.linuxnewbie.org/ubb/cool.gif C++ http://www.linuxnewbie.org/ubb/cool.gif

Looks more like just plain C to me http://www.linuxnewbie.org/ubb/smile.gif.
#include<iostream.h>
main()
{
cout << "Hello World";
return 0;
}

TheLinuxDuck
10-17-2000, 09:04 PM
Originally posted by Phuzon:

#include <stdio.h>

void main(void)
{
printf("Hello, World!");
}


http://www.linuxnewbie.org/ubb/cool.gif C++ http://www.linuxnewbie.org/ubb/cool.gif

Err.. for c++, don't you mean:

#include<iostream.h>
int main(void)
{
cout << "Hello world." << endl;
return 0;
}

???

------------------
TheLinuxDuck
Wait... that's a penguin?!?!?
:wq

Mip
10-17-2000, 11:39 PM
While I agree with you that programmers should be able to earn a comfortable living, you need have no fear of these kids. If anything, getting them interested in computers and programming will do more to increase the demand for quality programmers than to flood the market.

My basic premise in teaching programming is to create an interest in technology, and cultivate the attitude that one should know how things work (and be able to fix them or tinker - if the need arises). I also think that kids who learn to sweat over some code will have greater respect for the work that is out there, and might be less inclined to steal or bootleg it.

Finally (excuse the rant), many of these kids are somewhat turned off to school and to learning. This is very sad, as they are only 12 or 13 years old. I think this kind of experience might cultivate an appreciation for tackling hard problems and trying to solve them - rather than on just partying.

I do appreciate your comments though, I just happen to think that there's more potential for good here than for problems.

Thanks to all,

M

Phuzon
10-18-2000, 01:22 AM
Whoops!

http://www.linuxnewbie.org/ubb/cool.gif C http://www.linuxnewbie.org/ubb/cool.gif

Phuzon
10-18-2000, 01:25 AM
I started programming when was like 8 years old. I used qbasic - argh... - and I ended up where I now. I've learned more in the past year than in those other 4 years of my programming experience. If they are motivated and believe they can do anything - Like me! http://www.linuxnewbie.org/ubb/cool.gif - they will do very well with any language. All I have to say is...
http://www.linuxnewbie.org/ubb/cool.gif C http://www.linuxnewbie.org/ubb/cool.gif

Phuzon
10-18-2000, 01:27 AM
Also, grab the source code for a game called spingoof, much like pong, and show them it. Don't try to expain it, but make it clear they WILL be able to do that VERY soon. All it really is is a bouncing ball that happens to bounce off of the paddle too. It's like 200 lines of code. Written by me of course http://www.linuxnewbie.org/ubb/smile.gif

toolie
10-18-2000, 12:53 PM
Phuzon: these kids are already losing their interest in learning. Throwing them into a pure-programming environment would be SO counterproductive, its not even funny. When kids are losing their motivation, you need to help them find it. The easiest way to do that is to spark the imagination. Straight programming can do it for some people, but most people are more 'hands on' types.

Basically, I think just teaching these kids how to just program instead of the technology side (to keep them interested) would be a great waste.

As for XProtocols comment - saying that would be like somebody who has been using Linux for ages to be pissed at something like LNO. That person had to teach themself, but now somebody is helping the newbies. Time to do some reevaluating.

[This message has been edited by toolie (edited 18 October 2000).]

fsvara
10-18-2000, 01:09 PM
I think qbasic is excellent. While not very powerful, you can do real neat things with it. There are libraries for it so you can have True color graphics, mouse support, joystick... It's cool for programming RPGs. A lot of people do. www.qbt50.com (http://www.qbt50.com) for a toplist of qb related sites. The only disadvantage I see is that it's slow, but with a good lib...

error27
10-20-2000, 01:24 AM
what's all this talk about qbasic? the only TRUE basic is gwbasic. Everyone knows that. :P

Today I in my VAX assembly language class we watched a movie of this lecture that Alan Kay gave in 1987 about User Interfaces and his days at Xerox PARC.

It was truely fascinating.

Anyhow, the PARC guys did a bunch of research in teaching computers to kids. The students wrote some pretty cool programs in scheme. It turns out they did research into how many pages of a program children can write at various ages. I think in 7th grade most can write a two page program and understand it all. This means that you need a language that is really compact but also one that you can understand easilly.

The students can also go into 5 page programs and change things around pretty quickly.

One student wrote a program that created diagrams for a ham radio I believe. Alan Kay liked that because just 10 years earlier a graduate student had recieved either a mastorate or a doctorate for a similar but not as good program.

I commend you on your efforts in this. I think that computer applications are much easier to understand once you know how to program.

There is an attitude in America that rejects computers. Some of the politicians have negative views on the internet. Nader even said that he would like to see less computers used in schools.

A while ago some one was laughing at me as a freshmen in college who used Linux: "What are you going to do look at the source?" Well yes, actually as it turns out. Their attitude is what makes Windows not come with any compiler by default. Something I've come to consider outragous.

It turns out the reason a Mac only has one mouse button is that they think three mouse buttons are confusing. It's as if they haven't accepted the fact that computers are here to stay. School children today are going to grow using computers EVERY SINGLE DAY OF THEIR LIVES... If they can't figure out three mouse buttons we have a far greater problem on our hands.

So yes... Please teach them how to program. Find a language that allows them to do interesting things in 2 pages of code. The Alan Kay movie has almost sold me on scheme, but I haven't tried it yet.

I've been thinking that it would be cool to get into creating programming languages for 5th graders. LOGO is good but it's really old. Perhaps some a program that wrote web CGI stuff that could be done completely with pull down menu's and cut and paste. You would follow the menu's ex: Input/Output=>Output=>ToWebPage.

Another cool thing would be Easy OpenGL programing. There is a bunch of complex stuff you can do in opengl but I'd just limit it to a small subset. I'd automatically do all the set up work and the user would just have to say if they wanted to do 2d or 3d programming. Then they would be in a 500x500 window and could draw stuff and control the mouse etc. I'd handle all the resize math and the stupid way that the mouse reports it's position. It would be a lot like LOGO actually except for having more commands available and 3d and accept mouse input. In LOGO you just control this turtle you can move around and you can say pen up and pen down. (It's been a long long time since I used it.) So to draw a square you say pen up, move to the correct position, pen down, move forward, turn 90 deg, move, turn, move etc. This is easy to do and fun especially if you have a big robotic turtle available. But in mine you could say drawRect (x1, y1, x2, y2); (I'd just assume they were going to use floating point variables all the time...)

This could actually be a ton of fun. And then you have a web site where students can put up programs that they wrote and share them with students in other schools. And you could create other libraries for use in the class room.

Ideally you could write tetris in 5 pages of really readable code.

This could be a lot of fun I think...

siqe
10-20-2000, 02:38 AM
Jeez. i didn't read your whole first post: they want to make websites and games. hehe

well, then the anwser is this: C++ and OpenGL. without a doubt for the games.

None of the other languages except C are as fast as C++ so all games are written in that. Hmm. they want to make games. well look, the road is only long when your looking from the starting line. teach them C++ forget legos.

after they know c++ the motivated ones will be able to teach themselves OpenGL, and as they get better at simple OpenGL (they are in high school at this point) they can learn all the complicated crazy stuff about 3d graphics. hehe.

have fun, teach c++.