First programming language for high school students?
-
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! -”-”-
well imho the syntax is quite seperate from the fundamentals of programming, i cited VB & Object Pascal because the syntax is easily interpretable for an absolute beginner and thus the concepts behind the code can be explained more easily. In the end a good programmer can pick up ANY syntax and tool set and produce a product from it. hell you wana talk dead languages i had to teach myself COBOL to maintain legacy code a while back and dare i say it but when they stopped making compilers for that i was still in nappies. programming fundamentally is a way of thinking, the syntax is just the medium by which u communicate with the 1s and 0s.
-
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
You see, I don't believe that it should be about any one language as such. There are two main aspects to "Programming" 1) Programming (The Brain Stuff) -- This is the part where the student figures out an idea in a logical order. 2) Coding (The Easy/Automatic Stuff) -- Once you have an idea in your brain that is in a logical order you can then formulate it into instructions for the computer to understand(i.e. code). The simplest way of explaining this is the process of baking a cake. First one needs to figure out how to bake a cake and make choices about that cake(i.e chocolate, vanilla, etc.), this is the programming. Finally one needs to bake it, this is the coding. N.B In this example it does not matter whether the cake is conceived in French, Spanish, German, English, etc. You still end up with the same result - a cake. The same with programming, it doesn't matter if the language is C++, C#, VB.NET, Assembler, Delphi, FORTRAN or COBOL, etc. You still end up with a program that is the expression of the original idea, this allows the student an easier conversion between different methods of expression (different languages), thus nulling the need for any one specific language. So in essence, Coding is the expression of the idea that Programming provides. Therefore it is not important which language a student learns, only that they learn the correct idea structure behind the code. It also helps with alot of problem solving in life as well :-D.
-
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#, in a text editor, and compile at the command line. But the student really needs to teach himself, the teacher merely guides. My first programming class was in my senior year of high school (1983) using BASIC-Plus on a PDP-11. Up until I took the class I'd see printouts my friends had and think, "How could that possibly tell a computer what to do?"
-
Ignore him, he sounds like a dolt. My point is that there needs to be something that sparks interest and it must be easy at first. Without that initial spark of interest nothing in the world will cause that person to want to go through all the painful lessons of being a good programmer. You need to get them interested in an easy way and then let them take off with it on their own (learning the hard bits) or drop it if they have no further interest. People of all ages need the initial impression that something is easy and fun before they will take take it any further.
"It's so simple to be wise. Just think of something stupid to say and then don't say it." -Sam Levenson
I would normally agree. If I were a teacher at school trying to get my pupils interested, I would indeed start off with something easy and rewarding, to make sure they at least get some interest in the topic. But the kid in this case specifically *asked* to be taught, so I assumed the 'initial spark of interest' is already there. Then again I really don't know how much of a spark it really is and if it requires some more fuel at first...
-
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
Perl. Haha! I'm kidding! Like everyone else has said VB. For a while, I know Microsoft was offering free video lessons (from learnvisualstudio.net) on their site that taught you how to write an RSS reader. Very, very good for someone who's never done any programming before. Being able to SEE someone who what you need to be doing is an amazing tool, especially for someone new, and someone young. There was a C# set of the videos, too as I remember. I can't find the link to those particular videos right now, but check this out: Microsoft's Beginner Developer Learning Center[^]
-
You see, I don't believe that it should be about any one language as such. There are two main aspects to "Programming" 1) Programming (The Brain Stuff) -- This is the part where the student figures out an idea in a logical order. 2) Coding (The Easy/Automatic Stuff) -- Once you have an idea in your brain that is in a logical order you can then formulate it into instructions for the computer to understand(i.e. code). The simplest way of explaining this is the process of baking a cake. First one needs to figure out how to bake a cake and make choices about that cake(i.e chocolate, vanilla, etc.), this is the programming. Finally one needs to bake it, this is the coding. N.B In this example it does not matter whether the cake is conceived in French, Spanish, German, English, etc. You still end up with the same result - a cake. The same with programming, it doesn't matter if the language is C++, C#, VB.NET, Assembler, Delphi, FORTRAN or COBOL, etc. You still end up with a program that is the expression of the original idea, this allows the student an easier conversion between different methods of expression (different languages), thus nulling the need for any one specific language. So in essence, Coding is the expression of the idea that Programming provides. Therefore it is not important which language a student learns, only that they learn the correct idea structure behind the code. It also helps with alot of problem solving in life as well :-D.
I agree. Maybe consider teaching two languages at once (vb.net and c#.net?) so you can demonstrate that the language is less important than the approch. I suggest the .net languages because they are similar enough that you can do the same code in both and then you can progress to compiling dlls for inclusion.
-
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 learned with C and C++... but I do not reccomend them at all... My University goes with C# (for some odd reason... maybe they are in bed with M$). I would have loved to learn with Ruby, all those free 'text books' out there (_whys for one) would have really helped my interest a lot. Ruby is also nice and easy to read and understand once you get the if and endif stuff down. There is also Hackety Hack to go along with ruby as a tutor for the simpler stuff (found here
-
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')
Personally, I started learning C++ in my spare time when I was ten years old. By the time I was 11 or 12, I was writing MFC GUI apps and was studying PHP and HTML. Around 16 I began learning x86 assembly. Admittedly this is a bit of an extreme case - among computer science majors at my college I've only found one or two that have been coding as long as I have - but I still recommend C++.
-
Stefan63 wrote:
I strongly advise against assembler. It lacks the structure of higher languages and without knowing how to properly design and structure a system you won't really learn a lot by mastering assembler!
Totally agree. I wrote some pretty lame assembly programs in school until I realized that I could write out BASIC pseudocode programs and translate the statements to their assembly counterparts. Raw assembly is very hard to get your head wrapped around without suitable context, either through a high-level language or very intimate knowledge of the underlying hardware.
Imagine that you are hired to build a bridge over a river which gets slightly wider every day; sometimes it shrinks but nobody can predict when. Your client provides no concrete or steel, only timber and cut stone (but they won't tell you what kind). The coefficient of gravity changes randomly from hour to hour, as does the viscosity of air. Your only tools are a hacksaw, a chainsaw, a rubber mallet, and a length of rope. Welcome to my world. -Me explaining my job to an engineer
I rarely write raw assembly code. I usually make an entire app / subsystem / function in C++, and then do profiling to see where most of the time is being spent. I then "hand compile" the speed-critical areas to assembler and optimize them. I've been coding in C++ since age ten, so I practically think in it. IMO design is far easier in C++ than assembly because you can focus on WHAT you're doing more than HOW.
-
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 do a lot of performance-critical stuff (image processing, gaming, simulation) and write x86 assembly at least every other week. Although assembly is difficult compared to C++, I actually find asm programming to be a bit more "fun" than C++... when taking in small doses :)
-
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
Having been a high school computer science teacher, I would recommend something simple. Currently, my flavor of choice would be to start with Groovy and work up to Java. Groovy's loose syntax and reduced requirements make it a natural for simple language acquisition. In addition, Groovy merges seamlessly with Java code, and most (99.9%) Java code is compilable Groovy code. As an added benefit, the Java graphics library since 1.4 has been quite simple to get up and running. There are many good books on Game Programming in Java and should work as a strong launching point. Moreover, if your child is planning on taking AP computer science in high school, the language used by ALL schools that offer AP credit is Java. And double plus good, it is very simple to move from Java to C# (indexers and delegates were really my only stumbling blocks in making the switch).