First programming language for high school students?
-
Wow! Consider this response my alternative to a 1 vote: Just how out of touch are you with the concept of a kid learning something new for the first time? By your logic instead of giving children coloured blocks with letters on them we should be teaching them grammar instead. People have to get an *interest* in something to learn it, hitting them over the head with a lot of fussy details is exactly the right way to get someone to *not* be interested in learning to program. Typing skills? Who cares? If they are bitten by the bug and interested enough then you don't even need a teacher at that point, they'll learn everything they need to know on their own. I didn't even have a computer when I first learned to program, I found a good book on the topic, got interested and wrote many programs in a notebook by hand until I got my hand on a computer for the first time many months later.
"It's so simple to be wise. Just think of something stupid to say and then don't say it." -Sam Levenson
Concerning the typing I merely suggested that neglecting something the kid already has learned (hopefully) within something new that he wants to learn is not a useful argument. I didn't say I want to teach him typing in addition to programming, just that the property of a language not to take care of proper typing is not sth that should be an argument in favor of it! Concerning the complexity of what someone might learn, we're not talking about a 3-year-old playing with colored bricks, but an intelligent, curious teenager who wants to learn something new. If he really wants to learn something, give him a challenge, not something he gets bored about after 5 minutes. Taking myself as an example, when I was 15, I was able to spend days and weeks on given problem, such as solving the workings of a Rubik's Cube. I even worked to improve my findings much later. OTOH other 'puzzles' that I could work out within a day I all but forgot about, knowing that I would be able to relearn it on a whim. I don't know what your preferred style of learning is, but in my experience, I learned least from easy successes, but most from hard earned failures! In the end it was the latter that drove me to learn even more and try to do better in the future, try to anticipate all those nasty little bugs that are the daily bread of any programmer. I know, some people prefer the easy way, and with powerful frameworks like VB.net you can get a long way. But it is exactly those people who have the most difficulty when they are forced to switch to other, more restrictive, programming paradigms. I know that, I've worked with them. Maybe my conclusion was a bit unclear. To be more concise: If you think your kid really wants to learn how to proper program and has the mind to grasp the concepts, do him a favor and start with a language that offers some insight into proper design and programming paradigms. If you're unsure of the longevity of your kid's interest, start out with something more accessible such as VB. My advice however is, if you do that, closely watch your kid and reconsider your decision on a regular basis. Don't hesitate to jump to sth more challenging if you believe your kid can cope with it!
-
I don't want to start a religious war here or have to wade through a history of computer languages. I would have posted on /. for that! My 15 year old son (ninth grade) wants me to teach him programming. I don't want to traumatize him with assembler -- dealing with me should be sufficient. What would be a good first language to use? We both think a barebones implementation of Life (John Conway's ...) could be a good first project. Source code should be available in virtually every language for every possible platform. He's looked at Scratch and MindStorms. He thinks they are too simplistic and wants something that is deeper. (I know MindStorms has C++, etc., but the Lego platform isn't inspiring him.). And, I don't even know if either Scratch or MindStorms is up to the task of Life. Next up might be Micropolis (SimCity) although that could be a bit daunting. Development platforms can be XP or OS X. Thanks all, David
I just did this with my college-age daughter. We used VB.NET, and I walked her through some basic how-to's.
David Veeneman www.veeneman.com
-
I don't want to start a religious war here or have to wade through a history of computer languages. I would have posted on /. for that! My 15 year old son (ninth grade) wants me to teach him programming. I don't want to traumatize him with assembler -- dealing with me should be sufficient. What would be a good first language to use? We both think a barebones implementation of Life (John Conway's ...) could be a good first project. Source code should be available in virtually every language for every possible platform. He's looked at Scratch and MindStorms. He thinks they are too simplistic and wants something that is deeper. (I know MindStorms has C++, etc., but the Lego platform isn't inspiring him.). And, I don't even know if either Scratch or MindStorms is up to the task of Life. Next up might be Micropolis (SimCity) although that could be a bit daunting. Development platforms can be XP or OS X. Thanks all, David
-
I don't want to start a religious war here or have to wade through a history of computer languages. I would have posted on /. for that! My 15 year old son (ninth grade) wants me to teach him programming. I don't want to traumatize him with assembler -- dealing with me should be sufficient. What would be a good first language to use? We both think a barebones implementation of Life (John Conway's ...) could be a good first project. Source code should be available in virtually every language for every possible platform. He's looked at Scratch and MindStorms. He thinks they are too simplistic and wants something that is deeper. (I know MindStorms has C++, etc., but the Lego platform isn't inspiring him.). And, I don't even know if either Scratch or MindStorms is up to the task of Life. Next up might be Micropolis (SimCity) although that could be a bit daunting. Development platforms can be XP or OS X. Thanks all, David
I just got into C# in the last year after having coded vbscript and vb.net for many years and I would say teach vb.net if you want to teach something and have him catch on to OOP quickly without having to worry about case, semicolons and curly bracket syntax, but C# if you want him to be able to move on easier to other things like Java and C++. From what I see in our area's job market (Midwest), C#.Net and Java skills are in high demand. If this is something he is interested in as a career, that may be a good start. If it's just for fun, take your pick.
-
I don't want to start a religious war here or have to wade through a history of computer languages. I would have posted on /. for that! My 15 year old son (ninth grade) wants me to teach him programming. I don't want to traumatize him with assembler -- dealing with me should be sufficient. What would be a good first language to use? We both think a barebones implementation of Life (John Conway's ...) could be a good first project. Source code should be available in virtually every language for every possible platform. He's looked at Scratch and MindStorms. He thinks they are too simplistic and wants something that is deeper. (I know MindStorms has C++, etc., but the Lego platform isn't inspiring him.). And, I don't even know if either Scratch or MindStorms is up to the task of Life. Next up might be Micropolis (SimCity) although that could be a bit daunting. Development platforms can be XP or OS X. Thanks all, David
Two suggestions (and then some) Alice - http://www.alice.org/ - which gets you going with the graphics right away and provides easy way to make 3D things move. Programming environment allows developing modular code. Supporting materials for teaching since that is it's purpose. Ruby - easiest tool to teach OO since everything's an object and it's better for immediate gratification/feedback as an interpreted language. Potentially harder to do GUI programming in. Javascript could be a fairly direct path to implementing a game of life, though there's some overhead in fitting programs into the whole browser context. Logo - last but not least. I like the lisp like underpinnings and the fact that there's a direct graphics connection. I think you might think in terms of 'good enough' - I don't believe there's one best language and he might be best served by knowing there's more than one way to skin a cat. Another consideration - do your schools offer any AP programming/computer science courses? What languages do they use? What's the best place to start? I've always liked GUI programming since it fulfills my need for instant gratification. But, I usually "plan to throw the first one away". In short - I'd say take a look at Alice.
No matter where you go, there you are.
-
I don't want to start a religious war here or have to wade through a history of computer languages. I would have posted on /. for that! My 15 year old son (ninth grade) wants me to teach him programming. I don't want to traumatize him with assembler -- dealing with me should be sufficient. What would be a good first language to use? We both think a barebones implementation of Life (John Conway's ...) could be a good first project. Source code should be available in virtually every language for every possible platform. He's looked at Scratch and MindStorms. He thinks they are too simplistic and wants something that is deeper. (I know MindStorms has C++, etc., but the Lego platform isn't inspiring him.). And, I don't even know if either Scratch or MindStorms is up to the task of Life. Next up might be Micropolis (SimCity) although that could be a bit daunting. Development platforms can be XP or OS X. Thanks all, David
-
I don't want to start a religious war here or have to wade through a history of computer languages. I would have posted on /. for that! My 15 year old son (ninth grade) wants me to teach him programming. I don't want to traumatize him with assembler -- dealing with me should be sufficient. What would be a good first language to use? We both think a barebones implementation of Life (John Conway's ...) could be a good first project. Source code should be available in virtually every language for every possible platform. He's looked at Scratch and MindStorms. He thinks they are too simplistic and wants something that is deeper. (I know MindStorms has C++, etc., but the Lego platform isn't inspiring him.). And, I don't even know if either Scratch or MindStorms is up to the task of Life. Next up might be Micropolis (SimCity) although that could be a bit daunting. Development platforms can be XP or OS X. Thanks all, David
C# would be a good start, but I wouldn't go in to the XNA game development. That can get complicated really quick, especially with no experience in programming or graphics programming like OpenGL. If all else fails, teach him how to use Linux and C/C++/Java!
-
Why don't you try simple games with GDI+? Snake, sokoban, ... stuff like that. I always love the fact you can draw items and make them move. I would recommend a C type language though, VB is really nasty ;)
V.
Stop smoking so you can: Enjoy longer the money you save. Moviereview ArchiveWhile I was learning, I made a Arkanoid/Breakout clone with VB.NET and GDI+. I think it's a good idea for practicing after learning basic concepts.
-
I don't want to start a religious war here or have to wade through a history of computer languages. I would have posted on /. for that! My 15 year old son (ninth grade) wants me to teach him programming. I don't want to traumatize him with assembler -- dealing with me should be sufficient. What would be a good first language to use? We both think a barebones implementation of Life (John Conway's ...) could be a good first project. Source code should be available in virtually every language for every possible platform. He's looked at Scratch and MindStorms. He thinks they are too simplistic and wants something that is deeper. (I know MindStorms has C++, etc., but the Lego platform isn't inspiring him.). And, I don't even know if either Scratch or MindStorms is up to the task of Life. Next up might be Micropolis (SimCity) although that could be a bit daunting. Development platforms can be XP or OS X. Thanks all, David
When I was in college the first thing we learned was OOD using Pascal, then moved on the C++. If you want to tie him down to Microsoft platforms then teach him VB or C#, if he truly wants to become a programmer start him with C or C++. That way he can learn to properly manage memory usage. If you start him in .Net he will end up like all these other fresh programmers coming out of school that have no idea how to properly manage memory or a thorough understanding of how a computer works. Just my 2 cents. Anthony
-
I don't want to start a religious war here or have to wade through a history of computer languages. I would have posted on /. for that! My 15 year old son (ninth grade) wants me to teach him programming. I don't want to traumatize him with assembler -- dealing with me should be sufficient. What would be a good first language to use? We both think a barebones implementation of Life (John Conway's ...) could be a good first project. Source code should be available in virtually every language for every possible platform. He's looked at Scratch and MindStorms. He thinks they are too simplistic and wants something that is deeper. (I know MindStorms has C++, etc., but the Lego platform isn't inspiring him.). And, I don't even know if either Scratch or MindStorms is up to the task of Life. Next up might be Micropolis (SimCity) although that could be a bit daunting. Development platforms can be XP or OS X. Thanks all, David
I can't do that Dave. wrote:
I don't want to traumatize him with assembler
And why not? a) you'll know if he takes a shine to that he can tackle just about any other language :-D b) that's how a lot of the older crowd here got started in the first place OTOH I do understand where you're coming from...but I'm not sure I'd appreciate my job today as much had I started with today's high-level languages...
-
I don't want to start a religious war here or have to wade through a history of computer languages. I would have posted on /. for that! My 15 year old son (ninth grade) wants me to teach him programming. I don't want to traumatize him with assembler -- dealing with me should be sufficient. What would be a good first language to use? We both think a barebones implementation of Life (John Conway's ...) could be a good first project. Source code should be available in virtually every language for every possible platform. He's looked at Scratch and MindStorms. He thinks they are too simplistic and wants something that is deeper. (I know MindStorms has C++, etc., but the Lego platform isn't inspiring him.). And, I don't even know if either Scratch or MindStorms is up to the task of Life. Next up might be Micropolis (SimCity) although that could be a bit daunting. Development platforms can be XP or OS X. Thanks all, David
I started programming when I was 12 (6th grade). I am now 15 (Turning 16 in November) I think I started with BASIC. I just got the grip of how programs work (Source, compile, etc) and then I found out about Visual Basic (VB.NET). That and Microsoft's "Absolute Beginner's" Video tutorial series really hooked me on. Absolute Beginner's video guide is like a step-by-step video tutorial that really helped me learn. Not only it goes through projects but teach essential topics and theories. It also brushes up on Object-Oriented programming with the usual "Car" object with mileage, mpg, model, year, maker, etc. By the time I could consult the MSDN documentations and write a task-manager equivalent app by myself, I knew I was growing out of the language. Then I tried to move on to C# but I found the transition a little difficult. I didn't give it enough time and patience for it to bloom... Then I found Flash. Actionscript goodiness. This is where I spent a good solid 2+ years on. I can't generate life-like trees, but I can make a full website full with transitions and dynamic data loading and video playing and mp3 play list and all the goodness. Actionscript is really easy to get in to. Its basically Javascript modified by Apple to fit Flash's needs. Then now, I'm moving on to desktop. I'm learning Cocoa and Objective-C. So far I've found it the best language to learn (that is most usable in the real world). Visual Basic's nice, but when I see Objective-C code and Visual Basic, I see so much needless junk in VB.NET it just makes me cringe. Now as for where your son starts, it is really up to you. Where did you start? Also, patience, patience, patience is the most important thing, and this is a good opportunity to teach your son lots and lots of patience. Tell him that instant gratification does not come without years of hard work. Scratch, even though it seems simple, can teach a lot about computer science. The goal of scratch is not memorizing syntax and methods, but learning how computers and programs function. The "theories" should be taught in Scratch where you don't have to emphasize with syntax and all the "confusing" things. Then perhaps should move on to Visual Basic, and after almost mastering that, perhaps he should start on Objective-C/Cocoa (About Senior by then?) And if his computer isn't a mac (his primary usage computer) then he should get started on C/C++. Good luck to your son and his journey, and feel free to have him email me anytime. I'd love to talk with him, after all, I'm
-
Concerning the typing I merely suggested that neglecting something the kid already has learned (hopefully) within something new that he wants to learn is not a useful argument. I didn't say I want to teach him typing in addition to programming, just that the property of a language not to take care of proper typing is not sth that should be an argument in favor of it! Concerning the complexity of what someone might learn, we're not talking about a 3-year-old playing with colored bricks, but an intelligent, curious teenager who wants to learn something new. If he really wants to learn something, give him a challenge, not something he gets bored about after 5 minutes. Taking myself as an example, when I was 15, I was able to spend days and weeks on given problem, such as solving the workings of a Rubik's Cube. I even worked to improve my findings much later. OTOH other 'puzzles' that I could work out within a day I all but forgot about, knowing that I would be able to relearn it on a whim. I don't know what your preferred style of learning is, but in my experience, I learned least from easy successes, but most from hard earned failures! In the end it was the latter that drove me to learn even more and try to do better in the future, try to anticipate all those nasty little bugs that are the daily bread of any programmer. I know, some people prefer the easy way, and with powerful frameworks like VB.net you can get a long way. But it is exactly those people who have the most difficulty when they are forced to switch to other, more restrictive, programming paradigms. I know that, I've worked with them. Maybe my conclusion was a bit unclear. To be more concise: If you think your kid really wants to learn how to proper program and has the mind to grasp the concepts, do him a favor and start with a language that offers some insight into proper design and programming paradigms. If you're unsure of the longevity of your kid's interest, start out with something more accessible such as VB. My advice however is, if you do that, closely watch your kid and reconsider your decision on a regular basis. Don't hesitate to jump to sth more challenging if you believe your kid can cope with it!
-
I don't want to start a religious war here or have to wade through a history of computer languages. I would have posted on /. for that! My 15 year old son (ninth grade) wants me to teach him programming. I don't want to traumatize him with assembler -- dealing with me should be sufficient. What would be a good first language to use? We both think a barebones implementation of Life (John Conway's ...) could be a good first project. Source code should be available in virtually every language for every possible platform. He's looked at Scratch and MindStorms. He thinks they are too simplistic and wants something that is deeper. (I know MindStorms has C++, etc., but the Lego platform isn't inspiring him.). And, I don't even know if either Scratch or MindStorms is up to the task of Life. Next up might be Micropolis (SimCity) although that could be a bit daunting. Development platforms can be XP or OS X. Thanks all, David
I asked the same question for my 11 year old... albeit on another forum. I think the best bet is to evaluate what interests him, and try to work around that. I had tried scratch, but it didn't quite catch my sons interest, though I thought it was good. He's interested in writing his own comics/animations, so I'm looking for something that would enable him to create animations from a somewhat programming point of view. I'd recommend also, as did others, something gui oriented.. so make it catch his interest/be in his interest area, and make it gui oriented. Finally, if he has the patience to put up with brackets, case sensitivity, etc, then don't worry about c++ being too hard, but if those are too much, try some form of basic, or maybe if you can get more graphical, delphi/cbuilder sorts of ide's. good luck Jeff
-
Sorry, I've at least had the decency to point out both my opinion and personal experience that lead to this opinion. If you feel that's bullshit, fine. If you could provide arguments as to why this is bullshit, all the better. I might consider it worthwhile, I'm not perfect after all. But please stop flaming, thank you.
-
I don't want to start a religious war here or have to wade through a history of computer languages. I would have posted on /. for that! My 15 year old son (ninth grade) wants me to teach him programming. I don't want to traumatize him with assembler -- dealing with me should be sufficient. What would be a good first language to use? We both think a barebones implementation of Life (John Conway's ...) could be a good first project. Source code should be available in virtually every language for every possible platform. He's looked at Scratch and MindStorms. He thinks they are too simplistic and wants something that is deeper. (I know MindStorms has C++, etc., but the Lego platform isn't inspiring him.). And, I don't even know if either Scratch or MindStorms is up to the task of Life. Next up might be Micropolis (SimCity) although that could be a bit daunting. Development platforms can be XP or OS X. Thanks all, David
-
It's tricky. VB vs C#, I am a Basic refugee myself and I must say after learning C# I found it much easier to learn other languages.
He who asks a question is a fool for five minutes. He who does not ask a question remains a fool forever. [Chineese Proverb] Jonathan C Dickinson (C# Software Engineer)
I actually find C# syntax much simpler than VB because it uses symbols rather than words. Symbols help the visualization and picturalization(?) of the code... that is, you can SEE it better.
“Time and space can be a bitch.” –Gushie, Quantum Leap {o,o}.oO( Looking for a great RSS reader? Try FeedBeast! ) |)””’) Built with home-grown CodeProject components! -”-”-
-
I can't do that Dave. wrote:
My 15 year old son (ninth grade) wants me to teach him programming.
If you are doing the teaching, I would choose a language that you know back-to-front - nothing worse at that sort of age than a teacher learning along with the student. Also, instant gratification is good at that age (!) so something GUI has the appeal of getting something visual up and running quickly. I taught basic VB .Net to students of this age at school - and those with at least 1/2 a logical brain picked it up pretty well - but they really needed to see something happening quickly. If I were you, I'd write a simple game of Life in whatever lanbguage first, so you have something to show - then you can take him through the development step by step. I personally think that this is not too young an age to introduce OO concepts too - so teaching OO development can make more sense if it is introduced early. If you produce the basic model, with appropriate classes - then when he gives it a go, there's always something to compare his results to, and to help out if he's stuck.
Take a chill pill, Daddy-o .\\axxx (That's an 'M')
maxxx# wrote:
I can't do that Dave. wrote: My 15 year old son (ninth grade) wants me to teach him programming. If you are doing the teaching, I would choose a language that you know back-to-front
I definitely agree with that.
maxxx# wrote:
I personally think that this is not too young an age to introduce OO concepts to
Object oriented concepts are popular because they are easy and natural. I would certainly start with OO and then if he's really hardcore get into more mathematical things like functional programming, but definitely don't start with functional programming unless he's a math genius.
“Time and space can be a bitch.” –Gushie, Quantum Leap {o,o}.oO( Looking for a great RSS reader? Try FeedBeast! ) |)””’) Built with home-grown CodeProject components! -”-”-
-
I wish I had started with assembler. Nothing teaches you to write good code better then knowing what that code is actually representing. However the instant gratification aspect is important to helping him stick with programming. C# and winforms would be a good start in my opinion (as long as you're familiar with it) I think C# opens up the world of other languages like C++ or php a lot easier then VB.
Start with a console app--it's gratifying enough to get the basics and once he understands the sequential stuff, move onto more thread-based event-driven stuff like winforms. But I vote for C#, it's much cooler and he'll probably appreciate being taught a real language. :)
“Time and space can be a bitch.” –Gushie, Quantum Leap {o,o}.oO( Looking for a great RSS reader? Try FeedBeast! ) |)””’) Built with home-grown CodeProject components! -”-”-
-
I don't want to start a religious war here or have to wade through a history of computer languages. I would have posted on /. for that! My 15 year old son (ninth grade) wants me to teach him programming. I don't want to traumatize him with assembler -- dealing with me should be sufficient. What would be a good first language to use? We both think a barebones implementation of Life (John Conway's ...) could be a good first project. Source code should be available in virtually every language for every possible platform. He's looked at Scratch and MindStorms. He thinks they are too simplistic and wants something that is deeper. (I know MindStorms has C++, etc., but the Lego platform isn't inspiring him.). And, I don't even know if either Scratch or MindStorms is up to the task of Life. Next up might be Micropolis (SimCity) although that could be a bit daunting. Development platforms can be XP or OS X. Thanks all, David
How about Java? Its available everywhere (all os's), and is quite common and useful in the outside world. My 9th grader had a mini introductory class and seemed to pass it. He didn't want me peering at him much... My intro in high school was Fortran. I don't recommend that.
-
i would vote VB or Object Pascal for a first syntax to learn, i learnt to code with Delphi a long time ago was a useful begining.
killabyte wrote:
or Object Pascal for a first syntax to learn
Why on earth would you teach somebody just learning programming a dead language? Pascal hasn't been used in years. That's like teaching a baby Latin! Personally I don't even agree with teaching so-called "educational" languages like Turing. I honestly don't understand why people claim such languages are easier or better to learn. Why not just start with the latest language and tools? C# and VS2008. That's what I would do. I mean if he has trouble grasping it or it is too much of an overload maybe you could simplify things by breaking it down and focusing on a very simple language. I'll admit the initial overhead of C# (i.e. setting up classes, a static Main method, etc.) could be intimidating but you could always just say "ignore this for now and I'll explain it later". :) Just my 2 cents.
“Time and space can be a bitch.” –Gushie, Quantum Leap {o,o}.oO( Looking for a great RSS reader? Try FeedBeast! ) |)””’) Built with home-grown CodeProject components! -”-”-