Archive for November, 2017

How PD should be done.

November 28, 2017

“The best PD is when you get a bunch of teachers together (with at least a few strong in content and experience) and just let them talk shop.”

Mike Zamansky – http://cestlaz.github.io/posts/election-day-pd-2017/

 

The weekend before Thanksgiving was spent in a room with about twenty experienced and neophyte programming teachers.  There were a couple of high-speed college CS professors present.  There was also a teacher from a local junior college who used to work for NASA doing photo interpretation of the Mars Rover pictures using Python to do color filtering.  Really high-speed.  These two days were by far the best professional development days I have ever had.  The experience talked about experiences, the neophytes asked questions on “how do I …”.  We compared notes.  We talked CS philosophy, pedagogy, apps, hardware, PD training needs, and what we needed to do in order to solve the problems of the world.

Absolutely the best CS PD and learning experience.

No, I do not want to go back to the 4th grade

November 21, 2017

I have done three Mondays of my little coding club.  One more to go.  Next time I do this it will not be 4 – 8 grades.  It will be 6 – 8.  Teaching 4th graders is not in my skill set.  The diversity between them is too great for me to manage.  Some cannot add 90 + 90 and get 180.  Others do understand what 180 means in the sense of angles and turning a turtle.  Some cannot understand there is no “down” turtle movement to make the turtle go towards the bottom of the screen.  Others are showing the 7th and 8th graders how to do things.  Last post I mentioned teaching them the x,y coordinate system.  Nope, I will pass.  Some will have no problems, others need to be a bit older.  Their brain is not wired enough to do the task.  I have high school students this way but I know how to handle the issue at that age, not at the 10 year old age.

It is necessary to do something at this level to understand the issues that building and teaching a CS curriculum K-12 presents.  Anybody who says they have developed a good 4th grade curriculum has either written something to cover kids with abilities from 2nd – 8th grade, or they have no idea what they are talking about.  My wife was an elementary and middle school teacher.  I knew the range she dealt with in a single class.  Knowing and doing are two vastly different things.

I need to go back to the 4th grade

November 7, 2017

I started an after school coding course for 4 – 8th grade using Small Basic yesterday.  I am learning a lot.  I am learning that 4th graders do not have x,y coordinate knowledge yet.  Opps.  That is going to make any fancy turtle graphics a bit of a challenge.  The solution?  Teach 4th graders x,y coordinates.   They seem pretty game.

“Need a little help from my friends”

November 3, 2017

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

Parent/Teacher night and I wander

November 3, 2017

It is parent/teacher night.  Things are slow.  I teach a total of 24 kids (19 seniors in Stats, 2 sophomores in programming and 3 in Alg II).  So far I have talked to 3 sets of parents.  Things are slow.  So what do I have to play with?  My room is full of computer stuff.  Well, I have a couple of micro:bits sitting to my left.  I have not really tinkered with them much and things are slow.  After a couple of hours of tinkering (and digging around the micro:bit website just to see what there is) I can now program the thing in micro:bit Blocks, JavaScript and Python.  Nothing fancy but I have a feeling fancy is not really the purpose of a micro:bit.  The middle school tech teacher is going to start the eighth grade on these next week.  Lights to blink, buttons to press and a simple block language.  I think they are going to have some fun and learn some programming on the way.  I have to buy some alligator clips tomorrow so I can hook up a speaker and make music.  These things also have radios so they can communicate with each other.  I had better save something for tomorrow.   I have to be here from 8:30 to 11:00.

Something else I learned tonight, there is an Arduino shield that will connect to Lego NXT motors and sensors.  The NXT brick is kind of boring in its plastic case.  The Arduino on the other hand is just out there naked.  Much more interesting.  That is all I need, more computer stuff in my room.

Adventures in Programming: Python and VB

November 1, 2017

I am happily putzing along in Unity with my two programming students when I decide it is time for a break.  Let’s fiddle with Python for a few weeks.  Both have done a little Python before so no big deal.  We build a little program that computes the area of rectangles, squares and whatever other shape we want to build a function for.  Three class periods and it is done.  (My class periods are 90 minutes.)  Lots of discussion on local verses global variables, naming of variable and functions, parameter passing, designing before coding, you know, the usual things for a programming class.  Then I get clever.  (Bad, very bad.)  I think “I have not done VB in about four years, let’s do this same program in VB!”  Yup, bad, very bad.  I did it and we are going to do it.  It took me an hour or so to relearn the basics of Visual Studio while trying to remember my VB.  (Need multiple forms depending on the shape to computer the area of.  Eek.)  I do have a VB book published in 2003.  It works.  But I now remember why I teach in Python.  The VS overhead is just a pain.  When you are rusty VB is a pain, especially when you have not touched it in four years.  (I was never a wiz at it in the first place.)  I am going to finish the VB program with the kids.  They need to see what VS and VB look like.  It also emphasizes my philosophy of teach kids how to learn coding, not how to code.  The building of forms and the general structure of VB shows them a completely different scheme.

I think when we are done with this simple VB lesson I am going back to Unity.  I am thinking of having them build a house in SketchUp, import in into Unity, build a character so we can walk through the house, then export that to Android and walk through the house with Google Cardboard.  Lots of fun to be had here.

These two kids are sophomores.  I have two more years to throw more programming at them.  If I want to do a semester of VB with them I need to do a little brushing up, maybe even buy a book written in the last 10 years.