Teaching Beginners to Code

If you are keen on Python, look at this approach https://pragprog.com/press_releases/practical-programming-an-introduction-to-computer-science-using-python-3

Also this IDE has a entry level Python language course built in. https://www.jetbrains.com/pycharm/

I started to learn Python, having no real knowledge of any other language. I didn’t get very far before I got overtaken by life, but I hope to get back to it at some stage. I found it quite easy to grasp as a beginner; it remains to be seen how easy I’ll find the more advanced stuff.

Hi Chris,

I think Ruby is a great language for beginners to learn. There’s a great book called Learn to Program by Chris Pine that walks you through from the very beginning. It’s also available for free online:
https://pine.fm/LearnToProgram/

Ruby on Rails has a lot of ‘magic’ going on in the background that can be confusing for beginners. I’d recommend using Sinatra for building web apps instead. You can start with really simple applications and it helps you understand the concept of HTTP a lot more.

I’ve created a few resources that are on SitePoint Premium that you might find useful for this.

Hope that helps. Good luck, it sounds like a great project!

DAZ

1 Like

Coming from an art background, and someone who feels called to teach others myself, I would have to agree with ChrisChinchilla. Definitely learn CSS/HTML then javascript. Then I would move on to learning other software dev languages like C# and C++. Just a thought from someone who is a beginner myself.

For absolute beginner, I would start with teaching them constructs of programming like data structures, loops, etc… There is a great site called code.org that helps beginners learn programming and it is fun to do.

problem solving - once you know that half of programming the actual syntax of any programming language is relatively trivial. Plus if they are not good at problem solving then they will never be good programmers regardless of what languages they learn.

1 Like

Hi, a few years a go, I started to look into data visualisation and found that the processing language could be used as a good tool to teach computer programming from.

“Processing is a flexible software sketchbook and a language for learning how to code within the context of the visual arts.”

Something i found hard when at school was learning ‘principles’ without any context. Maths in particular was taught in a ‘you need to learn this because you need to learn this’ instead of ‘you need to learn this as you can apply it to X and Y in the real world’. Using Pythagoras to work out the length of the hypotenuse for example. without any context it is mostly pointless and i could use a ruler to find out how long it is. But when you realise that is can be used to work out the length of beam required for building a roof at a specific angle it gives it a use and a meaning that my brain can latch on to.

Some people won’t need this but i did. Although i do find logic much easier to do than maths. But again teaching the principles with a real world example for me would be important.

2 Likes

Do you feel that recommending people layer on more dependencies to make a language ‘more usable’ is a good step? Or is it adding more layers of confusing abstraction?

I agree with this, and feel that maybe not enough time is spent on teaching principles these days… We covered a lot of ‘pseudo code’ when I was at Uni.

1 Like

I’ve watched some processing lessons too, it does look pretty cool actually.

Buy one of these :stuck_out_tongue:

https://www.kickstarter.com/projects/primotoys/cubetto-hands-on-coding-for-girls-and-boys-aged-3

Even a 3 year old can learn how to program with that :slight_smile:

I agree with the others saying that JavaScript should be the first programing language you learn. I think jQuery is an even better starting place though. It’s far less verbose and I think the syntax is bit more human friendly.

ugh, and in better than 50% of the cases, the user can build it in native javascript or with html and/or css.

Intermediater level JavaScript is an entry requirement for being able to learn how to use jQuery properly. If you don’t have that level of JavaScript knowledge the jQuery you write will be an inefficient mess.

It is the equivalent of suggesting someone learn how to fly without giving them a plane. JavaScript is the plane you need in order to fly with jQuery.

That must be the reason universities teach JavaScript before c/c++ and Java.

JavaScript is a terrible language. It was a pain to use on the client and why anyone wants to use it everywhere is beyond my comprehension. Stick with the classics. JavaScript everywhere is a fad and will in time be replaced by the next flavor of the month just like rails was.

Only in so far as being the first language for people to learn.

Prototying Object Oriented programming is far more powerful (and correspondingly much harder to learn how to write proeprly) than classical object oriented languages.

Also there is a tendency with JavaScript to teach version 1 when version 7 is almost here and there were huge differences between the early versions and those from recent years.

C++ and Java are back end programing languages.

I think schools would teach JS more because it’s a front end programing language. Being on the front end, it makes it more visual. I’m guessing that probably makes it a bit easier to teach and makes for a better beginners language.

Well, unless you’re going use machine code then you’re always using some form of abstraction. You just need to decide what’s the best abstraction to use. I think Ruby is a very beginner friendly language that is great for learning to program.

You only need Sinatra if you’re going to be teaching some back-end web development (and if you’re doing that then surely you will have to use some sort of ‘framework’). I don’t think Sinatra is a confusing level of abstraction because it exposes the HTTP process so aids understanding. You can start with GET requests and build up to some simple POST requests then introduce a database backend with that uses REST. I don’t think you could get simpler or better than Sinatra for teaching back end web dev.

That’s not really what I mean, of course i’m not proposing teaching machine code. I mean abstractions away from what it is going on with the language, i.e. frameworks. I sometimes feel that layering these dependencies hides from beginners what is happening before they understand.

For complete beginners, even concepts like ‘HTTP’, 'GET, ‘POST’ etc mean nothing. I am basing this on personal experience.