Android App Course: The continuing saga

December 6, 2018

I have been digging and looking at suggestions.  Thunkable was pointed out to me. I tinkered for a while then handed it off to my uber-geek sophomore for evaluation.  I liked it better than App Inventor. It does have the handicap of needing an Android phone plugged into it (the emulator works but has issues) and it does not seem to work with tablets (I only have one to test with so do not take that as gospel but Doug Bergman could not get it to work with tablets either) but it does connect every time to the phone.  My test student had the most interesting comment. He said it did not have enough programming blocks so it was limited in what it could do. It also glitched out on him a couple of times. My final and admittedly limited evaluation is that it is better than App Inventor in some aspects, but just barely.

The next thing I stumbled on (I should not be stumbling on these things, they should be known to the CS education world as common language) was Microsoft Xamarin.  I had seem the word before but it was not impressed on me that it was an app builder. (I need to pay more attention to what I read.) I am in the middle of the Microsoft “Hello, Android: Quickstart” tutorial.  I have observed/learned two things so far.  First Xamarin does not seem that much different from Android Studio from the beginners point of view and second I really hate tutorials that do not match what happens on the screen as you do the steps.  I am only a short ways into the tutorial so I am evaluating the tutorial more than the Xamarin at this point but it took me 30 minutes to figure out why my UI does not want to look like the tutorial’s UI.  The only reason I figured it out was because I had worked through an Android Studio tutorial and I guessed the drag and drop process of building a UI was the same. Little things like this can really put a crimp on a teacher wanting to use a piece of software for a class.  The Microsoft Computer Science Teachers Network on Yammer  has a Xamarin group but it seems pretty dead.  I have not been able to locate anything in the way of tutorials or texts that would be useful at the beginner or high school level.  Microsoft really needs to bring back a K-12 software support and development team.

After looking at both Android Studio and Xamarin I think with work and careful writing they are usable at the high school level.  It would definitely not be an intro to programming course like App Inventor is intended for as in the APCSP curriculum but for a select course they are a possibility.  The problem is the “work and careful writing” would be a lot of work and a lot of writing and testing. Not something most teachers have time for. One of the respondents to my initial Android App Course post, Brian Meerman, is using it at the high school level with success.  It sound like the students are well prepared before taking the course.  Xamarin requires more digging.

I will continue to look for the perfect middle ground for app writing. I am still looking at Corona SDK as the best in-between programming environment but the fact it is primarily for games sticks a pretty big limitation on it if trying to build a project based course.


Android App Course with thoughts on Project Based learning and ramblings

November 28, 2018

Three days of internet digging and reading and I have some discoveries, but no surprises.

  1. Android Studio is a beast.  It took me maybe four hours to just get it installed and all the install issues fixed.  I am now working through this tutorial.  Not a bad tutorial but a lot of magic is happening.  The usual “do this” with no “why do this”. The needed knowledge to use this IDE is definitely at the professional level.  You would have to work in this every day to be able to do simple tasks. It is also Java and HTML sort of rolled together. What fun.  I would want some training in this software, not just tutorials, before I would attempt to teach normal students a comprehensive course with it. I have one student, a sophomore with an IQ in the 160s at least, working through the tutorial as a test subject.  He is doing OK but he is a major computer geek and is on the extreme end of self motivated. Not a good sample of the typical programming student but he was all I had handy.
  2. I am still not impressed with App Inventor.  It is fun and can do some great things but I would not consider it a route for a student looking to continuing in CS/programming.  That is me, I imagine there are teachers that have had success using it as a starter environment. I also have too many technical issues with it.  Firewall issues, phones not connecting to it and so on. In a perfect network with the goal of just building an app without the goal of using a real world programming tool I think it would be a success.  I have attended a summer PD on APCS Principles using App Inventor. The APCSP curriculum does get a job done but it is a bit cookbook for me and when the kids are done they are just sort of hanging there as far as understanding how to code.
  3. Corona SDK is sort of in between Android Studio and App Inventor as an app builder.  Designed to build 2D games it is much easier than Android Studio. It uses Lua, a fairly straight forward scripting language that fits with what us old school line code teachers are comfortable with.  Because it is a game builder there are some limitations as to the types of apps that can be built. That is the big difference between Android Studio and Corona, AS will build anything you can think of in the way of a GUI, Corona has limitations.
  4. Unity will build Android apps.  Again it is a game maker, not a real app builder.  For VR it is the way to go. For an app that locates the best Chinese restaurants in town, not so much.
  5. I was very surprised to find out Android apps can be built with Python.  Not easily and it requires a lot of setup using all sort of extra software but it can be done.  I do not plan on going that way.
  6. There are some other app builders out there that require a working knowledge of HTML5, CSS and Javascript.  If I ever get a working knowledge of those I may look at them. Of course if I get a working knowledge of them I may just start moonlighting as a website designer/builder.

So here are my conclusions.  If the app development process and project based learning is the goal and not coding, App Inventor is the way to go.  A beginning teacher has a nice cookbook to follow. Of course overcoming the network/phone issue needs to be addressed before diving into it.  Test everything, a lot.

If you want to make real apps Android Studio is the only real option.  A year long course with a real steep learning curve; IDE, Java, HTML. And probably a lot of prep time.  Maybe the only option for a true project based course. I plan to put some more time into looking at AS. Maybe it can be dumbed down for a high school class.  I am not hopeful.

Corona seems the easiest way to get into app building but you have to accept the gaming limitation.  Not a great route for writing an app that finds Chinese restaurants in a five mile radius. It is fairly traditional as far as a coding language which appeals to me as an old coder.

Corona is easier than Unity but Unity is much higher quality games.  VR games are not difficult in Unity and that can be a big draw to get students in seats.  App building with Unity would require a Unity course prequel or a lot of time teaching Unity before building the app.

Getting an app writing course up and running is not as simple as say getting a Python course going.  Writing code is only a part of the course objective and coding could possibly be the minor part of the course.  With AS just learning the IDE would be a major accomplishment. With a project based course there is also the issue of matching the project to the best environment to build it in.  A project that is an educational game might be best in Corona or Unity, an app with something like Google Maps might require AS or a fall back to App Inventor.

Doing a project based app course would take some good project review that may force the project to fit the programming environment the teacher is comfortable with.  A student may come in with an incredible idea that will not fit with what the teacher is familiar with. Decision time on the teacher’s part, point the student in the correct direction and hope they can go it on their own, or make modifications on the idea so it will fit what the teacher knows.  Both tracks have pluses and minuses.

Lots of head scratching involved in this whole app building project based course theme.

Android App Course thoughts

November 26, 2018

I want to develop an Android app writing course for the kids.  Something project based. It would be Android because we are a PC school and Android apps can be loaded directly from the computer to a phone which makes testing a breeze.  I have to decide on an IDE or language or something. I have used App Inventor and am less than impressed. Lots of connection issues and the language itself is pretty limited.  It is not something to write a professional app on. I have look at Android Studio and the learning curve looked a bit steep for high school. One of my daughter’s ex-boyfriends is working on his CS degree and is a programming geek.  He was going to write an app with Android Studio but backed out after working with the IDE. That makes me even less inclined to go that way. Another option, which I am starting to lean toward, is Javascript. I have done a tiny bit of research looking at Javascript but it seems to be a possibility.  Apparently Android apps can be written with Python. Since I am familiar with Python and already offer a Python course this is a strong possibility. Another direction to research.

The biggest issue I am having is the number of directions I can go.  There is simply so much available that I just do not know which way to go.  I have some sharp kids interested in doing this next semester. I can always make the course less writing apps and more looking at software to write apps and then build the app writing course for next Fall.  I think I am going to have to put some serious time into just figuring out the best option. I do not want to select a direction then find out we are in over our head.

I hate the Good Idea Fairy.

Indian Education for All (IEA) and math

November 20, 2018

I received an interesting email from my principal today.  She wanted the math teachers to send her the IEA lessons, topics or components from our math classes.  Gurk. I have no IEA lessons, topics or components in my math classes (or my CS classes for that matter).  So being a good little teacher I wandered up to one of the other math teachers and asked her what IEA she did.  Her list matched mine. But being smarter than me she had gone to the Office of Public Instruction website to see what they had.  OMG. Figuring the surface area of a tipi is not Indian Education. Switching the names of cities for a Traveling Salesman Problem to the names of reservation pow wows is not Indian Education.  Learning of seven stars in Crow astronomy and then computing their brightness is not Indian Education. Learning about tipis, reservation and pow wows and Crow astronomy is Indian Education, but each of these lessons were obviously designed to use something Indian in them just to check the IEA box.  The amount of math that can be done with just the tipi as the primary focus is quite a bit; weight estimations, number of hides needed for that surface area, length of poles for a tipi of given size (height and radius involved), nature of the cone shape when heating a volume of air (the things stay warm with a very small fire even in the winter) but all of this would have to revolve around the legacy of the tipi and the indians that used them.  Writing a math problem involving cones and then switching “cone” for “tipi” does not do the trick for me. IEA is not switching the words but teaching the history behind the words. Now we are in a History/Social Studies/Native American Studies course with a lot of math. Not a bad idea but not what most math teachers are ready for.

There are also some cultural issues involved with IEA.  Most whites put all Indians in one pot. Indians are as different as Europeans.  Different histories, different cultures, different languages, and just plain different.  That Crow astronomy problem would not be popular in a Blackfeet school. Most of the tribes get along now (sort of) but they have been forced into it by their common foe, whites and the US Government.  IEA is not as easy at it would seem.

Now that I am thinking about IEA I think I can come up with something relevant especially with the tipi idea.  Something better than switching “cone” for “tipi”. I am not going to touch the Crow astronomy (I am Blackfeet and could care less about Crow astronomy) but I could definitely see it of being of interest in a Crow classroom if it were expanded.  The TSP and pow wows is just plain stupid.

CS quotes to live by

November 13, 2018
  1. “Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to build bigger and better idiots. So far, the universe is winning.” – Rick Cook
  1. “Lisp isn’t a language, it’s a building material.” – Alan Kay.
  1. “Walking on water and developing software from a specification are easy if both are frozen.” – Edward V Berard
  1. “They don’t make bugs like Bunny anymore.” – Olav Mjelde.
  1. “A programming language is low level when its programs require attention to the irrelevant.” – Alan J. Perlis.
  1. “A C program is like a fast dance on a newly waxed dance floor by people carrying razors.” – Waldi Ravens.
  1. “I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone.” – Bjarne Stroustrup
  1. “Computer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter.” – Eric S. Raymond
  1. “Don’t worry if it doesn’t work right. If everything did, you’d be out of a job.” – Mosher’s Law of Software Engineering
  1. “I think Microsoft named .Net so it wouldn’t show up in a Unix directory listing.” – Oktal
  1. “Fine, Java MIGHT be a good example of what a programming language should be like. But Java applications are good examples of what applications SHOULDN’T be like.” – pixadel
  1. “Considering the current sad state of our computer programs, software development is clearly still a black art, and cannot yet be called an engineering discipline.” – Bill Clinton
  1. “The use of COBOL cripples the mind; its teaching should therefore be regarded as a criminal offense.” – E.W. Dijkstra
  1. “In the one and only true way. The object-oriented version of ‘Spaghetti code’ is, of course, ‘Lasagna code’. (Too many layers).” – Roberto Waltman.
  1. “FORTRAN is not a flower but a weed — it is hardy, occasionally blooms, and grows in every computer.” – Alan J. Perlis.
  1. “For a long time it puzzled me how something so expensive, so leading edge, could be so useless. And then it occurred to me that a computer is a stupid machine with the ability to do incredibly smart things, while computer programmers are smart people with the ability to do incredibly stupid things. They are, in short, a perfect match.” – Bill Bryson

34.  “In My Egotistical Opinion, most people’s C programs should be indented six feet downward and covered with  dirt.” – Blair P. Houghton.

  1. “When someone says: ‘I want a programming language in which I need only say what I wish done’, give him a lollipop.” – Alan J. Perlis
  1. “The evolution of languages: FORTRAN is a non-typed language. C is a weakly typed language. Ada is a strongly typed language. C++ is a strongly hyped language.” – Ron Sercely
  1. “Good design adds value faster than it adds cost.” – Thomas C. Gale
  1. “Python’s a drop-in replacement for BASIC in the sense that Optimus Prime is a drop-in replacement for a truck.” – Cory Dodt
  1. “Talk is cheap. Show me the code.” – Linus Torvalds
  1. “Perfection [in design] is achieved, not when there is nothing more to add, but when there is nothing left to take away.” – Antoine de Saint-Exupéry
  1. “C is quirky, flawed, and an enormous success.” – Dennis M. Ritchie.
  1. “In theory, theory and practice are the same. In practice, they’re not.” – Yoggi Berra
  1. “You can’t have great software without a great team, and most software teams behave like dysfunctional families.” – Jim McCarthy
  1. “PHP is a minor evil perpetrated and created by incompetent amateurs, whereas Perl is a great and insidious evil, perpetrated by skilled but perverted professionals.” – Jon Ribbens
  1. “Programming is like kicking yourself in the face, sooner or later your nose will bleed.” – Kyle Woodbury
  1. “Perl – The only language that looks the same before and after RSA encryption.” – Keith Bostic
  1. “It is easier to port a shell than a shell script.” – Larry Wall
  1. “I invented the term ‘Object-Oriented’, and I can tell you I did not have C++ in mind.” – Alan Kay
  1. “Learning to program has no more to do with designing interactive software than learning to touch type has to do with writing poetry” – Ted Nelson
  1. “The best programmers are not marginally better than merely good ones. They are an order-of-magnitude better, measured by whatever standard: conceptual creativity, speed, ingenuity of design, or problem-solving ability.” – Randall E. Stross
  1. “If McDonalds were run like a software company, one out of every hundred Big Macs would give you food poisoning, and the response would be, ‘We’re sorry, here’s a coupon for two more.’ “ – Mark Minasi
  1. “Beware of bugs in the above code; I have only proved it correct, not tried it.” – Donald E. Knuth.
  1. “Computer system analysis is like child-rearing; you can do grievous damage, but you cannot ensure success.” – Tom DeMarco
  1. “I don’t care if it works on your machine! We are not shipping your machine!” – Vidiu Platon.
  1. “Sometimes it pays to stay in bed on Monday, rather than spending the rest of the week debugging Monday’s code.” – Christopher Thompson
  1. “Measuring programming progress by lines of code is like measuring aircraft building progress by weight.” – Bill Gates
  1. “Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” – Brian W. Kernighan.
  1. “People think that computer science is the art of geniuses but the actual reality is the opposite, just many people doing things that build on each other, like a wall of mini stones.” – Donald Knuth
  1. “First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack.” – George Carrette
  1. “Most of you are familiar with the virtues of a programmer. There are three, of course: laziness, impatience, and hubris.” – Larry Wall
  1. “Most software today is very much like an Egyptian pyramid with millions of bricks piled on top of each other, with no structural integrity, but just done by brute force and thousands of slaves.” – Alan Kay
  1. “The trouble with programmers is that you can never tell what a programmer is doing until it’s too late.” – Seymour Cray
  1. “To iterate is human, to recurse divine.” – L. Peter Deutsch
  1. “On two occasions I have been asked [by members of Parliament]: ‘Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out?’ I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question.” – Charles Babbage
  1. “Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program.” – Linus Torvalds
  1. “Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.” – Martin Golding
  1. “There are two ways of constructing a software design. One way is to make it so simple that there are obviously no deficiencies. And the other way is to make it so complicated that there are no obvious deficiencies.” – C.A.R. Hoare

No CS in this post

November 12, 2018

Winter in Montana.  A 2.2 mile walk in a foot of fresh snow and this at the end.  No people for 4 hours except the friend that hiked with me.  Life is good.

Confusion reigns

October 31, 2018

Sometimes you just have one of those days.  I had my Python class compute some Taylor Series where the input was number of iterations and the x value.  One of the students was working on sin x and was getting really weird results.  We sat there together trying to figure out what was wrong with her algorithm.  We tore it apart and put it back together half a dozen times.  No luck.  Everything was correct except the solution.  The partial sums were not even close.  It was driving me batty.  It was not that hard an algorithm.  OK, maybe Python was computing powers weird so I switched from (-1)^n to pow(-1,n).  It worked.  Thirty seconds later I figured out the carrot (^) does not work in Python.  I knew that.  Yes I did.  But it is correct for the TI-84 calculator.  Too many platforms and I am getting them all mixed up.  I put something on the board the other day, stepped back and thought, “No, wait.  That is Small Basic”.  I am getting my colon and semi-colons mixed up.  Python is colons, C# (Unity) is semi-colons.  Small Basic does not use “Print” to print, “print” is lowercase in Python.  I have three different “For” syntaxs to remember.  I am so glad I am not teaching a Java class.  Must be the early onset of Alzheimer’s.  Well, maybe not so early.

Game Making 101: Keeping it simple

October 23, 2018

I am teaching a game making class this fall.  Nothing fancy, just letting the kids explore Unity and Blender.  Since I have never worked for a game making outfit I cannot really dive into the actual non-coding process that game making entails.  So we have some fun making some simple games following YouTube and printed resources I have. The course really is not about making a game, it is more on how to learn to use a game engine.  In that idea I usually have the kids look at GameMaker to see a different approach to making games. Being less than impressed with GameMaker I am always looking for a better second game engine to include in the course.  I have looked at Unreal Engine (a bit more than I want to bite off right now), Amazon Lumberyard (short on support material and poor ratings) and Cryengine (mediocre ratings). Yesterday I was just looking to see if there was anything else out there of interest when I found Godot Engine.  Good support material on the website, some good YouTube tutorials (this is critical), easy to install, good ratings as a beginner engine and similar enough interface to Unity that some of that knowledge with transfer over. It apparently will publish directly to an Android device which makes it more fun for the kids.  They get to play their game. I am going to give it a try.

This game making class is one of my hardest to grade.  I have students who really enjoy it and spend hours at home getting things to work and I have students that only work in class and even then they tend to wander.  The kids that are really into it obviously produce a better product but the kids that are just surviving do produce. I do not feel right giving the overachievers a better grade, after all, this is their hobby.  So I have to grade on effort which can be a bit tricky. How hard a kid is “trying” is really hard to measure. Part of that “trying” involves how long they can sit in front of a monitor without going buggy. I am good for about 15 minutes (unless I am really getting into it) before before I have to go wander around.  I have a couple of students that can sit there for an hour and a half and be happy as a clam. I have some that are only good for ten minutes before they have to wander mentally and physically. I simply cannot bring myself to grade a kid on how long they can listen to a YouTube tutorial or my lecture before they need to do something to clear their head.  Right now my grading is based on one of my favorite criteria, that ever useful, but a bit undefined, “warm and fuzzy”. Try and you get a decent grade. Do not try and the grade is not so hot. If there is a deadline then how close did you come and how hard did you try to make it? Luckily I have very small classes. I do not think this would work with more than ten students.  Right now my class sizes are five, eight, one and one. Warm and fuzzy works.

State Digital Guideline: Are they worth the electrons they are stored on?

October 17, 2018

This is one of those deals where reading a blog led to reading a document on CS adoption in the US which lead to another document on the Nine Policies and from there reading another document, the “Montana K-12 Digital Literacy and Computer Science Guidelines”.  It was a journey. One of the maps in the CS adoption article had Montana in the 2-3 policies adopted range.  Looking at the nine policies from I knew Montana had a state plan, although the last time I looked it was an antique.  What else we had is a mystery to me. I looked at our state plan and to my surprise it was dated 2018! Wow! Who knew? No CS teachers I know knew.  So how useful is a state plan that nobody that would use it knows about? Well, OK, maybe the few I talked to were just out of the loop. Possible but considering how few CS teachers there are in Montana you would think the Office of Public Instruction would get the word out.  Whatever. So I look at the advisory committee. Twenty-one people on the list. I know several people on the committee but they are not people I would expect to be on a K-12 guideline. They are university CS people, not high school CS people, not even CS Ed people. There is one high school CS teacher on the list and she is from one of the largest schools in the state.   Not really representative of CS in Montana but still a high school person.

Ok, maybe I am getting a bit nit-picky here.  I start looking through the document. It is the usual “Grades 6-8 should know” type thing.  I look through the Grades 9-12. You have got to be kidding me. I do not know half the stuff all high school students should know by graduation.  I would not even have a lot of this stuff on a “perfect world” list.

So how useful is this “Montana K-12 Digital Literacy and Computer Science Guidelines”?  If a school has a dedicated CS teacher with an extensive background in teaching CS and an excellent CS education themselves, if the school offers a multi-year program, if the school invests a lot of time and resources to aligning the curriculum to fit the guidelines then this document is pretty slick.  The trouble is none of those “ifs” fit more than a couple of schools in Montana.

I can imagine this document cost the state a pretty penny.  It checks a box; the state does have a plan. The fact no one that the plan affects really cares about it, that the plan is idealistic and undoable for almost all schools in the state and the people that wrote the plan may be experts in their field but their field is not K-12 CS ed kind of puts a kink in things.  So is “Montana K-12 Digital Literacy and Computer Science Guidelines”, as it is presently written, worth the electrons it is stored on?

Too bad they did not write something a school could actually use as a guide to design a realistic affordable curriculum.  Montana has a lot of schools that are just starting to introduce CS into their curriculum. There are just so many ways a plan like this could be written to make it a useful tool for schools.  Assets needed, professional development requirements, practical ideas or examples for each topic, things a beginning school or teacher can actually look at and go “Ah ha!”. As it is it is space junk.

Lions and tigers and bears, oh my. OK, just bears.

October 8, 2018

A friend and I went hiking Sunday.  I usually do a good sized hike on the weekend.  This was a 10 mike out and back to Illinois Peak in the northern Bitterroots.  We were in maybe two inches of snow near the top.  Weather was great, mid 30’s, maybe low 40’s, not too hot. not too cold.  Did not see any wildlife but lots of tracks.  The usual; grouse, mice, deer, coyote and this.  Probably a really big black bear.  Now I have seen a lot of bear prints where I hike and have had several face-to-face encounters with black bears and one with a grizzly.  No big deal, everybody just goes on their peaceful way.  This one kind of freaked me out.  When we came on the tracks they were fresh, like maybe minutes fresh, snow was still falling into the print fresh.  But no bear.  Ever get that feeling you are being watched?  It added a whole new dimension to that stretch of the trail.  My friend had bear spray, I did not.  I will ensure that does not happen again.