Favorite resources for teaching programming

(John Britton) #1

What are your favorite resources for teaching programming?

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

:wave: Teachers! Introduce yourself here
:wave: Teachers! Introduce yourself here
(John Britton) #2

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/

(Lee Dohm) #3

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.

(Mackenzie) #4

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

(Danny Wahl) #5

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

(Danny Fritz) #6

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.

(Rob Muhlestein) #7

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.

(Danny Wahl) #8

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:

(Rob Muhlestein) #9

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.

(Pbeens) #10

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/

(James Abela) #11

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.

(Lynn Langit) #12

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

(Ojo Oluwasetemi) #13

Exercism is good for learning simple programming questions

(Terry Nguyen) #14

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.