Pat Gunn (dachte) wrote,
Pat Gunn
dachte

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!

Subscribe

  • CMU, the First Amendment, and Indecent Exposure

    Earlier on my G+ stream, I commented on the matter of a CMU student who protested the Catholic church's coverup of sexual abuse by dressing as the…

  • Dilution

    I've been thinking about an issue that's been raised in the secular community; I'm not sure it's a good issue, nor a bad one. Let me lead up to it…

  • Commentary on the Human Rights Campaign

    I recently was pointed at a blog post suggesting people reject the Human Rights Campaign, a large social justice organisation that focuses on…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 1 comment