Favorite resources for teaching programming

What are your favorite resources for teaching programming?

Texts, articles, tutorials, screencasts, videos, online courses or any other formats are welcome.


The introductory lecture for Circuits and Electronics from MIT gives a really great introduction to the concept of abstraction in the first 13 minutes of the video.

I often start with that as a first step since abstraction is such an important concept in programming.

The lecture is available on the MIT OpenCourseWare site: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-002-circuits-and-electronics-spring-2007/video-lectures/lecture-1/

1 Like

For going from “Ok, I know the syntax” to “Now I know some things”, I generally use Project Euler or exercism.io. They have tons of example coding problems that can be used to really get a feel for writing code in a new language.


For beginner Web Development, it’s hard to beat this series of exercises: https://www.freecodecamp.com/

1 Like

I taught elementary and middle school programming, so a lot of the kids had never been exposed to computational thinking before, so the toolset I used was very different that what you’d see in higher ed or even a high school AP class.

For Elementary and Middle school I started with code.org course 2 -which is the same as course 1 but for kids who have basic literacy skills.

From there the elementary students move on to the iOS hopscotch app where I would assign them projects and they would have to build them- as opposed to the step-by-step curriculum of code.org

For the Middle school we moved to codecademy for textual programming, as opposed to block-based. I taught JavaScript and supplemented with text from Eloquent JavaScript.

When they finished the codecademy curriculum we move to assigned projects/challenges which were submitted with codepen.io similarly to the elementary.

I also assigned extra credit points for completing challenges in codecombat and codingame.

Where possible I provisioned all the accounts, and managed all assignments and submissions through the school’s LMS, so the students only had to go to one place to find out what to do, and where to do it, and had one place to turn it in. Though I do wish that a lot of these tools would build LTI integrations instead of a teacher portal. Teacher portals are helpful until you have 5 of them :confused:

**full disclosure I now work for a company that develops an LMS


The tell a robot to make a peanut butter and jelly sandwich activity is really good at explaining computers do exactly what you tell them to do correct or incorrect or ambiguous.


We use a lot of these same things, but I want to strongly caution anyone reading this against CodeAcademy. I’m preparing a blog of all the downright bad bugs they teach in their HTML/CSS and JavaScript courses (such as { on new lines as if completely unaware of ASI not to mention their Python 2.7 only courses.

CodeCombat.com is phenomenal. We require all our students to get into the Mountain to certify before moving on to more independent Project courses.

While code.org is amazing for the very young and at raising awareness as an organization. I share the views of the CodeCombat founders that the over focus on “computational thinking” is becoming an issue for learning practical programming skills.

Hey Rob,

Thanks for the update, I look forward to your blog post. However, I do have a few challenges for you:

  • ASI isn’t part of the EMCAscript standard, it’s just a group of people with a style guide they’ve decided on. It’s just tabs vs. spaces, and you can’t fault codecademy for allowing either.

  • The HTML5 specification allows for void elements to have self-closing tags, though it has no effect on them.

So, while they’re teaching HTML 5, I don’t have a problem with a self-closing tag, because while it’s not mandatory, students might end up on a site (blog or otherwise) that has an HTML 4 doctype that they can’t control but their code will work.

Finally, codecademy is releasing an updated HTML & CSS course next week. Hopefully it will resolve some of your concerns:

Great news on the update.

Teaching self-closing tags is simply a bad idea in my opinion based on many things including Google Style Guidelines and other adopted practices. There are other HTML5 radicalisms that are also meeting resistance from the entrenched DHTML/XHTML generations (optional html, head, body tags; bold b and italic i tags are ok and have semantic meaning, etc.). I don’t expect many learning tools will include these subtleties.

ASI actually is a part of the standard. There are obvious cases where leaving them out is bad, but usually when combined with other bad practices, such as starting any line with punctuation. I went into it ready to attack the idea that leaving off semicolons is easier for beginners, but Kyle respectfully articulates the reason very well—especially when code begins to span more than one screen. In fact, I’ve thrown out CodeAcademy for JavaScript as well developing our own lessons on CodePen.io primarily based on this. I have presented both methods to 9-year-olds and after having had Python exposure they deal better with no semicolons. Rather than have code with line that have it and others that do not, I just as soon start out with it being optional.

if (condition)
  do something

I also really respect Go’s creators and they have added ASI as well. I sincerely believe the age of the semicolon, unless separating two statements on a single line, is over. But we all know how volatile that discussion is, so I’ll leave it at that. The entire Bootstrap library has no semicolons, nor does React and a bunch of other significant libraries. They get in the way with JSX and other stuff. It is very safe to say any JavaScript standard will never force requiring semicolons, on the contrary, I’ll bet they are eventually discouraged.

But happy to hear of the updates.

I’m a huge fan of CS Circles at the University of Waterloo. It’s very student-friendly and I love that I can track the students’ progress and that they can email me through the site if they run into problems. I supplement the lessons with additional challenges at key stages to reinforce the material.

> http://cscircles.cemc.uwaterloo.ca/

For my students I’ve put together a selection of coding challenges at: http://pythonchallenges.weebly.com/

You’re very welcome to use it and if you wish to add a form for your students to submit challenges then let me know.

Nice job! Useful resource. Thanks for making and sharing.

Exercism is good for learning simple programming questions


This is more of a reinforcement measure, but I’ve taken to using HackerRank to create contests to keep students fresh on topics we’ve covered in the past. You can easily create a contest specific to your classroom by getting an account and then creating an unranked contest that you invite your students to participate in.

You’ll be able to pull problems from the regular HackerRank materials as well as create challenges of your own for them to test against. Your students automatically get graded against a leaderboard that is visible to all, which isn’t so great for private tests, but nice for in-classroom events.


I know it has been a while, but I just want to say that the new Codecademy web content is hands down the best available for modern programming. It is mandatory for every SkilStak (and other private school student I work with now). Great job on that! (Now if only they had the courage to take down the horrible Python 2 content.)

As for ASI, I beg to differ. It is part of the ES6 standard and no it is not just a “group of people”. For many large organization (including Twitter) it is the standard. The cognitive overhead to remember semicolons is not worth it (for anyone wanting to read the StandardJS spec). I realize this requires thinking outside of the box, which troubles the Crockford-dogmatists, but it is in the best interests of beginning programmers—overwhelmingly today.

Self closing HTML tags are definitely back now—especially with Vue.js templates.

Also, we have completely dropped Python from our program, except for by request. ES6 is so much better to teach core modern concepts such as first-class and higher-order functions (“functions as values”). Beginners get it so much easier when assignment ("=") is involved rather than just “def”.

Online courses like FreeCodeCamp is my favorite resources for teaching programming.

Hi there! We’ve shipped the ability for Classroom to connect with LTI-related tooling:

I teach web design to graphic designers and I teach them front-end code.

My required textbook is HTML & CSS: Design and Build Websites by Jon Duckett. https://www.htmlandcssbook.com/
It’s pretty cheap and nicely designed. They really enjoy how easy it is to look at and easy to read.
I tell them upfront that it needs to be updated. I haven’t found a nicely designed book about CSS media queries and mobile-first design. Any suggestions?