Learning to code is the new hot thing, but what is the best order to introduce new concepts to new programmers? I taught myself programming 2 years ago by reading Python Programming, doing Project Euler problems, and making games with Invent with Python. Some things were great about my learning method:

- I did not jump right into a web development framework, so I learned about functions and data structures first
- I used Python and avoided using the command line (the command line is scary for newbies)
- Tough math problems taught me the importance of efficient algorithms and got me addicted to solving problems

In hindsight, I would have done several things differently:

- Should have gotten involved with the community right off the bat, so I didn’t spend so much time stuck on stilly things
- Python Programming tried to teach me OOP way too early
- My prep work was very math oriented, which worked well for me, but is not necessarily representative of programming in general and might turn off math-averse people

It is best to learn the basics first, write some simple programs with functions (no OOP), solve some more challenging problems with functions, have a solid grasp of basic data structures (arrays and hashes) and built in methods and then learn OOP. OOP should be introduced as a way to group similar function and share instance variables – no need to dive right into theoretical OOP right off the bat.

High level thoughts on the order to teach a complete noob CS concepts:

- Variables/values
- Strings
- Numbers (integers and floats)
- Arrays
- Boolean operators
- Conditionals
- While loop
- Functions/methods
- Feeding output from one function into another function
- Variable scope
- Methods with blocks (an advanced concept, but necessary for Ruby coders)
- Hashes

After the basics are introduced, students should work on a lot of practice problems. Once students are familiar with the basics, a light introduction to OOP is appropriate.

### Like this:

Like Loading...

*Related*