The IT job and weird magic.

July 11, 2019

Doing the IT job for the school can be interesting and challenging.  Sometimes it is just weird magic. Last week I bought some new Ubiquity wireless access points for the elementary school.  It is necessary to adopt, update and configure the APs. To do this I usually just line them up on my workbench, plug a bunch in and set them up through the interface software.  Done it before with no problem. This time I plugged two in and the school’s network went down. No internet, zip. What the heck (or words to that effect). I unplugged one and the network came back up.  I plugged the second one back in and down it went. More what the heck (or words to that effect). Bad AP? Tried another. Nope, still died. Weird switch issue? Plugged the second one in to the main school switch.  Down she went. Time to go home and have a beer and think. The next morning I try to replicate the issue. It is still wacky. It did not vanish overnight. Nuts. I replace every part involved in the AP setup. No luck.  Network still dies when I plug in two APs. I sits and thinks. I have been troubleshooting for about two hours.  I have eliminated all the hardware variables so whatever is causing the problem must be non-hardware related. The APs are 12 inches apart on my bench. Could proximity be the issue?  Never has before but what the heck, I have pretty much eliminated everything else. These are new model APs I have not setup before. I move the second AP to another room. Everything works. I plug in a third AP in a third room. Everything is good.  Proximity. What the heck (or words to that effect). For some reason the two AP signals were interfering with each other enough to kill the school network. I will have to do some research. Arthur C. Clarke’s third law states “Any sufficiently advanced technology is indistinguishable from magic”.  At the moment this issue is magic. Weird magic at the moment but I will discover the why.  Later.

Like I said this job can be interesting and challenging.  I love it.

 

Advertisements

Thunkable, here we come.

July 3, 2019

I want to teach a phone app design and programming course.  Earlier this last school year I started the research on possible programming languages/platforms and talked about it in a couple of posts.  If I was going to do it Android Studio seemed to be the way to go.  So a few weeks ago I started testing the course I wanted to build. I found a decent and recent free textbook (“Android Programming for Beginners 2nd Ed” by Horton) to start with and handed it to my summer tech aide to try out.  I have some used second generation i7 laptops with 8 gigs of RAM I had planned to hand out to those kids that did not have a better laptop of their own. (I do not have a teaching computer lab, everything is BYOD or I give them a used laptop to keep.)  I had just acquired these from the free State recycle warehouse and they were better than anything I had and seemed like they would do the trick. I gave my aide one of these to test just to be sure. He immediately hit problems. The book was just fine, the computer was not so fine.  I looked up the requirements for Android Studio. 8 gigs is a minimum and more is suggested if using the emulator. Most of the kids have iPhones therefore I need the emulator. There are only 2 ram slots in the laptops and I only have 4 gig cards to rob from the extra laptops so 8 is it. Opps. Time to punt.

I am not crazy about App Inventor so it was low on my list of options but it hits the free requirement.  I had looked briefly at Thunkable, again hits the free requirement, but took only a glance because it looked like App Inventor (and it does).  Oh well, I am punting so I pointed my aide at it. (My summer aides typically help me fix computers and rebuild the computer labs. Sometimes I am lucky and get one that actually knows computer stuff.  This summer I got really lucky. My aide knows computers AND can think for himself.) Thunkable is not App Inventor. It has a lot more depth to it. It can test on iPhone and Android. Good punt. Now I just have to build a course and test a lot of material and learn the software.  The usual teacher summer.

When I picked up those laptops I also picked up some i5 towers.  I am going to take the RAM out of three and cram it all into one and see what happens just out of curiosity.  

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) (https://www.cs.montana.edu/paxton/classes/joy-and-beauty/) 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?  (https://www.myabandonware.com/game/rockys-boots-cp/play-cp)  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.

 

And the answer is!

May 23, 2019

“We are looking at implementing a Coding curriculum – what is a great one?”  How do you answer this? This was asked on the Montana school techie network I am a member of.  The question makes me want to ask about 20 more questions.

EV3 and Python: a new IDE is available

May 13, 2019

I stumbled on to something cool the other day.  I have some Lego NXT and EV3 robots and I wanted to see if there was a way of using Python to program them.  As usual I hit Google. I found this – https://sites.google.com/site/ev3python/introduction.  Being the brilliant teacher that I am (and being buried with other tasks) I passed the link to my independent study sophomore and told him to have at it.  He did and it died. We could not get things to work. Bummer. Google again. This popped up this time. https://education.lego.com/en-us/support/mindstorms-ev3/python-for-ev3.  Interesting, it was not there last week when I did the search.  Posted April 19, 2019. It is fresh out of the box. This time we got things working.  We had to flash the card a couple of times to get it to stick but that was the only issue.

It uses Visual Studio Code and MicroPython so the programming interface is nice and it compiles pretty fast.  I cannot find an API so there is a lot of trial and error getting things to work.  Setup is easy for the EV3. Just flash a microSD card and stick into the EV3. The documentation is pretty poorly written as a language tutorial and is not kid friendly but with enough time and fiddling the robot does go.  I have my test kid working with it right now. We will see what happens. If I had more EV3s I would be very tempted to incorporate this into my Python course. The fact that everything is not laid out nice and pretty is actually a plus (if you have time).  The kids would have to figure things out using poor documentation. Isn’t that the way the world is normally?  Using Python to make something go across the floor is so much cooler that making something happen on a screen.  It is EV3 only which is a bit of an issue, I only have two.  I have 8 NXTs but I guess there are reaching the “old tech” stage.  There is a Python for the NXT but it in not VS Code based and is a bit of a hassle to set up and is a bit dated.