First programming language for high school students?
-
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 actually say C using C++. A good programmer needs to learn the basic procedural aspects of programming which lie at the heart of everything. Until those basic leaps of logic are made, everything else doesn't matter. Another advantage of C/C++ is how much it reflects how a computer fundamentally works. I've been increasingly disappointed with new developers who've only worked with highly abstract languages. Among other things, they don't seem to understand how computers even work and that's reflected in their code. (My greatest leap forward in programming was when I suddenly "got" assembly language. I'd just taken an Z-80 assembly class and was writing some 6502 code when all the confusing stuff ceased to be confusing. I taught myself C in three days because it was simply a great macro-assembler [C pointers didn't confuse me because I understood how assembly worked.])
Anyone who thinks he has a better idea of what's good for people than people do is a swine. - P.J. O'Rourke
modified on Tuesday, July 1, 2008 11:26 PM
-
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 actually say C using C++. A good programmer needs to learn the basic procedural aspects of programming which lie at the heart of everything. Until those basic leaps of logic are made, everything else doesn't matter. Another advantage of C/C++ is how much it reflects how a computer fundamentally works. I've been increasingly disappointed with new developers who've only worked with highly abstract languages. Among other things, they don't seem to understand how computers even work and that's reflected in their code. (My greatest leap forward in programming was when I suddenly "got" assembly language. I'd just taken an Z-80 assembly class and was writing some 6502 code when all the confusing stuff ceased to be confusing. I taught myself C in three days because it was simply a great macro-assembler [C pointers didn't confuse me because I understood how assembly worked.])
Anyone who thinks he has a better idea of what's good for people than people do is a swine. - P.J. O'Rourke
modified on Tuesday, July 1, 2008 11:26 PM
Joe Woodbury wrote:
writing some 6502 code
I remember those days :-D Then came along 80x86 assembly and still write 80x86 assembly on occasion.
"The clue train passed his station without stopping." - John Simmons / outlaw programmer "Real programmers just throw a bunch of 1s and 0s at the computer to see what sticks" - Pete O'Hanlon
-
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
-
Objective C really sucks ( addressing the OSX angle ). VB.NET is very English like, which may help. C# is also a good first language IMO, and bleeds to c++ more easily.
Christian Graus Please read this if you don't understand the answer I've given you. If you're still stuck, ask me for more information.
Why do you say so? I think it's cool! but I haven't done serious ObjectiveC programing in years (6?) so maybe I have rosy memory.. :-\ Funny thing is, last time I looked at it, FoundationKit on MacOSX was not much bigger than it was on NeXT, tss...
A train station is where the train stops. A bus station is where the bus stops. On my desk, I have a work station.... _________________________________________________________ My programs never have bugs, they just develop random features.
-
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 tend to think that it's better to learn from the bottom up, but it probably varies from individual to individual. I’m not suggesting you get carried away with this and start with assembler (when I started I didn’t even use an assembler but rather a monitor) but I do think that some understanding of the low level details makes you a better programmer, even when you’re using high-level languages. I’d probably go with C or C++. If C++ is used remember that you don’t have to learn the whole thing in one go; you can skip things like templates for example.
Steve
-
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 would say C# But don't underestimate a motivated teenager, he could tackle anything if he is rewareded with (relatively) fast result!
A train station is where the train stops. A bus station is where the bus stops. On my desk, I have a work station.... _________________________________________________________ My programs never have bugs, they just develop random features.
-
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
COnsidering I'm 20 and learned my first computer language in high school by taking a community college class. I think VB.NET is the way to go. I eventually took courses in C, C++, and C# and think VB.NET is the best. I've worked (and still work) in research and corporate and realized that knwoing the .NET framework is very very important. Your son will enjoy the idea of easily building a user interface and the intelliSense will help him in learning. Plus, chicks dig guys who know .NET. -Max
-
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 teaching myself to program in .net when I was 10 or 11, so I think I know what I'm talking about. I should probably say that I had used the Lego Mindstorms products previously(about a year), but at that point I didn't know how to use an If, so I don't know if that counts as programming experience. I've also had to teach several people( ages 12 to 17 ) basic programming skills, and my big suggestions are: 1) Don't start with a project! If you do everybody just gets overwhelmed. 2) I think .net in general is a good first platform, and VB.net in specific is fantastic. Don't worry about learning the C/C# syntax, yet. Once they get started, let them read code samples(some in C#), and they'll pick it up fast. This is generally the way I go about teaching others. 1) FizzBuzz. Start with command line programs. You can write some fun games, or tools, very quickly, and you learn all of the language features very quickly without having to learn the GUI tools first. These early apps should be simple enough that you won't need to use any real debugging tools to make them work. If nothing else things like FizzBuzz are good projects. Your first few apps should not have to deal with DBs, file system, configuration, ect. These are concepts which just confuse most people, and when you're just learning the syntax and basic framework features you really don't need more complexity. 2) Simple Project Once they have a good grasp of language features, you can start a project(simple, fun games work good.). You should try to have the first project be able to be completed within 6-12 hours. Don't spend time to architect it early. Let them design it even if it sucks. If it falls apart, talk about what happened and why it failed, then pick another topic and start again. This is where you start introducing the debugging capabilities of your tools. Even if you can see the problem by reading the code you should teach them how to use the tools, and then show them how you could see it. That serves the dual purpose of teaching the debugging tools and teaching how to ID errors without tools. Once, or if, the project gets functional you can use it to introduce factoring tools. Its good if you can then expand the project with some simple features which you never planned for. This usually means refactoring and significant debugging, since very few people write even half decent code their first time. 3) Real Project Start a real project which may take some time. Use proper source control, and m
-
COnsidering I'm 20 and learned my first computer language in high school by taking a community college class. I think VB.NET is the way to go. I eventually took courses in C, C++, and C# and think VB.NET is the best. I've worked (and still work) in research and corporate and realized that knwoing the .NET framework is very very important. Your son will enjoy the idea of easily building a user interface and the intelliSense will help him in learning. Plus, chicks dig guys who know .NET. -Max
-
I actually say C using C++. A good programmer needs to learn the basic procedural aspects of programming which lie at the heart of everything. Until those basic leaps of logic are made, everything else doesn't matter. Another advantage of C/C++ is how much it reflects how a computer fundamentally works. I've been increasingly disappointed with new developers who've only worked with highly abstract languages. Among other things, they don't seem to understand how computers even work and that's reflected in their code. (My greatest leap forward in programming was when I suddenly "got" assembly language. I'd just taken an Z-80 assembly class and was writing some 6502 code when all the confusing stuff ceased to be confusing. I taught myself C in three days because it was simply a great macro-assembler [C pointers didn't confuse me because I understood how assembly worked.])
Anyone who thinks he has a better idea of what's good for people than people do is a swine. - P.J. O'Rourke
modified on Tuesday, July 1, 2008 11:26 PM
So true. I've said this many times but it seems that few care anymore.
Sovereign ingredient for a happy marriage: Pay cash or do without. Interest charges not only eat up a household budget; awareness of debt eats up domestic felicity. --Lazarus Long
-
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'd say C++ or Java. Java is becoming a very popular language, and is used heavily in web infrastructure. And, seeing as things seem to be going the "web" way, I'd definitely teach him Java. Or, If you want to teach him some old-school C++, that's great too. Another really good reason to teach him Java, is it is cross-platform. Anything he writes will not need to be ported in any specific way. So, if he ever decides to pick up Linux, Unix, or Mac OS X, etc, his coding won't require any new libraries. And him using VB.NET, or .NET or Visual * in general limits him to Windows. Vendor-Locking is BAD! X| So, yeah, Java! :-D
-
You just gotta intriduce yourself not like: "Hi, I'm Mike. I design workflow models using WF on .NET Framework 3.5" But more like: "Hey baby, I just made an application that can make sure your Gucci shoes get to your apartment on time. I gotta go take care of a meeting, kick some ass, show them who the boss is. But give me your number and I'll hit you up later today." Side note #1: DO NOT WEAR short sleeve button down shirts. Side note #2: DO NOT WEAR military style boots, chicks don't dig that stuff. Side note #3: DO NOT TALK ABOUT .NET -Good Luck *and girls on CP, show some love. :rose:
-
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:
Also, instant gratification is good at that age (!) so something GUI has the appeal of getting something visual up and running quickly.
I couldn't agree more. The language selected should be concise and RAD-enabled. C# is that kind of language.
History repeats itself.
-
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'd guess I'd ask what is his demeanor? Would he be willing to put up with learning how a computer works and not lose interest? If so, I'd string him along with something like asm or c. If he needs immediate gratification then I'd look at a python or C#.
Sovereign ingredient for a happy marriage: Pay cash or do without. Interest charges not only eat up a household budget; awareness of debt eats up domestic felicity. --Lazarus Long
-
You just gotta intriduce yourself not like: "Hi, I'm Mike. I design workflow models using WF on .NET Framework 3.5" But more like: "Hey baby, I just made an application that can make sure your Gucci shoes get to your apartment on time. I gotta go take care of a meeting, kick some ass, show them who the boss is. But give me your number and I'll hit you up later today." Side note #1: DO NOT WEAR short sleeve button down shirts. Side note #2: DO NOT WEAR military style boots, chicks don't dig that stuff. Side note #3: DO NOT TALK ABOUT .NET -Good Luck *and girls on CP, show some love. :rose:
-
maxxx# wrote:
Also, instant gratification is good at that age (!) so something GUI has the appeal of getting something visual up and running quickly.
I couldn't agree more. The language selected should be concise and RAD-enabled. C# is that kind of language.
History repeats itself.
I'm personally not so sure about c# - if only because of : a) the CaSe SensitiVity It isn't intuituitive that Fred != fred b) the curly bracket syndrome It is scary for kids to be confronted with something full of symbols they don't understand. (unless it's graffitti in which case they seem to revel in symbols I don't understand!) While not a great fan, I have found that VB .Net is 'less confronting' to kids than c#
Take a chill pill, Daddy-o .\\axxx (That's an 'M')
-
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
For a beginning programmer, a BASIC like language (without all the "decorations" of brackets and semi-colons) is more verbose but cleaner and clearer. That suggests: VB.NET (nice language but too Form oriented) Python Ruby A personal favourite (but not free ) is Phrogram. It is a .NET Framework 2 language with a nice IDE. It pares a BASIC-like language to the bare essentials but has some very nice easy to use sprite stuff to make simple games (even 3D using DirectX 9.0c). Check out www.phrogram.com
-
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.
StevenWalsh wrote:
I wish I had started with assembler.
Speaking as one who started on 6502 assembler, hand-written in a notebook, converted to hex and entered a byte at a time, you really need to be keen to persist!
Take a chill pill, Daddy-o .\\axxx (That's an 'M')