Programming concepts for brand new coders

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:

  1. I did not jump right into a web development framework, so I learned about functions and data structures first
  2. I used Python and avoided using the command line (the command line is scary for newbies)
  3. 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:

  1. Should have gotten involved with the community right off the bat, so I didn’t spend so much time stuck on stilly things
  2. Python Programming tried to teach me OOP way too early
  3. 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:

  1. Variables/values
  2. Strings
  3. Numbers (integers and floats)
  4. Arrays
  5. Boolean operators
  6. Conditionals
  7. While loop
  8. Functions/methods
  9. Feeding output from one function into another function
  10. Variable scope
  11. Methods with blocks (an advanced concept, but necessary for Ruby coders)
  12. 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.

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s