(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
* [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
* 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.