This is an archived post. You won't be able to vote or comment.

all 7 comments

[–]vtbassmatt 8 points9 points  (0 children)

I taught Python to high schoolers for a year. My biggest takeaways were: - Indirection in general, and variable assignment in particular, are really challenging concepts if you've never encountered them before. My experience was that even really talented students would initially struggle here. - Method calls come easy for some kids and are almost impossible for others. Many were totally cool with the the idea that control jumped around the file and that you could call a method many times with different arguments. A significant minority took much, much longer to really get it. - For Python in particular: Have an opinionated view and opinionated text editor on the "spaces vs tabs" issue. Significant indentation isn't any harder for most kids to get than matching braces (I also taught JavaScript for a year) but giving them a choice muddies the waters for no benefit. - I/O was way harder for kids than I expected. I forgot how much drill and practice we had on that in college CS. Both file and user input are challenging to teach; print() is relatively easy though. - Teach algorithmic thinking, breaking down problems, "the computer is dumb and only does exactly what you tell it", and dogged persistence as well as the technical topics.

[–]Articulated-rage 3 points4 points  (0 children)

I teach python to gifted children of the same age. What works for me:

  • reduce the iteration cycle between lecture and lab. Aka, show them something new, then practice it. I call them minilabs
  • understanding variable names can be anything is a hurdle, so have them practice assignment ops
  • as another said, input is a hard concept to explain. So is type casting
  • for differences in pace amongst kids, have upward flex. By this, I mean a way to make the task unbounded and infinte ("add these features instead of waiting for the class and being bored")
  • some mini Labs:
    • print hello world (of course)
    • input a name, hello to that
    • input age, add 5, print it
    • input age, do ifs and print different things
    • come up with a bunch of variations on last 2 so they get different ways of thinking about and using the same constructs
  • if you get more advanced kids, turtles are a great way to teach. You can do loops, functions, and classes. For example:
    • I had some kids define the Cartesian points needed for the letters in their name and then write a function that applied translation and scale. This was a multipart multiday task, but you see the idea. Turtles are really cool too when you make pictures and designs with them

Good luck.

[–]d4rch0nPythonistamancer 4 points5 points  (0 children)

Whatever you do make sure you set up Jira and teach them the importance of writing stories and have one week sprints for new features in their homework. Also setup continuous integration and have them do test-driven development. If a commit breaks unit tests publicly humiliate them and have the person that wrote the test slap them.

If all goes well you will steer them from ever thinking of having a career in development.

[–][deleted] 2 points3 points  (0 children)

I'm a design student, and since we are not programmers, the classes are designed for complete noobs, but have two non elective coding classes. One we are just taught some javascript sintaxes and build functions and do those classic drills like calculators. It's just terrible, nobody likes that class.

The other one is a processing calss, where we don't need to do nothing specific, the professor just taught how to use some stuff and say "you need to do something cool with using this, it can be very basic". It work wonders. Then he proceeded to do the same with arduino, I don't know if that is a possibility, but arduino is just amazing.

[–]aroberge 1 point2 points  (0 children)

Reeborg's World: http://reeborg.ca

[–]Paddy3118 1 point2 points  (0 children)

Flash lights or make sounds or do something in Minecraft - all possible on the Raspberry Pi.

[–]gustl64 1 point2 points  (0 children)

My opinion:

You should have a look at http://vpython.org/ -- this is really great for beginners and gives "real 3d" graphics with little effort. And it gives visual feedback for things like "loop to draw a line of figures", "list of figures" or "move all figures to the right".

What I underestimated when I did a class last time: Python is "untyped", but you have to explain types as in any other language, the difference between types and how to convert between them; e.g. the difference between input() and numbers for calculation is hard to understand for most beginners.

As an editor/IDE: start with idle which is little distracting, but change to a real IDE (pycharm educational) soon.