I never recommended teaching programming straight out, unless you want to get someone with a concrete/inflexible way of doing things that will not accept change. So I recommend the following still... (To Get a well rounded idea and also the ideas on how things work in the background)
1. Basic Logic teaching first
2. Teaching Basic OS & hardware building next.
3. Don't Start Programming Languages until they have learned Algebra 2 & Geometry
4. Teach Basic Algorithms next (Agnostic to the programming language or non-programming related, electronic, robotics, and hardware kits are great here and something kids like, project with Arduino can further OS and Hardware design knowledge while having fun. They also show samples of programming and how it works)
5. At this point let them learn about the various style and languages out there, and them pick a style they like (OOP, Functional or Procedural), Have them pick there own Major language that can accommodate there favorite style, and two minor one, one of which focuses on the style the most hate. Have them pick an esoteric language (like brainfuck) and learn how to "Print" there name (Not hello world) with it. Or If they want to learn assemble for like there hardware stuff above, that can take place of esoteric learning, but make sure the write something that instruct some hardware to perform at least there first moderate algorithm.
6. There picked major language if capable of all style, they should write a full program that access a database, program should be able to create update, read and delete in each style. This should provide an example of the strengths and weakness of style to a small degree.
7. Have them program 7 random things in there minor language, but more capable then print or echo statements (CRUD stuff at least), this should give some respect to mature major languages.
8. Have them write program for atleast 5 other languages (Including a Java & Smartphone app, if they have avoid those up till now).
1. Basic Logic teaching first
2. Teaching Basic OS & hardware building next.
3. Don't Start Programming Languages until they have learned Algebra 2 & Geometry
4. Teach Basic Algorithms next (Agnostic to the programming language or non-programming related, electronic, robotics, and hardware kits are great here and something kids like, project with Arduino can further OS and Hardware design knowledge while having fun. They also show samples of programming and how it works)
5. At this point let them learn about the various style and languages out there, and them pick a style they like (OOP, Functional or Procedural), Have them pick there own Major language that can accommodate there favorite style, and two minor one, one of which focuses on the style the most hate. Have them pick an esoteric language (like brainfuck) and learn how to "Print" there name (Not hello world) with it. Or If they want to learn assemble for like there hardware stuff above, that can take place of esoteric learning, but make sure the write something that instruct some hardware to perform at least there first moderate algorithm.
6. There picked major language if capable of all style, they should write a full program that access a database, program should be able to create update, read and delete in each style. This should provide an example of the strengths and weakness of style to a small degree.
7. Have them program 7 random things in there minor language, but more capable then print or echo statements (CRUD stuff at least), this should give some respect to mature major languages.
8. Have them write program for atleast 5 other languages (Including a Java & Smartphone app, if they have avoid those up till now).