How to teach kids (13 +) to code?
#1
Posted 11 January 2014 - 05:03 PM
So, late last year I join this thing at school and some how or another I ended up attempting to teach a few year 8 kids (13-14) in this group thing how to do basic coding. I started with Xcode but threw that out the door about 5 minutes in. I then decided that JavaScript might be a good idea. It sort of worked, but because they didn't really know much about HTML it made it more difficult and I could see that they weren't really getting it. Skip forward to about a week ago and the teacher which was coordinating it emailed me to ask if I'd be interested in running it for all year levels (so from 13yo to 18yo). As I think it would be a good thing to do and I'd like to improve my public speaking I said yes. However, I've spent the last week trying to figure out how to teach quite possibly 30+ people how to code.
JavaScript isn't really ideal, I don't really want to do a visual (block based) language. I should also state that it only needs to support Mac, Linux or Windows support is irrelevant. Now, I know many of you are screaming, "Just use ComputerCraft!" However, I'm not really sure if it's the best place to start, and besides, I don't know how keen the teachers will be with everyone using Minecraft during school.
So, after a rather long winded back story, what is the easiest programming language/environment to teach to kids?
#2
Posted 11 January 2014 - 05:28 PM
If you are intent on not using the net, then why not start with Lua? Lua is an extremely simple, object oriented language that can do everything you might want to teach beginners, and it is easy enough to install/run on any platform.
Edited by Bubba, 11 January 2014 - 05:33 PM.
#3
Posted 11 January 2014 - 05:37 PM
#4
Posted 11 January 2014 - 05:41 PM
Personally I find python to be the far superior option while not being harder. As for mac/windows/linux compatibility it has that nailed. Mac and Linux systems all have python 2 preinstalled (the best version
Ruby could also be added to the list I guess.
#5
Posted 11 January 2014 - 05:41 PM
EDIT: two damn ninjas. IP.Board even said that 2 people ninja'd me
EDIT 2: Have you heard of the code.org project? It's trying to get kids to code. You might find some resources there.
Edited by awsmazinggenius, 11 January 2014 - 05:46 PM.
#6
Posted 11 January 2014 - 06:15 PM
Bubba, on 11 January 2014 - 05:28 PM, said:
If you are intent on not using the net, then why not start with Lua? Lua is an extremely simple, object oriented language that can do everything you might want to teach beginners, and it is easy enough to install/run on any platform.
awsmazinggenius, on 11 January 2014 - 05:41 PM, said:
EDIT: two damn ninjas. IP.Board even said that 2 people ninja'd me
EDIT 2: Have you heard of the code.org project? It's trying to get kids to code. You might find some resources there.
I'll check out code.org too.
#7
Posted 12 January 2014 - 06:05 AM
oeed, on 11 January 2014 - 05:03 PM, said:
So, late last year I join this thing at school and some how or another I ended up attempting to teach a few year 8 kids (13-14) in this group thing how to do basic coding. I started with Xcode but threw that out the door about 5 minutes in. I then decided that JavaScript might be a good idea. It sort of worked, but because they didn't really know much about HTML it made it more difficult and I could see that they weren't really getting it. Skip forward to about a week ago and the teacher which was coordinating it emailed me to ask if I'd be interested in running it for all year levels (so from 13yo to 18yo). As I think it would be a good thing to do and I'd like to improve my public speaking I said yes. However, I've spent the last week trying to figure out how to teach quite possibly 30+ people how to code.
JavaScript isn't really ideal, I don't really want to do a visual (block based) language. I should also state that it only needs to support Mac, Linux or Windows support is irrelevant. Now, I know many of you are screaming, "Just use ComputerCraft!" However, I'm not really sure if it's the best place to start, and besides, I don't know how keen the teachers will be with everyone using Minecraft during school.
So, after a rather long winded back story, what is the easiest programming language/environment to teach to kids?
Well, I'm a kid too from that perspective.
But I could say Python looked the easiest for me.
Before teaching them programming languages, maybe you should start with the main aspects required for coding like algorithms and such.
#8
Posted 12 January 2014 - 06:13 AM
CoLDarkness, on 12 January 2014 - 06:05 AM, said:
But I could say Python looked the easiest for me.
Before teaching them programming languages, maybe you should start with the main aspects required for coding like algorithms and such.
Well, I'm still a 'kid' per say, I'm a student at the school.
The thing I don't really like about Python is the pedantic indentation. I can just seem myself having to spend 90% of the time fixing peoples' indentation.
Well, the thing is, most people find algorithms, etc rather boring. They want to be able to see results as fast as possible. They expect to be able to spend an hour or two and make Angry Birds. For this reason, at the moment I'm leaning toward just using CC with Mimic (hopefully GravityScore updates it soon
Edited by oeed, 12 January 2014 - 06:13 AM.
#9
Posted 12 January 2014 - 06:31 AM
oeed, on 12 January 2014 - 06:13 AM, said:
I really would recommend to use this programming diagram concept: http://en.wikipedia....iagram#See_also
For a tool here is one: http://eii.ucv.cl/nessi/
You really should tutor the real programming concepts first, otherwise you are going to get questions: "Why does x and y and z happen?"
If you are going to tutor then in a programming language, you only have to tutor them for instance the type of variables etc.
#10
Posted 12 January 2014 - 06:32 AM
oeed, on 12 January 2014 - 06:13 AM, said:
CoLDarkness, on 12 January 2014 - 06:05 AM, said:
But I could say Python looked the easiest for me.
Before teaching them programming languages, maybe you should start with the main aspects required for coding like algorithms and such.
Well, I'm still a 'kid' per say, I'm a student at the school.
The thing I don't really like about Python is the pedantic indentation. I can just seem myself having to spend 90% of the time fixing peoples' indentation.
Well, the thing is, most people find algorithms, etc rather boring. They want to be able to see results as fast as possible. They expect to be able to spend an hour or two and make Angry Birds. For this reason, at the moment I'm leaning toward just using CC with Mimic (hopefully GravityScore updates it soon
Can't really help if the kids are supposed to be mainly not-going-to-work-hard-but-i-want-angry-birds type.
#11
Posted 12 January 2014 - 06:56 AM
#12
Posted 12 January 2014 - 07:12 AM
6677, on 12 January 2014 - 06:56 AM, said:
one should not pick a language because of coding habits it enforces, one should pick a language based on how easy it is for people to learn and understand basic programming concepts that then can be applied to other languages, the easier the syntax the less time they spend on learning the syntax and the more time they spend on learning the concepts; that is where languages like Lua or Pascal come into play, they're very easy syntactically to pick up.
I'll see if I can find the PhD thesis/paper that my "Introduction to Programming" lecturer/professor wrote at the end of last year about teaching and methods of teaching programming to people who've no idea about anything programming related.
Edited by theoriginalbit, 12 January 2014 - 07:19 AM.
#13
Posted 12 January 2014 - 07:32 AM
theoriginalbit, on 12 January 2014 - 07:12 AM, said:
6677, on 12 January 2014 - 06:56 AM, said:
CPython and PyPy the convention is to use 4 spaces for an indent, however if you consistently use 2 spaces it will not error, Google use 3 space indents (parts of their services actually use python, as does part of chrome OS excluding the python scripts already included in the linux underpinnings), I for awhile used tabs because I didnt realise I had GEdit incorrectly configured (forgot to turn tabs to spaces on), I did a test and the standard python interpreter was perfectly happy to take a 2 tab character indent for those who want to be truly obscure. Consistency is the key, choose what you want, just stick to it. Python will crash if you use tabs for the one indent yet use 6 spaces for another.
IronPython and Jython convention however is for a single tab character, I use IronPython with 4 spaces though.
python isn't fussy over what the indent used is, the principle above is actually written in one of the PEP documents somewhere.
With your comment on easy syntax, I fully agree, its just my belief is that Python also possesses the easy to pickup syntax required and that lua actually loses with basic programming concepts. No concept of seperate int or float and the table datatype is just utterly bizarre when compared with a simple list or array, I'm not saying they are bad, but I think again having the knowledge that an integer and a floating point are seperate things and knowing how to handle a conventional list or array might be more useful skills looking forward.
Edited by 6677, 12 January 2014 - 07:35 AM.
#14
Posted 12 January 2014 - 11:25 AM
#15
Posted 12 January 2014 - 05:07 PM
theoriginalbit, on 12 January 2014 - 07:12 AM, said:
Mads, on 12 January 2014 - 11:25 AM, said:
#16
Posted 12 January 2014 - 05:49 PM
#18
Posted 12 January 2014 - 05:53 PM
EDIT: Another two damn ninjas
Edited by awsmazinggenius, 12 January 2014 - 05:53 PM.
#19
Posted 12 January 2014 - 06:27 PM
I think Game Maker is a good start (no hate please). It has basic drag-and-drop functionality to teach the basics of programming, but also has a language to program in. And like GM's creator said: the language (GML) is similar to other 'real' languages, so it's easy to switch when the you understand it.
#20
Posted 13 January 2014 - 05:15 PM
As for actual scripting, I would suggest using Love2D (lua). You can come up with a number of excercises/challenges ranging from easy to advanced. Consider using some half-finished scripts that the kids can complete as practice.
Love2D allows for relatively simple excercises, here are some examples:
-making a dot move from left to right on the screen
-making a dot move from left to right on the screen using the right arrow key
-making a dot move up/down/left/right on the screen using the arrow keys
-make a box in the screen where the dot can not move trough
Also for interactive teaching like this a whiteboard or beamer is a must. If you don't have access to this you're gonna have to write down examples on those 30+ computers individually to help those kids
Good luck and have fun, if you enjoy teaching as much as I do you're gonna have a great time
1 user(s) are reading this topic
0 members, 1 guests, 0 anonymous users











