(description of Metacademy)
  But some topics are so important and fundamental that they appear all over the place. If you do any sort of programming, there are
  some basic concepts you'll simply have to be familiar with: control structures, functions, arrays, and so on. These are the air you breathe,
  the water you drink. Trying to list all the things that depend on them would be hopeless.
  If you have already taken a university level programming course, or AP Computer Science, or have taught yourself programming in a general purpose language, then you know enough to use Metacademy. You can skip the rest of this roadmap. If not, then read on.
  ## Option 1: online programming course
  Do one of the following:
  * [CS50, Introduction to Computer Science](https://courses.edx.org/courses/HarvardX/CS50x/2014_T1/info), is Harvard's introductory programming course, aimed at non-majors. This has a light-hearted style, with high production values. The course covers several languages, but the relevant parts are taught in C. You should watch the videos for Weeks 0 through 3, and do problem sets 1 and 2.
  ## Option 2: textbook
+ Here are some free online programming textbooks. Work your way through any one of them, doing the exercises as you go.
+ * [Think Python: How to Think like a Computer Scientist](http://www.greenteapress.com/thinkpython/html/index.html)
+ * [The Art and Craft of Programming](http://beastie.cs.ua.edu/cs150/book/index.html)
  ## Option 3: JavaScript tutorial (for the impatient)
  Do one of the following:
  * Khan Academy's tutorial ["Intro to JS: Drawing and Animation."](https://www.khanacademy.org/computing/cs/programming) This teaches you the basics of programming by way of creating simple graphics in the browser.
  * CodeAcademy's tutorials on [JavaScript](http://www.codecademy.com/tracks/javascript) or [Python](http://www.codecademy.com/tracks/python).