?

Log in

No account? Create an account
Semiformalishmaybe

Teaching Programming

I am starting to pull together materials to teach programming on Youtube (seeing all the awesome things KhanAcademy and Vi Hart, among many others, have done for education makes me think I should be giving back in some way). Those of you who have poked around on my websites have probably noticed that I already have (or in the past had) some stuff up; I'm hoping to pull all that together over the next few months into a dedicated educational subdomain of my website, ideally erasonably separate from the philosophy and advocacy stuff (the latter of which is mostly gone by this point).

Here's my first shot at a lesson plan/structure. As many of you are either programmers or can at least knock out some code when you need to, comments would be appreciated. I expect to do roughly the same thing at some point with my intro to unix documents (which a few of you have seen).

Voila

==Principles/Structure==

  • Alternate hands-on and theory
  • Try to be reasonably programming-language agnostic, but procedural/OO centrism is okay
  • For actual code examples, we'll do them in parallel in both Perl and Python
  • Make it easy for others to add their own examples for a lesson in other languages, webpages should accomodate that (crediting those who contribute, na klar)
  • Basic format will be Youtube combined with written material and a website
  • Public domain or at least some really open license that permits forking, editing, republishing, and the like. I'd be ok with a license that required attribution of some kind and is viral
==Lessons/Lesson-sets==
  • Basic output
    • Hello, world
    • Running a program
    • Simple maths (use immediates; no variables yet)
  • Variables
    • Storing things into variables, doing calculations on them
    • Outputting variables
    • Validation
  • Stepping back: General structure of a program
    • Functions
    • Let's make some functions
    • Let's see how functions are documented
  • Builtin and language functions
    • How can we find out what we have available?
    • Where can we find good documentation for existing functions?
  • Organising code
    • What are the best ways to organise functions?
  • Let's do a project!
  • Variable scope
    • How scope works with functions
    • The stack
    • Immediates are not variables
  • A bit more about immediates
  • Talking to other programs (an introduction)
  • Recursion
  • More on data types
  • Data structures
  • Let's do another project!
I think this is reasonable content for an intro programming class. Later on I might do classes on:
  • Handling files
  • Databases
  • Programs running in unusual environments (in a web server? browser?)
  • GUIs
  • and so on

Thoughts? This is an early draft; I haven't decided what good projects would be yet. Also, if for some reason you want to claim this as much as I am and collaborate with me on it, that'd be great!

Comments

You could talk to Hive76 about presenting there. They're happy to have people teach things.