“Need a little help from my friends”

In a couple of weeks I am attending a professional development weekend for CS teachers.  This is the conclusion of the PD seminar I participated in this last summer.  There are 20 CS teachers ranging in ability from a former professional programmer, a couple of old time programming teachers (including me) and the rest pretty much novices.  By novices I mean teachers who are not and never were CS inclined.  Most are more than willing.  Only a couple are totally lost.  I was asked to lead a discussion group on CS teaching philosophy and on questions some of the others in the class had on issues they are encountering.  Being a generous and giving person, along with being a stone cold idiot, I said sure.  Being smarter than the average bear (a quote from Yogi Bear for you younger readers out there) I figured I better make some notes.  Then I figure I will throw these notes out there and maybe get some good suggestions/feedback.

Philosophical issues (sort of)

  1. Programming is not coding.
    1. Programming involves algorithm design, UI design, understanding how to use decisions, iteration, repetition, sequence, encapsulation, OOP, etc.
    2. Coding is knowing the syntax of a particular language to do the job the program requires.
  2. Companies want to hire problem solvers (programmers) not coders.
  3. Coding is a low wage job. Programmers make the bucks.
  4. Teach problem solving where the best solution is using a computer program.
  5. CS classes should not focus on typing good code; they should focus on building good programming skills (which may include typing good code).
  6. Do not try to be a professional programmer, try to be a professional teacher.
    1. Requires extensive time researching how to teach CS.
    2. Does not require extensive time learning how to be a great coder.

Questions from class participants

  1. “I would like to learn more about beginner training tools and resources.  It would be great to learn more as far as using ipads and chromebooks.  We still have not received our ‘free’ laptops from our tech dept.”
    1. Beginner training tools –
      1. Start with a simple language – Scratch, Small Basic, micro:bit, Kodu
        1. All these have excellent free materials on their websites
      2. Do not try to become a coding expert, learn how to learn code
      3. Large time commitment
      4. Find a good book
        1. Python – http://openbookproject.net/thinkcs/python/english3e/
        2. Python – JBC – https://www.cs.montana.edu/paxton/classes/joy-and-beauty/
        3. Python – micro:bit
        4. PodPi – Javascript
      5. iPad – Google “programming on an ipad”
        1. Codea – pro level
        2. Pythonista
      6. Chromebooks – any web based programming environment
        1. Scratch online
        2. App Inventor
        3. Touch Develop
        4. PodPi (Javascript)
  1. “some shorter lessons that will engage students quickly into programming. The drawing was fun (Refering to turtle graphics in Python.) and could easily be shared with families and administrators.”
    1. Set small objectives.
    2. Do not teach coding until the students (and the teacher) understand programming
    3. Micro:bit
      1. SparkFun – micro:bit Go Bumdle – $16.50
    4. PodPi modules
    5. Small Basic – excellent for small objectives – great for turtle graphics
  1. “One of the problems I’m having is students who want me to give them the answer.  They are having trouble coming up with algorithms and the logic on their own.  I try to explain that there is very rarely a ‘right’ answer in programming, but I feel they are expecting a solution that they can copy.”
    1. Do not assume programming is easy. IT IS NOT!!!!
    2. Teaching algorithms and logic will be the hardest thing any teacher will ever teach.
    3. Algorithms are difficult for many, not just kids
    4. Smaller simpler steps
    5. Get away from the computer
    6. Describe algorithms they already know – division, multiplication, PB&J
    7. Avoid teaching code – teach algorithm development
    8. Work in teams/pairs
    9. Suggest resources, not solutions
  1. “Another problem is people who go online to get solutions.  It’s obvious that it’s not their work.”
    1. Use the online stuff – tell the kids to find a project online and modify it.
    2. Require the kids to use online solutions/resources
    3. Dream up original projects
    4. Watch the kids code. If you are looking over their shoulder you will know where the code is coming from.
    5. Require extensive comments – should be requiring this anyway, online programs rarely do this

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: