Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. First programming language for high school students?

First programming language for high school students?

Scheduled Pinned Locked Moved The Lounge
c++question
119 Posts 82 Posters 20 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • I I cant do that Dave

    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

    M Offline
    M Offline
    malpeli
    wrote on last edited by
    #103

    ow my,,, you are so microsoft that make me laft.... RUBY are the more simple for the nus because is more natural and have dinamicly typing... sorry my english. tks Malpeli

    1 Reply Last reply
    0
    • S Stefan_Lang

      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! Assembler was my second language (after Pascal, and before Basic, and I know what I'm talking about - I'd never had been able to write an assembler program longer than a few hundred lines without the knowledge to properly design it first!

      R Offline
      R Offline
      Robert Royall
      wrote on last edited by
      #104

      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

      A 1 Reply Last reply
      0
      • T Trevortni

        QBasic. Sidestep the whole Windows GUI thing altogether until he's ready for it. Download a whole bunch of QBasic games that he can play with, and if he wants to modify variables while playing, he can hit Ctrl-Break to change values on the fly. My first experiments with programming were changing how much energy I had left in Star Trek games in gw-basic (avoid that, he'll thank you for the GUI in the programming interface). There was even a game I enjoyed called "Archie" (the cockroach main character of the game) that explained some basic programming concepts in-game (the spaghetti code explanation still sticks with me). As he mods games, he'll gain an understanding of how they were put together, and he'll have plenty of source code to base his own ideas on. Eventually he'll grow tired of the limitations of the language. He'll want to do different things with variables that QBasic doesn't make easy. When he gets to this stage, it's the perfect time to springboard him into C++. When you introduce pointers, it'll be that much more real to him, because he will be able to see how they would have been useful in QBasic. Ditto for classes and the like (actually, years after the fact, I returned to QBasic and discovered that it did, in fact, have user-defined datatypes, which I would have liked to know what they were at the time). And after he's made a few of his own interfaces, he'll learn to appreciate the value of having newer languages make GUIs easy. Or maybe that was just me. :)

        R Offline
        R Offline
        Robert Royall
        wrote on last edited by
        #105

        Not just you. I broke out of QBASIC into VB5 because I was tired of writing my own graphics routines and trying to handle mouse and keyboard interrupts sucked. I broke out of VB6 to VC++6 because I was tired of trying to work with API declarations that bluescreened my system if I set them up incorrectly. I broke out of VC++6 to C# because I was tired of being stymied by MFC every time I tried to set up a simple GUI.

        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

        1 Reply Last reply
        0
        • I I cant do that Dave

          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

          L Offline
          L Offline
          Lost User
          wrote on last edited by
          #106

          I bet you never thought you would get som many replies to this one!

          Take a chill pill, Daddy-o .\\axxx (That's an 'M')

          1 Reply Last reply
          0
          • C chaiguy1337

            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! -”-”-

            K Offline
            K Offline
            killabyte
            wrote on last edited by
            #107

            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.

            1 Reply Last reply
            0
            • I I cant do that Dave

              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

              Y Offline
              Y Offline
              yassir hannoun
              wrote on last edited by
              #108

              i ve just finished hight school in the last year summer i spent 2months learning VB.net then i realized that ppl are using C# ( books , videos , articls...) so i chosed C# (with all respect to VB.net ppl :d) btw i m not sure that learning XNA is easy for him .maybe Silverlight ?

              1 Reply Last reply
              0
              • I I cant do that Dave

                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

                V Offline
                V Offline
                Vandretta
                wrote on last edited by
                #109

                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.

                R 1 Reply Last reply
                0
                • I I cant do that Dave

                  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

                  P Offline
                  P Offline
                  PIEBALDconsult
                  wrote on last edited by
                  #110

                  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?"

                  1 Reply Last reply
                  0
                  • M Member 96

                    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

                    S Offline
                    S Offline
                    Stefan_Lang
                    wrote on last edited by
                    #111

                    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...

                    1 Reply Last reply
                    0
                    • I I cant do that Dave

                      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

                      V Offline
                      V Offline
                      VentsyV
                      wrote on last edited by
                      #112

                      I would say Turbo Pascal if you know it. It is procedural language, very verbose which makes it easy to understand and learn. It is restrictive enough to teach good programming habits too. If you do not feel comfortable with TP, go for C#.

                      1 Reply Last reply
                      0
                      • I I cant do that Dave

                        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

                        A Offline
                        A Offline
                        Arterion
                        wrote on last edited by
                        #113

                        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[^]

                        1 Reply Last reply
                        0
                        • V Vandretta

                          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.

                          R Offline
                          R Offline
                          RCoate
                          wrote on last edited by
                          #114

                          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.

                          1 Reply Last reply
                          0
                          • I I cant do that Dave

                            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

                            S Offline
                            S Offline
                            Squirrel Hacker
                            wrote on last edited by
                            #115

                            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

                            1 Reply Last reply
                            0
                            • L Lost User

                              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')

                              A Offline
                              A Offline
                              azonenberg
                              wrote on last edited by
                              #116

                              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++.

                              1 Reply Last reply
                              0
                              • R Robert Royall

                                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

                                A Offline
                                A Offline
                                azonenberg
                                wrote on last edited by
                                #117

                                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.

                                1 Reply Last reply
                                0
                                • P Paul Conrad

                                  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

                                  A Offline
                                  A Offline
                                  azonenberg
                                  wrote on last edited by
                                  #118

                                  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 :)

                                  1 Reply Last reply
                                  0
                                  • I I cant do that Dave

                                    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

                                    J Offline
                                    J Offline
                                    JasonCordes
                                    wrote on last edited by
                                    #119

                                    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).

                                    1 Reply Last reply
                                    0
                                    Reply
                                    • Reply as topic
                                    Log in to reply
                                    • Oldest to Newest
                                    • Newest to Oldest
                                    • Most Votes


                                    • Login

                                    • Don't have an account? Register

                                    • Login or register to search.
                                    • First post
                                      Last post
                                    0
                                    • Categories
                                    • Recent
                                    • Tags
                                    • Popular
                                    • World
                                    • Users
                                    • Groups