Welcome to the MacNN Forums.

If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.

You are here: MacNN Forums > Software - Troubleshooting and Discussion > Developer Center > Teaching A Child to Program

Teaching A Child to Program
Thread Tools
macdaddy
Fresh-Faced Recruit
Join Date: Aug 2005
Status: Offline
Reply With Quote
Aug 27, 2005, 11:09 AM
 
I am the father of a precocious elementary school age boy. He reads at a level well beyond his years and is showing tremendous aptitude and love for technology. He wants to learn to write programs.

I am a relatively technically astute business user, but I am by no means a developer of any kind. I want to provide my son with the ability to pursue his interest and develop his skills. I am willing to put in the work to develop a “curriculum” for him. However, as a non-techie I have no idea where to start.

I am looking for advice on where to start. What language should he learn? Are there good beginner books with exercises that he could work through? Is there some sort of “developer” tool kit that I should buy?

I would appreciate any advice you may be able to provide. Thank you in advance.

(p.s. We are a Mac family. He has his own iMac and wants to develop on this platform. I wanted to include that since it probably affects the direction he would take.)
     
wataru
Addicted to MacNN
Join Date: Oct 2001
Location: Yokohama, Japan
Status: Offline
Reply With Quote
Aug 27, 2005, 02:19 PM
 
I first learned to program on my TI85 graphing calculator. It was a special flavor of BASIC. I've never used BASIC on OS X, but there must be something out there. I'd start with RealBASIC.

As far as "real" programming languages go, PHP is pretty easy.
     
Tesseract
Grizzled Veteran
Join Date: Apr 2002
Location: california
Status: Offline
Reply With Quote
Aug 27, 2005, 02:38 PM
 
http://pine.fm/LearnToProgram/

using the programming language Ruby
     
Millennium
Clinically Insane
Join Date: Nov 1999
Status: Offline
Reply With Quote
Aug 27, 2005, 04:31 PM
 
RoboWar is a game where you program robots to fight each other in an arena. There is no interaction once the fight begins; everything is controlled by the robots' own programming.

I would suggest a game like this before getting into Ruby or Python or anything else. This will help your child master the basic ideas behind programming -variables, control structures, and such- before moving onto serious stuff.
You are in Soviet Russia. It is dark. Grue is likely to be eaten by YOU!
     
larkost
Mac Elite
Join Date: Oct 1999
Location: San Jose, Ca
Status: Offline
Reply With Quote
Aug 27, 2005, 05:19 PM
 
I would suggest first HTML (xhtml) and then add in JavaScript. It will give a nice intro to development while providing for instant feedback, and beginning projects that he can share with others (friends, grandma, etc).

I started with TurtleBASIC, way back when, and the reason I am still programming was the instant feedback that I got making the turtle go around the screen (then the little robot that a programming camp had). And I could make a nice picture on the screen to show mommy. That was the perfect reward system to keep me going.

Anything with a compiler... or the "serious" development languages are not going to provide the instant feedback needed for your first language.
     
parallax
Admin Emeritus
Join Date: Oct 2000
Location: Boston, MA
Status: Offline
Reply With Quote
Aug 27, 2005, 06:03 PM
 
Excellent question. IMHO:

Markup languages (HTML) are right out. I think this is an imagined first step into programming: come on, how many of us really were introduced to programming via markup languages? HTML has no computationally expressive power.

I'd stay away from languages such as PHP, C, Java, Javascript, etc. While these are very "practical" languages and not too hard to learn, they're not the best you can do. I'd say these languages are a good way to teach somebody "coding", but not teach them about the wonderful abstract concepts used in computer science. At an elementary school age, it would be criminal to shunt him off into a coding direction without at least spending some time in a more abstract environment.

I recently went to a talk by Alan Kay where he demonstrated a system he's been working on,Squeak. Squeak looks very promising and in many ways is reminiscent of (and inspired by) Apple's HyperCard, which I was brought up on (unfortunately, it's discontinued).

So I'd check out Squeak. BASIC, while a horrible "real" programming language, has the benefit of being the tried-and-true "first language" of many kids in the past decades.

Hope that helps.
"Against stupidity, the gods themselves contend in vain" (Schiller)
     
Thinine
Mac Elite
Join Date: Jul 2002
Status: Offline
Reply With Quote
Aug 27, 2005, 06:11 PM
 
C.

Seriously. Teach him C (using OS X's builtin developer tools for free) and he'll have a good base off which to learn just about every other programming language out there. It's not a good idea to teach PHP or a similar language because it's untyped, which can really lead to some confusion when trying to learn typed languages.

But I also agree with parallax: this needs to be more than a language learning experience. It's also an opportunity to teach computer science concepts like parallax said, but also problem solving, which is highly important though undervalued in our current education system.
     
Kristoff
Mac Elite
Join Date: Sep 2000
Location: in front of the keyboard
Status: Offline
Reply With Quote
Aug 27, 2005, 06:16 PM
 
signatures are a waste of bandwidth
especially ones with political tripe in them.
     
Tesseract
Grizzled Veteran
Join Date: Apr 2002
Location: california
Status: Offline
Reply With Quote
Aug 27, 2005, 08:31 PM
 
I started out with LOGO (or rather a clone of it, on a IIe). I bet there is a LOGO clone available for OS X. LOGO is a picture drawing language that's not quite 'real programming' but it's a lot closer than HTML (which is not a progamming language at all).

After that I moved to Apple BASIC (the version in the IIe ROM) and TI-83 BASIC. I also had a Lego MindStorms set and used the stock software as well as NQC to program it.

Then C, C++, PHP, ActionScript (Flash), Java, Perl, and Ruby (in that order).

I'm not sure if my learning experience was the best possible. If I were doing it again, I would avoid C++ altogether. Very few people have a truly good knowledge of C++. It's very easy to assume you know it, then shoot yourself in the foot.

C, on the other hand, was a good intro to 'real' programming languages after BASIC, since I didn't have to learn both a new language and object oriented design at the same time. But C also has some pitfalls, and it mas malloc(). It's probably not a good choice of first language.

Many people think BASIC can 'pollute the mind' with bad coding habits, and I agree somewhat. It's really closer to a prettified assembly language than a modern high level language. Therefore I'm not convinced it's the best starter language.

That leaves Java, JavaScript, and the scripting languages Perl, Python, PHP, and Ruby.
Java is not as big as C++, and slightly more forgiving, but it's not the novice-oriented language some seem to think it is. Also, you're forced to do object oriented development (or use some really dirty hacks) which is good for production coding, but bad for learning to program (IMO) since you have to learn both Java and OO at the same time.

JavaScript is tied to closely to the browser and HTML and is therefore fairly limited. It's also hard to debug, and there's no way to make a simple stream-oriented program (you have to make a GUI - more work).

Perl's syntax is, IMO, arcane and ugly. Perl is better than awk (what it mainly replaced) but now there are better alternatives: Python, PHP, and Ruby.

I'm a Ruby guy, and I don't know Python. So I can't comment on the differences between these two languages very intelligently. Ruby does offer features (such as closures and metaprogramming support) that are best appreciated by experienced programmers. But that doesn't mean it's a bad first language.

PHP might actually be the best option for a first language. It's similar to C but, as a dynamic language, more forgiving. Note that PHP programs can be run on the command line; there's no need to use a web server.

Though I don't know it and therefore can't recommend it, Pascal might be a good learning language. That is, in fact, what it was designed for. There is probably a Pascal implemenatation for OS X, though I don't know of it. Perhaps someone who knows more about Pascal can comment.

There is an unfinished programming tutorial (intended for children, actually) that's based on Tcl at http://www.macdevcenter.com/pub/a/ma...ogramming.html - this is something to investigate. But I don't know of any good Tcl resources to use once you've finished the tutorial, and this could be a barrier to continued progress.

Don't start with AppleScript. It's not a general purpose language.


Lego MindStorms is an interesting option. Making robots move might be more fulfilling than outputting text into the terminal. But you have to build the robot first. Also, the stock software doesn't run on Macs (AFAIK) and I've never used NQC (the free third-party, text-based programming language for MindStorms) on a Mac, though its author uses a Mac so it should be easy enough to set up.


Some words of wisdom: Do not use a big IDE like Xcode as you're learning to program. It can be overwhelming. Compiling or executing simple programs from the command line is easy (plus you/your kid will get a good intro to UNIX if you don't know it already).

Oh, and PLEASE heed parallax and Thinine's advice about teaching problem solving.

Finally, if you want to follow Thinine's advice about teaching a typed language first, know that of the languages I mentioned, C, C++, Java, most BASICs, Pascal, and NQC are typed. PHP, JavaScript, Ruby, Perl, Python, and Tcl are untyped.
( Last edited by Tesseract; Aug 28, 2005 at 10:25 AM. )
     
shunt
Dedicated MacNNer
Join Date: Jun 2002
Location: Calculating...
Status: Offline
Reply With Quote
Aug 27, 2005, 11:46 PM
 
Originally Posted by parallax
...snip...criminal to shunt him off ...
You rang?

I would never hurt a kid...really
Please keep in mind the ambiguously selective general understandings we've all agreed upon...
     
Catfish_Man
Mac Elite
Join Date: Aug 2001
Status: Offline
Reply With Quote
Aug 28, 2005, 02:08 AM
 
I started with Object LOGO. It's fun. Then I did a very little BASIC (ugh), a good bit of self-teaching C++ (ugh), and then moved to Java and Objective-C. I'd definitely say LOGO is a good way to start off, although I'm not completely sure how much it ended up helping me.
     
itistoday
Professional Poster
Join Date: Oct 2001
Status: Offline
Reply With Quote
Aug 28, 2005, 03:28 PM
 
I was about 11 or 12 when I first started becoming interested in programming. I think one of the first programming languages I learned was probably BASIC. I think it's probably the best "intro" into programming. It's very simple, and it teaches you to think in the right direction. He would probably master it really quickly. I recommend giving him a copy of Chipmunk Basic to use to run his BASIC programs. Visit the Chipmunk Basic homepage to find some example programs for him, I feel that learning through example programs is one of best ways to learn programming.

After that he should learn C before learning any other programming language. I think this is a crucial step because if he knows C well, then he'll be set to learn many other important languages like C++, Objective-C, Java, etc. And C itself is still a very important and widely used language today. You can get the gcc C compiler from Apple by downloading Apple's Developer tools. To do so you (or he) needs to become a member (free) of Apple's Developer Connection (ADC) found here. And be sure to get him a nice book on C, I personally recommend Dave Mark's Learn C on the Macintosh (even though it's rather old and uses Codewarrior for OS 9 as its integrated development environment (IDE), it's still perfect for learning C) and K&R's The C Programming Language is an essential book that every developer should have (though it's not that great for young beginners to learn from).

One note on Dave Mark's book: Because it uses Codewarrior for OS 9, it won't teach him how to compile C applications on OS X using gcc. I'd recommend searching google for a website that shows you how to use Bash; a Unix Shell (I think Bash is the default nowadays on OS X). Show him this site so that he can become familiar with OS X's Terminal application found in /Applications/Utilities/Terminal. Though this isn't quite programming, understanding Bash and how to use a command-line interface (CLI) is important to developing applications.

After he learns C he'll probably know where to go from there himself.

Good luck!

Edit: Oh, and one more thing, make sure he understands that at anytime if he's ever stuck he can use google to search for the answers to his questions. Google itself could be called a programmer's tool

And just for kicks, here's an example of using the command line (CLI) to compile and run C programs on OS X:
Code:
[prompt]$ cd path/to/folder/that/contains/program [prompt]$ gcc HelloWorld.c [prompt]$ ./a.out Hello World! [prompt]$
Where HelloWorld.c is a text file that contains the following:
[php]#include <stdio.h>

int main() {
printf("Hello World!\n");
return 0;
}[/php]
( Last edited by itistoday; Aug 28, 2005 at 04:01 PM. )
     
Tesseract
Grizzled Veteran
Join Date: Apr 2002
Location: california
Status: Offline
Reply With Quote
Aug 28, 2005, 03:47 PM
 
Never used ChipmunkBasic before, but just downloaded and tried it. It looks like a great tool. And there are worse languages to learn to program in than BASIC. I'd recommend it.

For a BASIC book, just about any will do as you're getting started (even if it's 20 years old, as some of the better ones might be). ChipmunkBasic is a 'line numbered' BASIC, so an Apple BASIC book would be more appropriate than (say) a QBasic one. But do NOT buy a Visual Basic book, that's a completely different language.

Once you son's learnt BASIC, C would be an excellent choice of second language.
     
szymczyk
Fresh-Faced Recruit
Join Date: Aug 2005
Status: Offline
Reply With Quote
Aug 28, 2005, 06:25 PM
 
Originally Posted by itistoday
And be sure to get him a nice book on C, I personally recommend Dave Mark's Learn C on the Macintosh (even though it's rather old and uses Codewarrior for OS 9 as its integrated development environment (IDE), it's still perfect for learning C) and K&R's The C Programming Language is an essential book that every developer should have (though it's not that great for young beginners to learn from).

One note on Dave Mark's book: Because it uses Codewarrior for OS 9, it won't teach him how to compile C applications on OS X using gcc.
He has an updated version of his book using Xcode on Mac OS X. You can learn more about it at http://www.spiderworks.com
Mark Szymczyk
Author, Xcode Tools Sensei
http://www.meandmark.com
     
itistoday
Professional Poster
Join Date: Oct 2001
Status: Offline
Reply With Quote
Aug 28, 2005, 11:49 PM
 
Originally Posted by szymczyk
He has an updated version of his book using Xcode on Mac OS X. You can learn more about it at http://www.spiderworks.com
Wow, that's pretty cool, I didn't know that. Then I definitely recommend that book
     
I was David B.
Registered User
Join Date: Jan 2005
Location: there are days when I wake up and thats exactly my question
Status: Offline
Reply With Quote
Aug 29, 2005, 09:46 AM
 
Python,

because it is easy, very powerful and will get him quick results (young boys tend to give up soon). He will also learn basic programming knowledge without the frustration that C can lead to. Python is also generous if the programmer makes mistakes because it does not use data types.

Then, at an advanced level, C or Java.
     
SVass
Mac Elite
Join Date: Jul 2003
Location: Washington state
Status: Offline
Reply With Quote
Aug 29, 2005, 03:25 PM
 
Basic-because you can get instant feedback and it is tolerant of mistakes. Who learned to ride a racing bicycle without falling or starting on a trike, etc. Anyone who says that Basic encourages bad programming habits doesn't understand Basic. Several top programmers around me had a competition in trying to write the "fastest" version of Conway's Life using a crippled Basic. It was interesting and taught good habits. A decent interpreted/compiled Basic in the hands of an expert can outperform most higher level languages. I have seen bad coding habits in many languages. sam
     
Tesseract
Grizzled Veteran
Join Date: Apr 2002
Location: california
Status: Offline
Reply With Quote
Aug 29, 2005, 04:17 PM
 
BASIC (at least in the earlier variants) makes it hard to write or call a true function or subroutine. This leads to either code repetition, or excessive use of GOTO statements. Although facilities for writing functions exist in newer BASICs, in many cases these give up some of the simplicity of the original. (The worst offenders are RealBasic and VB... I have a hard time considering either of these a true BASIC.)

However, BASIC is not a bad first language. And if you stick to just the (ahem) basics, then move on to C fairly early in your programming career, you can pretty much completely avoid the 'bad habit forming' parts of BASIC while still getting the advantages of starting out in an easy and forgiving language like BASIC.

As an aside... I'm sure many will disagree, but I think the interactivity of the older line numbered BASICs like Apple BASIC (and ChipmunkBasic) is wonderful when learning to program. You can get started without having to learn an editor, and since the editor and shell are the same thing, you can get instant feedback on your programs with minimum hassle. (Just type RUN).
     
Chuckit
Clinically Insane
Join Date: Oct 2001
Location: San Diego, CA, USA
Status: Offline
Reply With Quote
Aug 29, 2005, 04:19 PM
 
These "instant feedback" arguments seem to work even better for Python (or Ruby with IRB, actually).
Chuck
___
"Instead of either 'multi-talented' or 'multitalented' use 'bisexual'."
     
Tesseract
Grizzled Veteran
Join Date: Apr 2002
Location: california
Status: Offline
Reply With Quote
Aug 29, 2005, 06:55 PM
 
With IRB you have to get it right the first time (since IRB isn't an editor).
AFAIK, Python would be the same way (if it has an interactive shell at all).
     
Chuckit
Clinically Insane
Join Date: Oct 2001
Location: San Diego, CA, USA
Status: Offline
Reply With Quote
Aug 29, 2005, 07:18 PM
 
Python is interactive by default. Open python and type "print 'hello world'" and it will immediately print "hello world".

But you're right, they're not really editors. You don't really "have to get it right the first time," though, since it isn't particularly challenging to redo it if you messed up the first time.

At any rate, even if you want to use an editor, you still just have to type "ruby myscript" to run it. How much harder is that than typing "run"?
Chuck
___
"Instead of either 'multi-talented' or 'multitalented' use 'bisexual'."
     
Tesseract
Grizzled Veteran
Join Date: Apr 2002
Location: california
Status: Offline
Reply With Quote
Aug 29, 2005, 07:31 PM
 
Then you have to either learn a *nix editor, or switch between TextEdit and Terminal windows. But really, the editor issue isn't that big a deal. So let's not belabor the point.
     
Detrius
Professional Poster
Join Date: Apr 2001
Location: Asheville, NC
Status: Offline
Reply With Quote
Aug 31, 2005, 01:02 AM
 
Originally Posted by wataru
I first learned to program on my TI85 graphing calculator. It was a special flavor of BASIC. I've never used BASIC on OS X, but there must be something out there. I'd start with RealBASIC.

As far as "real" programming languages go, PHP is pretty easy.
I agree that the graphing calculators are a great place to start. This is where I really learned how to program. Absolutely everything you need to know about programming for the graphing calculator is included in the instruction manual--which is in the box. This offers variables, user input and output, as well as the ability to easily draw on the screen. Many of the major programming languages for computers do not make much of this easy.

The only down side is that programming user interfaces and performing drawing on the screen is far more difficult on the computer (except in Cocoa), which winds up just moving the learning curve further back. On the other hand, this kind of creative problem solving will be a valuable asset for the rest of your child's life.
ACSA 10.4/10.3, ACTC 10.3, ACHDS 10.3
     
I was David B.
Registered User
Join Date: Jan 2005
Location: there are days when I wake up and thats exactly my question
Status: Offline
Reply With Quote
Aug 31, 2005, 07:42 AM
 
Originally Posted by Detrius
I agree that the graphing calculators are a great place to start.
Does this make sense?
If he wants to learn how to program his iMac, he should start programming his iMac and not another device.

The main problem with this question is in my view, that the question is the wrong one. We have seen many answers and if we wait for a longer time we might have a complete set of programming languages here.

The right approach would be something like this: I hate the calculators on my mac and I have an idea how to write a really good one. What language is the best to do that?
Or: WoW is a great game for kids. But I'd like to write grown up games for the mac (The answer in this case would never be Ruby, or Basic or Python, or Ti85).

Most programmers start learning a programming language and then ... simply don't know what to do with it.
I would propose that macdaddy tells us what interests his son has (besides programming) and then we can provide him with tips which tools are the best for the iMac to support and develop his sons interests.

A programming language is only a tool to do something. If you cannot do more than programming a computer you end waiting for someone else to tell you what to do with your knowledge and abilities - this person is called your boss then. Who wants that?
     
Tesseract
Grizzled Veteran
Join Date: Apr 2002
Location: california
Status: Offline
Reply With Quote
Aug 31, 2005, 12:26 PM
 
Modern computer systems like OS X are sufficiently complex that it's nearly impossible for a novice to make meaningful progress toward a goal such as "make a flight simulator" or "write a Kid Pix clone" or even "make a command-line RSS reader" without some foundation knowledge.

Suppose I went to a machinist and asked him to teach me how to build a car. He would at first set that goal aside and show me how to use a lathe, bandsaw, welding apparatus, etc. Then, once I had a basic knowledge of metalworking, he could offer guidance in my car-building project.

Programming is the same way - there is a basic set of skills which, once learned, enable the programmer to continue his learning or work toward a goal with only minimal guidance. But without these basic skills (which are largely independent of the final goal), one will have a hard time working on even a moderately involved programming project.
     
I was David B.
Registered User
Join Date: Jan 2005
Location: there are days when I wake up and thats exactly my question
Status: Offline
Reply With Quote
Aug 31, 2005, 12:38 PM
 
Originally Posted by Tesseract
Suppose I went to a machinist and asked him to teach me how to build a car. He would at first set that goal aside and show me how to use a lathe, bandsaw, welding apparatus, etc.
Yes, exactly. He will teach you abilities that you need to build a car.
Suppose macdaddys son wants to build a website and he follows the advice to learn Basic... Not completely useless but also not exactly the right way to go.
Agree?

Thus, if he knows what he wants to do, he can start to think what to learn first.
     
Tesseract
Grizzled Veteran
Join Date: Apr 2002
Location: california
Status: Offline
Reply With Quote
Aug 31, 2005, 01:10 PM
 
Originally Posted by I was David B.
Suppose macdaddys son wants to build a website and he follows the advice to learn Basic... Not completely useless but also not exactly the right way to go.
Agree?
macdaddy said his son wants to learn to program. To most of us who are programmers, this rules out things like "he wants to build a website" (unless the website is a dynamic one). BASIC is a good introduction to just about all of the activities a programmer or other computer expert considers to be "programming", which is why most of us suggested BASIC or [insert favorite language here].

On the other hand, if macdaddy's son really just wants to make a website, then we need to know so we can recommend a good way to learn. (And so this topic can be moved into the web development forum where it would belong.)


I do agree with I Was David B.'s original point that learning on a graphing calculator is a bad idea (for several reasons, one of which is the same as David's).
     
Detrius
Professional Poster
Join Date: Apr 2001
Location: Asheville, NC
Status: Offline
Reply With Quote
Sep 1, 2005, 02:48 AM
 
Originally Posted by I was David B.
Does this make sense?
If he wants to learn how to program his iMac, he should start programming his iMac and not another device.

...
While I agree with this for someone of high-school age or older, we're talking about an elementary school kid ( whose specific age I haven't caught ). While I'm no expert on children, my instincts tell me that an elementary school kid isn't going to have the attention span involved in programming for the computer. It's not a simple task to make a GUI program that draws dots and lines and circles, etc... The important parts (in my mind) are that the language needs to be simple, and the API needs to be something comprehendible--something that C and C++ are not if you have never programmed before. Also, the kid doesn't need to be worrying about pointers, references, or memory allocation. If the kid is in public school ( and depending on the school system ), knowing how to properly take advantage of the required graphing calculator is going to be far more useful in the short term (i.e. pre-college graduation) than learning how to program on the computer at home that you can't take to class with you. However, this isn't necessarily an issue if the kid is home-schooled or in a school system that doesn't use the TI graphing calculators (the TI-89 does Calculus for you).

I have also heard that LEGO Mindstorm is a great programming platform for kids, but I haven't looked into it. Supposedly, it's similar to C.
ACSA 10.4/10.3, ACTC 10.3, ACHDS 10.3
     
Dr.Michael
Registered User
Join Date: Oct 2003
Status: Offline
Reply With Quote
Sep 1, 2005, 03:49 AM
 
Originally Posted by Detrius
I have also heard that LEGO Mindstorm is a great programming platform for kids, but I haven't looked into it.
Oh, yes. That sounds like a very cool idea. Lego has developed some very nice technologies.
     
Tesseract
Grizzled Veteran
Join Date: Apr 2002
Location: california
Status: Offline
Reply With Quote
Sep 1, 2005, 09:17 AM
 
Originally Posted by Detrius
I have also heard that LEGO Mindstorm is a great programming platform for kids, but I haven't looked into it. Supposedly, it's similar to C.
On Windows, the Lego programming environment is a graphical interface where you drag-n-drop "code blocks" (little colored squares with actions written on them) into stacks which run sequentially. It's easy to get started but limited in power (though the current version 2.0 has addressed many of its limitations in programming).

There is no officially supported Lego programming environment on the Mac. There is a third party tool, NQC, which provides a C-like programming environment for Lego Mindstorms. (There is also an alternative OS for the Lego microcontroller brick which lets you write actual C programs for the robot and compile them with a cross-compiler like GCC. You don't want to start out with this approach.)

If you go this route, make sure to buy the original "Lego Mindstorms Robotics Invention System 2.0". Recently, Lego has released some 'robotics' kits which can't be programmed from a computer (or at all), and these are inferior.
     
arcticmac
Dedicated MacNNer
Join Date: Apr 2004
Status: Offline
Reply With Quote
Sep 4, 2005, 10:29 PM
 
TI Basic is a very nice starting point as a basic scripting language, (if you happen to have a TI graphing calculator handy). It has, among other advantages, that it uses the same commands to run it as you can execute normally, but they can be glued together with extra stuff (loops, etc). and has elementary variable support (on the 83+ or 84+. The 89 has wide options for variables and is quite advanced). So that way, once the kid knows the calculator, it's easy to move into programming it (or at least, fairly easy).

If TI BASIC is not an option (due to lack of a TI Graphing calculator), try to start him with AppleScript, as a basic intro to programming concepts. If he's like me, he's sure to get pissed with AppleScript shortly after mastering it because it's limited to working off other apps and (unless you go to AppleScript studio), you can only put up simple dialogs and stuff. One thing that I always found fun was to write a script that would show the first few numbers of a sequence, and then you had to guess the next one. The ones I wrote were sequences I invented to test other people, but it would be an interesting extension to have the program generate its own sequences each time.

Also, while he's learning that, introduce him to a good markup language, preferrably XHTML. While not really a programming language, XHTML/XML is a good thing for all programmers to know, whether they need to create documentation, a product delivery web page, or are working on a human-readable document format. w3schools.com has some good tutorials.

Next, I'd recommend moving into Cocoa. This has, in my mind, the following advantages:
1. Fairly easy to get a grasp on, once you have some basics down.
2. Loads of capability without too much work. You don't have to spend your time worrying about creating windows via code, or anything like that, so you can focus more on what you want to do, and it won't take as long for a beginner to get a decent product.

I'd recommend that you start Cocoa out with a simple book, to teach him basically what the syntax is, and what's going on (it's a bit overwhelming at first), and then have him work out a bunch of tutorials. Make sure he always types the code from the tutorial, rather than using copy/paste, cause that way he'll remember better. The book I learned cocoa from is called "Learning cocoa with objective c". I recommend the tutorials at http://www.macdevcenter.com/ and http://www.cocoadevcentral.com/, as well as the examples included with apple's developer tools.
     
phoenix78
Dedicated MacNNer
Join Date: Mar 2005
Status: Offline
Reply With Quote
Sep 6, 2005, 11:17 AM
 
Hi guys...

i absolutely am convinced that the point is being missed completely!

I have two degrees from uni: Computer Systems Engineering(hons) and Computer Science and i can tell you that it means NOTHING to specifically set out and learn a programming language.

What is most important is to learn the problem solving skills needed by a programmer in order to devise a solution to a clients needs and then that will lead to choice of the most appropriate language for that kind of solution an d then coding etc...

Buy a book on 'UML' and 'assembly code' and 'data structures' and get him thinking about certain structures like 'flow charts' and also objects like arrays and linked lists and then the UML will be good for describing how various bits of code are related to each other and also the assembly code stuff will be about memory management at a lower level of abstraction...

Also 'software engineering' - how to work in teams (because many if not most programmers will work in a team) and also how to handle complexity of a project and break it down into sections.

This is the fundamentaly most important thing a programmer can learn....

forget targetting a language! you will use so many languages and some may not be appropriate for a certain task and you wont learn what is really required... the books you buy wil have code in them as examples and you will learn to code from that! (possibly C and java).

rule of thumb taught to me by my lecturers is that if you learn the above techniques then you can program in ANY language...

my 2c worth

cheers
robM.
     
I was David B.
Registered User
Join Date: Jan 2005
Location: there are days when I wake up and thats exactly my question
Status: Offline
Reply With Quote
Sep 6, 2005, 11:23 AM
 
Originally Posted by phoenix78
Hi guys...
...
Buy a book on 'UML' and 'assembly code' and 'data structures' and get him thinking about certain structures like 'flow charts' and also objects like arrays and linked lists and then the UML will be good for describing
...
cheers
robM.
You are kidding, right?
     
Chuckit
Clinically Insane
Join Date: Oct 2001
Location: San Diego, CA, USA
Status: Offline
Reply With Quote
Sep 6, 2005, 12:06 PM
 
Originally Posted by phoenix78
Hi guys...

i absolutely am convinced that the point is being missed completely!

I have two degrees from uni: Computer Systems Engineering(hons) and Computer Science and i can tell you that it means NOTHING to specifically set out and learn a programming language.

What is most important is to learn the problem solving skills needed by a programmer in order to devise a solution to a clients needs and then that will lead to choice of the most appropriate language for that kind of solution an d then coding etc...

Buy a book on 'UML' and 'assembly code' and 'data structures' and get him thinking about certain structures like 'flow charts' and also objects like arrays and linked lists and then the UML will be good for describing how various bits of code are related to each other and also the assembly code stuff will be about memory management at a lower level of abstraction...
How many of those degrees did you get when you were a little kid?
Chuck
___
"Instead of either 'multi-talented' or 'multitalented' use 'bisexual'."
     
phoenix78
Dedicated MacNNer
Join Date: Mar 2005
Status: Offline
Reply With Quote
Sep 6, 2005, 09:46 PM
 
the point i was trying to make is to focus on problem solving...

even if the child doesnt read the books himself the parent can read it and then explain some basic diagrams. I have some introductory books that are very easy to read and have lots of diagrams that you wouldnt even think they were for software eng or uml etc... so there is something for everyone and at any level

if you guys think my comments were insne then how much more insane is it to suggest a little kid to learn a programming language ?!

what macdaddy seemed to want was to get his son a headstart into learning IT. and so problem solving was the best wasy in my opinion since it is non technical. some concepts like project management and certain data structures and flow charts are borne out of common sense and logic that are not tied exclusively to IT. these can then be used throughout life in any circumstance.

I mentioned my qualifications to show that i do have alot of experience in what is 'really' involved in the IT world. the reality is that when you go to college you dont get to playy with robots and tinker with computers until you are in what... 3rd, 4th year +... it all the way through heavy on maths and physics and without having strong problem solving you wil be lost.

robM
     
I was David B.
Registered User
Join Date: Jan 2005
Location: there are days when I wake up and thats exactly my question
Status: Offline
Reply With Quote
Sep 7, 2005, 05:39 AM
 
It would be nice to hear a word from macdaddy.

Did you get some useful information? Do you know what to do now? Are you completely puzzled?
     
itistoday
Professional Poster
Join Date: Oct 2001
Status: Offline
Reply With Quote
Sep 7, 2005, 10:35 AM
 
Originally Posted by I was David B.
It would be nice to hear a word from macdaddy.

Did you get some useful information? Do you know what to do now? Are you completely puzzled?
I think he's a bit overwhelmed by the amount of responses....
     
I was David B.
Registered User
Join Date: Jan 2005
Location: there are days when I wake up and thats exactly my question
Status: Offline
Reply With Quote
Sep 15, 2005, 04:35 AM
 
Originally Posted by itistoday
I think he's a bit overwhelmed by the amount of responses....
No response from Macdaddy. Seems our comments have not been read at all by the one who asked for them...
     
itistoday
Professional Poster
Join Date: Oct 2001
Status: Offline
Reply With Quote
Sep 15, 2005, 10:06 AM
 
Originally Posted by I was David B.
No response from Macdaddy. Seems our comments have not been read at all by the one who asked for them...
And no response from you! When are you planning on emailing me those source files you used to benchmark java??
[/offtopic]
     
outsourced
Forum Regular
Join Date: May 2005
Status: Offline
Reply With Quote
Sep 15, 2005, 01:20 PM
 
Well, even though there's no response from the topic starter, this is still a good topic.

My first programming language was BASIC. Before CBASIC (remember that one?), it was the old-school line numbers and spaghetti-generating GOTOs. However, BASIC did improve wherein one could call functions and subroutines (MS Compiled BASIC and VB).

BASIC had and still has the benefit of being readable. COBOL is even more readable, but...ok nevermind.

FORTRAN came next for me. Then I discovered Pascal. That became my favorite language. But, I owe it to BASIC for helping me to learn how to program in the first place.

Remember: The first letter in B.A.S.I.C. stands for "Beginner's". Worked for me.

The only thing I regret is not learning OOP. I keep putting off learning JAVA. However, PHP is more important to me right now...and it has OOP.

Oh, yeah. The data structures and logic flow are still important, as was mentioned by the degree-wielding poster. After all, we didn't learn programming languages per se; we learned how to manipulate information using a certain language. So, yes, problem-solving is definitely important; but, that can be learned while learning the language itself.

As for a favorite language today: I don't really have one. I recently tried learning AppleScript after putting it off for years, but it didn't interest me.

Like I said before, PHP is on the top of my list. Basically anything web-related.

Cheers!
Did Schroedinger's cat think outside the box?
     
I was David B.
Registered User
Join Date: Jan 2005
Location: there are days when I wake up and thats exactly my question
Status: Offline
Reply With Quote
Sep 15, 2005, 03:11 PM
 
Originally Posted by itistoday
And no response from you! When are you planning on emailing me those source files you used to benchmark java??
[/offtopic]
probably never.
They are no isolated single source files (mostly). So the most striking performance problems can only be checked if

- I deliver a complex software (which I must not do)
- I spend a lot of time to put this all into a well isolated form

I may find the time in my next vacation (a weekend will not be enough). But as soon as an intel version of java is out, things will look completely different. So I don't think it is worth to spend the time now.
Lets benchmark again when we have the new hardware.
OK?
     
itistoday
Professional Poster
Join Date: Oct 2001
Status: Offline
Reply With Quote
Sep 15, 2005, 04:18 PM
 
Originally Posted by I was David B.
probably never.
They are no isolated single source files (mostly). So the most striking performance problems can only be checked if

- I deliver a complex software (which I must not do)
- I spend a lot of time to put this all into a well isolated form

I may find the time in my next vacation (a weekend will not be enough). But as soon as an intel version of java is out, things will look completely different. So I don't think it is worth to spend the time now.
Lets benchmark again when we have the new hardware.
OK?
Sure, but you'll have to admit that reply is a bit late in coming.
     
I was David B.
Registered User
Join Date: Jan 2005
Location: there are days when I wake up and thats exactly my question
Status: Offline
Reply With Quote
Sep 15, 2005, 05:09 PM
 
Originally Posted by itistoday
Sure, but you'll have to admit that reply is a bit late in coming.
Yes, I am sorry. You are right of course.
     
goMac
Posting Junkie
Join Date: May 2001
Location: Portland, OR
Status: Offline
Reply With Quote
Sep 15, 2005, 07:34 PM
 
I would recommend RealBasic. If these were still the Mac OS 9 days, I would fully recommend HyperCard/HyperTalk, but that was never updated for Mac OS X.
8 Core 2.8 ghz Mac Pro/GF8800/2 23" Cinema Displays, 3.06 ghz Macbook Pro
Once you wanted revolution, now you're the institution, how's it feel to be the man?
     
   
 
Forum Links
Forum Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Top
Privacy Policy
All times are GMT -4. The time now is 09:16 AM.
All contents of these forums © 1995-2017 MacNN. All rights reserved.
Branding + Design: www.gesamtbild.com
vBulletin v.3.8.8 © 2000-2017, Jelsoft Enterprises Ltd.,