Seemingly every day there’s a new article or blog post imploring you to learn how to code. “Those who code have the power to transform their dreams into reality.” “Coding will help you keep [your job], or help you make a case for a raise.” “You should learn to program because it’s easy, it’s fun, it will increase your skill set, and… it will fundamentally change your perspective on the world.” What’s more, “If you want to start a technology company, you should learn to code.” New York City Mayor Michael Bloomberg’s New Year’s resolution was to learn how to code. Douglas Rushkoff, who calls coding “the new literacy of the digital age,” wrote an entire book about it. And didn’t Marc Andreessen say that “software is eating the world?” As a result, companies from Codecademy to edx and many others have popped up to meet this rising demand.
As a person who’s grown up in the digital age, I have often heard the cry, “digital literacy or die.” Conventional wisdom – at least today – is that in the way you know how to read and write English, “you need to have some understanding of the code that builds the Web… It is fundamental to the way the world is organized and the way people think about things these days.” If you buy that then you’ll want to start now.
But where should you go? I’ve been dabbling in the black arts, although I am by no means a ninja coder, and am ready to report back. The courses below offer everything from HTML to Python and beyond. HTML and CSS are good, because they’re the basic building blocks of Web design, and in my opinion, Python is useful, because it’s the most universal in many respects. Others say Java is better to learn, because its so prominent on the Web. I would rebut that you can learn Java from Python. Potayto. Potahto.
In any case, each program below emphasizes different pedagogical techniques and philosophies, and they are all mass market in the sense that anyone is welcome. No previous experience is necessary.
MIT Courseware Online
MIT has long been a pioneer of online courseware. One course is their Intro to Computer Science & Programming class, thought by many to be the best, most encompassing intro computing course offered. Taught by tenured MIT faculty, the online course is structured via taped lectures, written assignments, and self-assessment quizzes.
The course itself is quite rigorous as it was an intro course for MIT students. This isn’t a sort of online class you can do some parts and not the other. It requires a certain amount of pre-existing math knowhow to be truly successful. The course description says it only requires high school algebra as a prerequisite but I don’t buy this. I remember being pretty stumped by the second assignment, and I passed AP Calc with flying colors. This doesn’t mean the math is terribly high-level, but that it probably requires a certain amount of mathematical aptitude beyond algebra unless you want to spend the entire course scouring forums for help. As with any MIT course, there is an expectation that you not only know how to do a function, but why that function is performed and from where it stemmed. After attempting to follow this courseware for two sessions, I was officially stumped and dropped it.
MIT and Harvard partnered up to create edX. It is a conglomeration of all of their available open courseware, along with a new department for the two institutions to perform research about the future of online courses and new pedagogical technologies. For MIT courseware, you can watch the lectures anytime, read the assignments, and self-assess. EdX has you follow the course in real time and complete the assignments and exams to receive a physical certificate from the program. It currently offers numerous classes in more subjects than just coding and far beyond the purview of Computers Science.
Codecademy.com is something slightly different than the last two. It uses a curriculum of exercises to teach the basics of coding in a variety of languages (PHP, JScript, Java, Python, Ruby, etc.). It has a text box to write different codes, and a number of tasks written alongside as a way to teach different skill sets. It’s a useful program for people who want to dive in to coding and learn the basics from a more pragmatic level. Wired.com, in fact, listed it as one of the more successful venues for learning code. However, some of the pitfalls lie in its simplicity: it’s a series of exercises, and doesn’t teach you much beyond rote tasks. It attempts to provide some context, but it just scratches the surface (at least for the beginner courses). You are able to learn the commands, their meanings, etc., and sometimes that’s just it. Codecademy teaches you these basics; and what logically follows is the statement: “I learned code.” Beyond that, it doesn’t teach a deeper type of literacy, other than learning helpful coding tricks, for better or for worse.
Google University Consortium
Much in the same vein as Harvard and MIT, Google used to offer various online courses for its progam Google Code University. GCU has since retired, but Google has archived its Python and C++ classes, along with providing ways to search for other online university curricula. It is now displaying a wide range of other courses not from Google, and calling it the Google University Consortium in Google’s developers page. The offerings for coding and computing are scant. All I could find was a course on “Programming with Go”, and when I went to begin that course it was a YouTube video.
PHP Academy is similar to Codecademy in that it’s a private, community-based site working to educate the world on web development. Its methods are a series of courses, that is, videos and forums for all who want to participate. The appearance is more scaled down than Codecademy and seems to target those who have some familiarity with coding. In that regard, PHP generally approaches coding as something you already know, or are at least familiar with, so its approach to literacy is that some foundation of it is already there.
Coursera has been getting some real press these days. Started by a few Stanford Professors last year as a way to offer online courses from myriad universities for free, it has courses for credit and wide-ranging course offerings. In terms of computing, it has an Intro to Programing course from the University of Toronto, which is similar to what edX offers. However, Coursera offers other, more specialized code courses. I signed up to take a Social Networking Analysis course last year taught by a leading professor in that field. Others include “Programming Languages” “Web Intelligence, and Big Data”.
Coursera is similar to edX in that courses are on a real schedule, with a curriculum, requiring a lot of your personal time. With both Coursera and edX you are taking a college-level course, that level of intellect is therefore required. In that regard it is leading the brigade in the thought that not only digital literacy is important, but that general education can be maintained through digital means. The onus is not necessarily that everyone needs to know coding, but that digital spaces can be used for positive, educational means.
Mozilla has entered into the online courseware game with P2PU. In the tradition of Mozilla, P2PU is completely open, and provided a non-institutionalized, community-based education experience. It has a “School of Webcraft,” which includes “Webmaking 101” – a series of seven challenges aimed at teaching you how to start and code a blog.
The aim is less technical than, say, PHP Academy, and more community-oriented. Take, for instance, the first two challenges in “Webmaking 101.” In the first challenge you start a blog, introduce yourself to your peers, write a “magnificent blog post,” and link comments to your peers’ blogs. The second is to write simple HTML script by hand. There is a different emphasis than the rote skill-work taught in the other courses. Mozilla, in this regard, is working toward fostering a culture shift with digital literacy at the forefront.
Khan Academy is, in some ways, an amalgam of Coursera and Codecademy. It claims to be working to change education “for the better by providing a free world-class education for anyone anywhere,” listing numerous subjects from computing to the humanities. The “Programming Basics” course has a similar format to Codecademy: read instructions and complete coding activities on a text screen to learn the necessary skills. Like Codecademy it progresses in a linear fashion toward mastering a basic repertoire. Khan has gotten scads of the press coverage, and I wouldn’t be surprised if it developed a more well-rounded curriculum around its original pedagogical style.
For a different approach there’s codingbat, which is simply a series of live coding problems. This site is tailored toward those with some previous knowledge of the subject, and has a bare bones interface pleasing to any hacker-in-training. The problems give immediate feedback to help improve skills, and were developed by Stanford CS lecturer, Nick Parlante. The two languages offered are Java and Python, and it now seems to be offering a theory course to teach skills in “small” coding so as to have the foundation to do longer pieces of code. The approach is educational at its core, but is difficult to delve in for the completely uninitiated.
GitHub, et. al.
Frequently coders refer me to GitHub, Pastebin, or SourceForge. These sites, like Codingbat, are not meant for the complete coding luddite and require an aptitude for “learning by doing”, and knowledge of how to navigate the confusing sitemap and specific terminology. There is no curriculum or series of online lectures. It is are a repository for coders to paste their personal code. Instead of a bottom-up pedagogy, these sites gives you successful codes from the best developers around. They are meant to foster community and keep collaborative efforts vibrant in the community. Friends of mine who code have told me that the best way to learn is to go on GitHub, study a cool code, and go from there. It is completely different than anything Coursera offers, and the end result, I think, is on the other end of the computing spectrum as well.
[Image courtesy Nat Welch]