Archive for November, 2018

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.