Archive for June, 2019

Programming and Math: “Danger Will Robinson”

June 25, 2019

Two of our teachers are taking a week long programming in Python professional development for teachers at the local university.  I did this PD course last summer and enjoyed it but then I am a math and computer geek. I asked them how it went on the first day.  One immediately said “Why do all college CS profs think everyone loves math? Want to turn kids off to programming? Throw math at them.”  The first programming problem they did was the famous (or infamous depending on your point of view) quadratic formula program. The other teacher was of the same opinion.  As a programming teacher and a math teacher I have to agree. Novice programmers do not want to deal with math. Many novice programmers are not happy with math. Novice programmers want to see the fun stuff about programming.  There are options that are more fun. The ever popular turtle graphics. Admittedly not all languages lend themselves to turtles but most have something. Turtle graphics is one of the reasons I like Small Basic as a starter language.  Lots of fun turtle projects. Another nice option is silly sentences. One of my favorites is using a file of Shakespeare’s insults in a sentence. Sort of fun and not math. Eventually programming is going to get to math problems. After all, the quadratic formula is a great programming problem but keep it for when the kids have seen that programming is not just math stuff.

A good intro to programming teacher has to have a pretty expansive list of “fun” programming assignments.  Things that will not turn off the novices that are in the class just to see what programming is all about. Do some fun stuff and they night hang around for the second semester and then the hook might be set.

One of the issues with this PD is it is put on by university professors who have no idea what is happening in the K-12 classroom.  They do not understand the dynamics, mentality, needed inspiration, and a thousand other things that seperate K-12 students from university students.  They are purely content driven. The PD turns into teaching Python, not how to teach Python. And the methods used in the PD to teach Python are not transferable to the 9-12 classroom.  Oh well, the PD is free and you take what you can get or, as my father used to say, “Do not look a gift horse in the mouth.”

20% of the high school is taking CS: Oh S#%@

June 11, 2019

I just counted heads for my next year’s classes.  Oik! Thirty-one kids signed up for my programming classes.  Intro to CS – 11, Python – 6, Game Making (Unity) – 7, App Dev with Android Studio – 7.  Only one kid is taking two classes. So 30 kids in CS out of a school of 160 kids. Not bad.  

I am going to have to work next year.  Hard. The Python and Game class are OK.  Been there, done that. Need to improve them of course but I can do that.  The Intro to CS is a survey of several kid level languages, Alice, micro:bit, Small Basic and so on, and is an independent study course.  I have done the course previously and need to do a major rewrite. Mostly a better description of the assignments with a rubric. I may not lay eyes on these kids several periods at a time so things have to be laid out nicely.  The Android Studio is going to be the challenge. I originally was not going to offer the course due to a lack of good computers. (The fact I know almost nothing about Android Studio is a minor inconvenience.) The emulator is dead slow if you do not have a decent processor and a good chunk of RAM.  I am getting some older i7 towers donated tomorrow so hopefully we will be OK. If they are too old then I will figure something else out. On top of these 4 courses I also have an Honors Math 2 (8 kids) and two sections of senior Stats (7 and 19). Let’s see, that gives me six preps and seven classes.  I am an idiot.

Years ago I thought I should stop volunteering.  I volunteered for the Marine Corps and got shot. I volunteered for the Army Guard and got blown up by IED.  I volunteered to teach what I thought would be useful for my students and I am probably going to have a heart attack.  Just dumb as a box of rocks.

CS Professional Development in Montana: Where should it go?

June 10, 2019

The last two summers I participated in professional development sponsored by University of Montana (UM) and Montana State University (MSU).  The first summer was an AP Principals course using App Inventor. The second was on the Python curriculum “Joy and Beauty of Computing” (JBC) ( developed at MSU.  Both were designed for beginning programming teachers to build a curriculum with in their school without having a degree in CS.  Both were worthwhile for me just for the networking with other computer teachers.

Next summer the organizer from UM wants to start a course thread for the next level.  She is a CS teacher at UM. Her idea of the “next level” and my idea of the “next level” became extremely clear at a meeting I had with her last week.  They were very divergent. Her idea was more advanced Python concepts. JBC was very basic and even then it was difficult for most of the attendees. Only two of the twenty had much Python experience (me and a teacher who used to be a professional programmer.  She was way beyond me.) The others were business teacher types that had “volunteered” to teach programming at their school. I can imagine what response a higher level of programming course would get. On the other hand my “next level” is pedagogical. I want to offer a “how to teach programming/CS” type course.  Something in the way of directions and resources for teachers without a CS degree. Issues kids encounter, issues teachers encounter (especially when not familiar with teaching programming), interesting exercises suitable for beginning and intermediate teachers and students, where to find teaching help, CS Unplugged, programming language selection, fundamentals of programming, grading and all the other things I had to learn the hard way.  Montana has a very small core of experienced and trained CS teachers. Small in the sense of maybe 10. The rest are business, Math, and whoever-is-willing teachers that are trying to just keep their head above water. This group does not need or want high level programming. They want “how to”.

The university CS professors organizing these summer professional development opportunities are great for finding grants for high school level professional development and getting the resources necessary.  Beyond that most of them are out of their element. They have not taught in the high school, they really do not understand the knowledge level of most high school programming teachers and they usually do not understand high school kids.  If they have been in the high school to observe it was in an APCS class. Not a good measure of the typical high school kid. A CS/programming course needs to attract the typical high school kids if we are going to get the classroom numbers needed to justify a course offering.  When a high school has 100 – 200 kids (typical for Montana) the number of kids interested in APCS is pretty much zilch. The number of CS experienced teachers teaching in a school this size is likewise zilch. I am hoping I can convince the organizer to offer something that will attract the average Montana CS teacher.

Some of the old stuff was good stuff

June 10, 2019

How many of you gray hairs out there remember the early computer game Rocky’s Boots?  (  Rocky’s Boots was published in 1982 by The Learning Company.  I started using it in my classes in 1983. I still think it is the coolest format for teaching logic gates.  Even if there is no need to teach logic gates it is a cool game which incidentally will teach logic gates. (The kids will never know what hit them.)  For many years I have been wanting to modernize this game. Make a 21st century Rocky’s Boots. There are only a dozen or so things I have no idea how to do.  Things like being able to drag an object close to another and having the them blink that they are close enough to connect and then having them connect automatically and recognize that this is a connection so something like a current will flow through the circuit created.  A minor glitch in my plans but I shall over come.

I am pretty sure this is one of those projects where I do not have the big kid programming expertise to accomplish.  After all, I am an untrained high school level programming teacher. But I really do not care. This is one of those cases where the destination is not really that important (although I would really love to build this), it is the journey that is the big thing.  I doubt that I can build this by myself. I am thinking I will have to find a brainiac over at the university. Some college kid needing a project. I will end up just going along for the ride. I am OK with this.

This does bring up the conversation about teaching logic gates in high school in the first place.  I am still thinking about that.

Last Day of School And Done with Java

June 7, 2019

Today is the last day of school.  My Java students are scrambling to turn in their final.  I gave each of them a unique project to solve and code.

  1. Solve a quadratic.  Input a, b,c. Output solutions either real or imaginary.  Plot the parabola on an xy axis.
  2. Given two sides and the included angle of a triangle find the other angles and sides. Draw the triangle.  Color the triangle.
  3. Input the lengths of the sides of a rectangle.  Draw the rectangle and diagonals. Color each of the 4 sectors formed with a different color.
  4. Input the number of sides and length of the side of a regular polygon.  Output the circumference and the area. Draw the polygon. Color the polygon.
  5. Input three vectors (length and angle  for each so six total inputs). Draw the vectors connected.  Draw the fourth vector to make an enclosed figure.
  6. Input the radii of two circles.  Draw the circles tangent to each other.  Color the circles two different colors.

Initially these look fairly simple.  But we did almost no graphical exercises in class so the students had to do a lot of Googling and trial and error.  They also have to figure out the math before they code. Sort of like how it happens in the real world. I gave the students their assignment 2 weeks before today.  I informed them that if they try to do the program only during class time or procrastinate until the final day they would not be done. I required they show me their progress at the end of each class period.  My idea of progress and their idea of progress did not match but I am a bit of a “sink or swim” teacher. So today is the last day. Small progress steps and procrastination have won the battle. They are presently in the other room trying to do six hours of work in two.  So far two of the six students have turned something that rates a decent grade. Is it too much for juniors to understand procrastination kills? I figure they have to learn some time. It is amazing how much they are getting done in panic mode. Some of their best work of the semester.

Some lessons learned on my part.  

  1. Require a more detailed progress report on the math they need to do for each assignment.  The students working on #2 and #5 did not know how to convert distance and angle to Cartesian coordinates and they did not demonstrate this inability until today.  They had the math, they just could not apply it.
  2. Build a grading rubric for each individual assignment.  I had a rubric that I gave to the students but it was general.  The assignments were different enough I needed to break it down a bit more.  My expectations were different from their understanding. Not unexpected but I can clarify this next time.
  3. The students found at least four ways to draw a line on a graphics frame.  Pick one I like and do a lecture on that method. I was very impressed how one of the students (#4) got his lines to draw the polygon.  It was the hard way but it worked.
  4. Do not do graphics and GUI stuff in Java.  These types of assignments are so much easier in other languages.  Ones that like graphic screens and GUIs. Visual Basic likes doing things like this.  
  5. Some kids can work in panic mode.  Others collapse and give up. I was amazed none collapsed and gave up.  Even my worst student came up with something worth grading.
  6. I did only two of the six assignments myself.  With the others I saw the solution so did not code them up.  I should have coded them up just so I could answer questions better for the students.  Maybe I could have eliminated the multiple paths for graphing that they came up with. Of course I now know those paths exist for Java where I did not before.
  7. I would call this final a success even with the difficulties.  The amount of digging the students did while in a full panic was amazing.
  8. Do not lose this assignment sheet.  These will work for the Python class in the Fall.  I might also try them in Visual Basic in the Python class just so they see a different IDE/language.

I just noticed I have six students registered for Python next Fall.  I can roll these over to that class. This all gives me something to work on in the summer.  Oh goodie.


OOP or is it Opps?

June 3, 2019

Last week of school.  I am happy with the way the year/semester went except for my Java course.  After hours of deliberation and self analysis I have decided I suck at object oriented programming (OOP).  I see that it is a philosophy that drives a coding schema and has some major advantages in the right situation.  I have a friend that teaches Java at the local university. He comes over and teaches a couple of my Java classes when I hit the OOP chapter.  I sit and listen to his presentation (he is an excellent teacher and does an excellent job of explaining) and the philosophy makes perfect sense and the change from procedural to OOP coding is there on the board.  An hour later I look at the OOP code and think “what a mess”. I go back to my old programming habits. I have narrowed my problem will OOP down to two problems. The first problem is I write mostly small programs where the old procedural coding method is the best.  Simple, straight forward. The second problem is my brain has started to fossilize. I can code up almost any high school level problem using my tried and true technique which has taken me years to learn while trying to teach at the same time. I can do this in several languages.  Since my coding technique is almost 100% self taught switching to a the new OOP paradigm may take a long time. I will most likely be dead by the time OOP becomes ingrained. And it still would not be the best way to code the types of coding problems I teach. Yup, fossilized. So I am going to surrender as far as Java goes.  It helps that the local university is also giving up on Java in their intro courses and going to Python. I will try OOP in Python and maybe it will break through the crust on my brain.

There is one minor problem with this surrender.  Next year I want to teach a web design course with HTML, CSS and JavaScript.  JavaScript. Nuts. Oh well, I will see how that works. I also have a couple of kids interested in an Android Studio course.  Back to JavaScript. More nuts.