October 2014

Places To Learn Coding (and a bunch of other stuff)

By Mary Pat Campbell

Mary Pat CampbellI’ve written multiple times before about online education, and have been a long-time learner, especially when it comes to computer programming and issues surrounding numerical computing. My last article on this topic was in the August 2012 issue of CompAct: “Online Learning Comes of Age,” wherein I reviewed the state of major, free online learning resources.

In this article, I will look specifically at online offerings for learning coding. While all have free ways of accessing the material, some of the sites have additional services and credentials for paying customers. For each site, there is a table with the most salient features, and I will have a short, narrative review of each.

For my reviews, I picked major sites, many of which appeared in my August 2012 article. What is interesting is how much these sites have changed in two years. In some specifics, Codecademy has greatly improved since my original review, MITx has morphed into edX in partnership with Harvard and a bunch of other institutions, Udacity has partnered with Georgia Tech to offer an online Computer Science degree (and is now adding nanodegrees) … I’m almost loathe to write anything too specific given all these features can change by the time you read this article!

Codecademy
Website Codecademy.com
Languages/Topics HTML & CSS, Javascript, jQuery, Python, Ruby, PHP, APIs
Level Absolute beginner
Timing On-demand, very short lessons
Paid features None
Credentials Badges, points, skills learned

 

Codecademy is one of the best sites for absolute beginners to programming. The courses or “tracks” are set up in incremental, bite-sized lessons, with an interface that runs code for you. This is perfect for total beginners who do not wish to download compilers or interpreters, and just want a place to run the code. Many of the other sites I reference do not have this kind of user-friendly feature. This is where I recommend people start, just to get a taste of how things operate. This is a text-only site currently.

However, you will only get a taste. The lessons don’t take you all that far, and conceptually, they are fairly shallow. You will not learn important computer science concepts that may improve your structuring of a program, for instance. This is not a criticism—just a note on how far you can get with Codecademy. As well, their focus is on code that is easily used for web design and using features such as APIs (application programming interface) for specific websites (perhaps a way Codecademy is making its money, because it’s still unclear how they’re trying to monetize this site.)

You may wonder how any of this relates to actuarial work, but then you can use the track on the NHTSA API to learn how to pull info from their crash-rating database … perhaps make a quick underwriting app. Or maybe you can learn enough from the 23andme API health dashboard lesson to help price your life insurance in force … Hey, ya never know.

As noted above, Codecademy has improved greatly since 2012. Its interface is much improved, many of the original code-checking bugs are gone, and they have recently updated the user dashboard so one can more easily track progress. There are badges, points, and “skills earned” (I’ve got Python under this), but they only mean you completed a certain amount of stuff. There is a Q&A forum, and the questions are at beginner level or a place to report bugs.

Udacity
Website Udacity.com
Languages/Topics Python, R, Java
Level Beginner to advanced
Timing On-demand, usually takes a few months for a full course (some mini-classes are shorter)
Paid features Monthly charge for access to coaches, projects with ongoing feedback, verified certificates
Credentials Verified certificates, Georgia Tech MS in Computer Science, coming soon: nanodegrees

 

Like Codecademy, Udacity has a coding focus. Unlike Codecademy, it can take you from beginner level of coding (though it is a steeper learning curve compared to the more gentle approach Codecademy takes). The classes on Udacity are more like regular classes, with quizzes and assignments. Udacity also has video lectures. Classes are rated for level; the advanced classes tend to have programming experience prerequisites. They have classes with serious Computer Science content, not only about how to program.

In addition to verified certificates for specific classes, and their partnership with Georgia Tech to provide an online-only M.S. in Computer Science, Udacity has recently announced they will be creating “nanodegrees” in specific areas, such as iOS developer, frontend Web developer, and back-end Web developer. The fourth they announced was a nanodegree in data analysis, which actuaries may want to look into, even if only for continuing education credit. These nanodegrees are intended to be completed in less than a year. For all of these certifications, they currently charge $150/month for these paid features. I have not used any of the paid features myself.

To access the classes for free, just click on “View Courseware” on the specific class page. You can get to all the material: videos, text files, and even assignments. Within the videos themselves, they often stop for quizzes for immediate checking of understanding. Obviously, there are features you can’t access if you aren’t paying.

I highly recommend the Introduction to Computer Science class, if you’ve never had a formal Comp Sci class. No, it’s not equivalent to a full semester CS class (unless you had a really slow class), but you learn Python and learn some very important CS concepts that help one think through how one programs.

Khan Academy
Website KhanAcademy.org/Computing/CS
Languages/Topics Javascript
Level beginner
Timing On-demand
Paid features None
Credentials Badges, points

 

Khan Academy, the free online educational site that was originally focused on K-12 math, has a section on learning programming. Unlike Codecademy, it has videos, but it also has bite-sized lessons and a javascript “sandbox” in which one can try out coding.

The issue with Khan Academy coding lessons is that they are all geared towards graphics, and while they have some fun javascript graphical simulations, the coding info here isn’t much applicable to actuarial work. I mean, sure, they show you how to do random simulations, but I don’t recommend doing your Monte Carlo runs in javascript. It’s bad enough using VBA in Excel.

This site is geared more toward (older) kids than adults, but if nothing else, work through the “Becoming a better programmer” series of videos.

Those tips apply to any programming language. I know I’ll appreciate it if you check those out, if I ever have to deal with your code.

Learn Code the Hard Way
Website LearnCodeTheHardway.org
Languages/Topics Python, Ruby, C, SQL, Regex
Level Beginner into intermediate
Timing On-demand
Paid features PDFs, video, and email support from the author for about the price of a book
Credentials none

 

This is what I really recommend for people wishing to learn coding appropriately and willing to spend the time on this. Also, I recommend people to start from the beginning and go through all the steps, even if they know a bit of the language already. This is mainly for people who have never had a true thorough learning of any programming language … which is most people, actually. The approach taken is almost excruciating in growing your knowledge step-by-step, and if you know some of the language already, you can go faster, but still don’t skip any of the steps.

This is how I learned how to code, essentially, back in 1982. I was given a (very good) BASIC text by my dad, and I worked through it line by line. That’s the way to really incorporate that type of thinking.

For each of the books, there is a free online version (with ads). Yes, the author, Zed A. Shaw, will keep trying to sell you his stuff while you’re doing the lessons. While you can buy access to videos, PDFs, and an ad-free HTML book, you can also buy the books in dead tree format along with a DVD of the videos. The lessons take you from absolute beginner (helping you to install whatever software you need to do the lessons) up to what I consider an intermediate level.

Coursera
Website Coursera.org
Languages/Topics Python, Java, R
Level Beginner to advanced
Timing Most on specific schedules, 4-week to semester-long courses; a very few are on-demand
Paid features Certifications (see below)
Credentials Signature Track credential, Specialization certificates from sponsoring universities

 

I find Coursera the most dangerous of all the websites to go to … because there’s so much there and not all of it is programming. As I write this, I am signed up for: The Data Scientist’s Toolbox, R Programming, Exploratory Data Analysis, and Fundamentals of Music Theory. In the past, I have enrolled in: R Programming (yes, a prior version of the course I’m currently in), A Beginner’s Guide to Irrational Behavior, Machine Learning, Introduction to Mathematical Thinking, Data Analysis, Comic Books and Graphic Novels, Computing for Data Analysis, An Introduction to Financial Accounting, Exploring Beethoven’s Piano Sonatas, The Science of Gastronomy, Coding the Matrix: Linear Algebra through Computer Science Applications, Introduction to Data Science, and Gamification.

I obviously don’t have enough time to seriously pursue all these courses, especially since, unlike the other sites listed above, most of these classes are built to specific time schedules, with classes starting and ending on particular dates. Usually, I’m only seriously following one class at any given time (right now, it’s the Music Theory class). The others, I sign up so I can access the files—one of the big advantages of this site is that I can download all the PDFs, videos, and other supporting documents completely free. And so I do. I have used some of the items I’ve come across to teach my own courses on other topics.

All of the courses on Coursera are backed by accredited institutions such as Johns Hopkins University (which sponsored most of the data science courses I listed above), and some of the classes can come with paid certifications. I see that they, like Udacity, are developing something akin to nanodegrees with short tracks of verified courses that would take about a year to complete. On Coursera, they’re called “Specializations,” and ones relating to coding are: Data Science (Johns Hopkins), Mobile Cloud Computing with Android (UMD and Vanderbilt), and Fundamentals of Computing (Rice).

There are a lot of courses to choose from at Coursera, and my main warning is to check prerequisites. Some of the numerical computing courses assume you know specific languages at particular levels. Some are truly introductory, and will walk you through how to get started in various languages, but many are at intermediate levels or higher for the coding, so you want to be careful.

Another thing to check: what language the course is in. While all the other sites here are English-only, Coursera has multiple languages represented. It should be apparent from the course name itself (which will be in the language used for teaching the course), but still, be careful. I was tempted to sign up for Einführung in Computer Vision.

edx
Website EDX.org
Languages/Topics R, Python,  Java
Level Beginner to advanced
Timing On a particular schedule, 6 weeks – 12 weeks
Paid features Certification
Credentials Verified certificates (paid), Honor code certificates (free)

 

EdX used to be MITx, until Harvard jumped in and then a bunch of other universities joined in. This is an extension of the MIT OpenCourseWare project, which I have been following for years. MIT convinced other universities to join its OpenCourseWare initiative, and now it has convinced many to transfer their classes to free, online versions. Some of the classes can also come with a verified certificate, and unlike flat out naming a price for this, there’s a minimum fee (most I’m seeing are set at $50), but as edX is a non-profit, you can give them more money. If you want. It’s tax deductible. Probably.

I found the volume of material for edX classes to be a great deal more than Coursera courses for classes that cover the same amount of time. I think edX classes most closely approach standard college lecture classes, with all the advantages and disadvantages that entails. Unlike Coursera, which is finally allowing for a few on-demand classes (only three, though), all of the edX courses currently are to specific time tables. Looking at my course dashboard, though, I see that all my older courses are archived, and at the very least I can go back and download PDFs and videos. This is not the case with Coursera classes, as sometimes the course goes “poof” once the time is up, because they intend on offering the class again. That is why I signed up for the same class twice at Coursera—I didn’t manage to download everything the first time.

Unfortunately, I cannot recommend any specific courses at edX, because there is no guarantee the courses I liked will ever run again. That’s a pity. If they run BerkeleyX: CS188.1x Artificial Intelligence again, I recommend taking it. That was a fun class—I got to write algorithms to play Pac-man. But looking at their current course list, I don’t think they’re going to run it again anytime soon. At least with the Coursera courses, it seems that certain courses are in regular rotation, so that one can sit for another session if one can’t adhere to their particular timeline.

Got any favorite places to learn coding? Let me know about them: marypat.campbell@gmail.com.

Mary Pat Campbell, FSA, MAAA, is a life analyst for Conning Research & Consulting, Inc. She can be reached at marypat.campbell@gmail.com.